authorgravatar for lgustaf1@binghamton.eduLayne Gustafson <lgustaf1@binghamton.edu> 2020-01-08 20:27:05-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-19 20:53:19-05:00
log79a2747de490ca2bb1603fd1ce55637fb5278671
treed8b642345aeebec49fd08ceee5ada1bb1730e477
parente4ecdefa9a668d34c830816eea242b110c30c475
signature Commit is signed but in an unrecognized format.

Add llvm_name to feature defs


15 files changed, 3139 insertions(+), 2467 deletions(-)

lib/std/target/aarch64.zig+330-207
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_aes = Feature{
55 .name = "aes",
6 .llvm_name = "aes",
67 .description = "Enable AES support",
78 .dependencies = &[_]*const Feature {
89 &feature_fpArmv8,
......@@ -11,6 +12,7 @@ pub const feature_aes = Feature{
1112
1213pub const feature_am = Feature{
1314 .name = "am",
15 .llvm_name = "am",
1416 .description = "Enable v8.4-A Activity Monitors extension",
1517 .dependencies = &[_]*const Feature {
1618 },
......@@ -18,6 +20,7 @@ pub const feature_am = Feature{
1820
1921pub const feature_aggressiveFma = Feature{
2022 .name = "aggressive-fma",
23 .llvm_name = "aggressive-fma",
2124 .description = "Enable Aggressive FMA for floating-point.",
2225 .dependencies = &[_]*const Feature {
2326 },
......@@ -25,6 +28,7 @@ pub const feature_aggressiveFma = Feature{
2528
2629pub const feature_altnzcv = Feature{
2730 .name = "altnzcv",
31 .llvm_name = "altnzcv",
2832 .description = "Enable alternative NZCV format for floating point comparisons",
2933 .dependencies = &[_]*const Feature {
3034 },
......@@ -32,6 +36,7 @@ pub const feature_altnzcv = Feature{
3236
3337pub const feature_alternateSextloadCvtF32Pattern = Feature{
3438 .name = "alternate-sextload-cvt-f32-pattern",
39 .llvm_name = "alternate-sextload-cvt-f32-pattern",
3540 .description = "Use alternative pattern for sextload convert to f32",
3641 .dependencies = &[_]*const Feature {
3742 },
......@@ -39,6 +44,7 @@ pub const feature_alternateSextloadCvtF32Pattern = Feature{
3944
4045pub const feature_arithBccFusion = Feature{
4146 .name = "arith-bcc-fusion",
47 .llvm_name = "arith-bcc-fusion",
4248 .description = "CPU fuses arithmetic+bcc operations",
4349 .dependencies = &[_]*const Feature {
4450 },
......@@ -46,6 +52,7 @@ pub const feature_arithBccFusion = Feature{
4652
4753pub const feature_arithCbzFusion = Feature{
4854 .name = "arith-cbz-fusion",
55 .llvm_name = "arith-cbz-fusion",
4956 .description = "CPU fuses arithmetic + cbz/cbnz operations",
5057 .dependencies = &[_]*const Feature {
5158 },
......@@ -53,6 +60,7 @@ pub const feature_arithCbzFusion = Feature{
5360
5461pub const feature_balanceFpOps = Feature{
5562 .name = "balance-fp-ops",
63 .llvm_name = "balance-fp-ops",
5664 .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",
5765 .dependencies = &[_]*const Feature {
5866 },
......@@ -60,6 +68,7 @@ pub const feature_balanceFpOps = Feature{
6068
6169pub const feature_bti = Feature{
6270 .name = "bti",
71 .llvm_name = "bti",
6372 .description = "Enable Branch Target Identification",
6473 .dependencies = &[_]*const Feature {
6574 },
......@@ -67,6 +76,7 @@ pub const feature_bti = Feature{
6776
6877pub const feature_ccidx = Feature{
6978 .name = "ccidx",
79 .llvm_name = "ccidx",
7080 .description = "Enable v8.3-A Extend of the CCSIDR number of sets",
7181 .dependencies = &[_]*const Feature {
7282 },
......@@ -74,6 +84,7 @@ pub const feature_ccidx = Feature{
7484
7585pub const feature_ccpp = Feature{
7686 .name = "ccpp",
87 .llvm_name = "ccpp",
7788 .description = "Enable v8.2 data Cache Clean to Point of Persistence",
7889 .dependencies = &[_]*const Feature {
7990 },
......@@ -81,6 +92,7 @@ pub const feature_ccpp = Feature{
8192
8293pub const feature_crc = Feature{
8394 .name = "crc",
95 .llvm_name = "crc",
8496 .description = "Enable ARMv8 CRC-32 checksum instructions",
8597 .dependencies = &[_]*const Feature {
8698 },
......@@ -88,6 +100,7 @@ pub const feature_crc = Feature{
88100
89101pub const feature_ccdp = Feature{
90102 .name = "ccdp",
103 .llvm_name = "ccdp",
91104 .description = "Enable v8.5 Cache Clean to Point of Deep Persistence",
92105 .dependencies = &[_]*const Feature {
93106 },
......@@ -95,6 +108,7 @@ pub const feature_ccdp = Feature{
95108
96109pub const feature_callSavedX8 = Feature{
97110 .name = "call-saved-x8",
111 .llvm_name = "call-saved-x8",
98112 .description = "Make X8 callee saved.",
99113 .dependencies = &[_]*const Feature {
100114 },
......@@ -102,6 +116,7 @@ pub const feature_callSavedX8 = Feature{
102116
103117pub const feature_callSavedX9 = Feature{
104118 .name = "call-saved-x9",
119 .llvm_name = "call-saved-x9",
105120 .description = "Make X9 callee saved.",
106121 .dependencies = &[_]*const Feature {
107122 },
......@@ -109,6 +124,7 @@ pub const feature_callSavedX9 = Feature{
109124
110125pub const feature_callSavedX10 = Feature{
111126 .name = "call-saved-x10",
127 .llvm_name = "call-saved-x10",
112128 .description = "Make X10 callee saved.",
113129 .dependencies = &[_]*const Feature {
114130 },
......@@ -116,6 +132,7 @@ pub const feature_callSavedX10 = Feature{
116132
117133pub const feature_callSavedX11 = Feature{
118134 .name = "call-saved-x11",
135 .llvm_name = "call-saved-x11",
119136 .description = "Make X11 callee saved.",
120137 .dependencies = &[_]*const Feature {
121138 },
......@@ -123,6 +140,7 @@ pub const feature_callSavedX11 = Feature{
123140
124141pub const feature_callSavedX12 = Feature{
125142 .name = "call-saved-x12",
143 .llvm_name = "call-saved-x12",
126144 .description = "Make X12 callee saved.",
127145 .dependencies = &[_]*const Feature {
128146 },
......@@ -130,6 +148,7 @@ pub const feature_callSavedX12 = Feature{
130148
131149pub const feature_callSavedX13 = Feature{
132150 .name = "call-saved-x13",
151 .llvm_name = "call-saved-x13",
133152 .description = "Make X13 callee saved.",
134153 .dependencies = &[_]*const Feature {
135154 },
......@@ -137,6 +156,7 @@ pub const feature_callSavedX13 = Feature{
137156
138157pub const feature_callSavedX14 = Feature{
139158 .name = "call-saved-x14",
159 .llvm_name = "call-saved-x14",
140160 .description = "Make X14 callee saved.",
141161 .dependencies = &[_]*const Feature {
142162 },
......@@ -144,6 +164,7 @@ pub const feature_callSavedX14 = Feature{
144164
145165pub const feature_callSavedX15 = Feature{
146166 .name = "call-saved-x15",
167 .llvm_name = "call-saved-x15",
147168 .description = "Make X15 callee saved.",
148169 .dependencies = &[_]*const Feature {
149170 },
......@@ -151,6 +172,7 @@ pub const feature_callSavedX15 = Feature{
151172
152173pub const feature_callSavedX18 = Feature{
153174 .name = "call-saved-x18",
175 .llvm_name = "call-saved-x18",
154176 .description = "Make X18 callee saved.",
155177 .dependencies = &[_]*const Feature {
156178 },
......@@ -158,6 +180,7 @@ pub const feature_callSavedX18 = Feature{
158180
159181pub const feature_complxnum = Feature{
160182 .name = "complxnum",
183 .llvm_name = "complxnum",
161184 .description = "Enable v8.3-A Floating-point complex number support",
162185 .dependencies = &[_]*const Feature {
163186 &feature_fpArmv8,
......@@ -166,6 +189,7 @@ pub const feature_complxnum = Feature{
166189
167190pub const feature_crypto = Feature{
168191 .name = "crypto",
192 .llvm_name = "crypto",
169193 .description = "Enable cryptographic instructions",
170194 .dependencies = &[_]*const Feature {
171195 &feature_fpArmv8,
......@@ -174,6 +198,7 @@ pub const feature_crypto = Feature{
174198
175199pub const feature_customCheapAsMove = Feature{
176200 .name = "custom-cheap-as-move",
201 .llvm_name = "custom-cheap-as-move",
177202 .description = "Use custom handling of cheap instructions",
178203 .dependencies = &[_]*const Feature {
179204 },
......@@ -181,6 +206,7 @@ pub const feature_customCheapAsMove = Feature{
181206
182207pub const feature_dit = Feature{
183208 .name = "dit",
209 .llvm_name = "dit",
184210 .description = "Enable v8.4-A Data Independent Timing instructions",
185211 .dependencies = &[_]*const Feature {
186212 },
......@@ -188,6 +214,7 @@ pub const feature_dit = Feature{
188214
189215pub const feature_disableLatencySchedHeuristic = Feature{
190216 .name = "disable-latency-sched-heuristic",
217 .llvm_name = "disable-latency-sched-heuristic",
191218 .description = "Disable latency scheduling heuristic",
192219 .dependencies = &[_]*const Feature {
193220 },
......@@ -195,6 +222,7 @@ pub const feature_disableLatencySchedHeuristic = Feature{
195222
196223pub const feature_dotprod = Feature{
197224 .name = "dotprod",
225 .llvm_name = "dotprod",
198226 .description = "Enable dot product support",
199227 .dependencies = &[_]*const Feature {
200228 },
......@@ -202,6 +230,7 @@ pub const feature_dotprod = Feature{
202230
203231pub const feature_ete = Feature{
204232 .name = "ete",
233 .llvm_name = "ete",
205234 .description = "Enable Embedded Trace Extension",
206235 .dependencies = &[_]*const Feature {
207236 &feature_trbe,
......@@ -210,6 +239,7 @@ pub const feature_ete = Feature{
210239
211240pub const feature_exynosCheapAsMove = Feature{
212241 .name = "exynos-cheap-as-move",
242 .llvm_name = "exynos-cheap-as-move",
213243 .description = "Use Exynos specific handling of cheap instructions",
214244 .dependencies = &[_]*const Feature {
215245 &feature_customCheapAsMove,
......@@ -218,6 +248,7 @@ pub const feature_exynosCheapAsMove = Feature{
218248
219249pub const feature_fmi = Feature{
220250 .name = "fmi",
251 .llvm_name = "fmi",
221252 .description = "Enable v8.4-A Flag Manipulation Instructions",
222253 .dependencies = &[_]*const Feature {
223254 },
......@@ -225,6 +256,7 @@ pub const feature_fmi = Feature{
225256
226257pub const feature_fp16fml = Feature{
227258 .name = "fp16fml",
259 .llvm_name = "fp16fml",
228260 .description = "Enable FP16 FML instructions",
229261 .dependencies = &[_]*const Feature {
230262 &feature_fpArmv8,
......@@ -233,6 +265,7 @@ pub const feature_fp16fml = Feature{
233265
234266pub const feature_fpArmv8 = Feature{
235267 .name = "fp-armv8",
268 .llvm_name = "fp-armv8",
236269 .description = "Enable ARMv8 FP",
237270 .dependencies = &[_]*const Feature {
238271 },
......@@ -240,6 +273,7 @@ pub const feature_fpArmv8 = Feature{
240273
241274pub const feature_fptoint = Feature{
242275 .name = "fptoint",
276 .llvm_name = "fptoint",
243277 .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",
244278 .dependencies = &[_]*const Feature {
245279 },
......@@ -247,6 +281,7 @@ pub const feature_fptoint = Feature{
247281
248282pub const feature_force32bitJumpTables = Feature{
249283 .name = "force-32bit-jump-tables",
284 .llvm_name = "force-32bit-jump-tables",
250285 .description = "Force jump table entries to be 32-bits wide except at MinSize",
251286 .dependencies = &[_]*const Feature {
252287 },
......@@ -254,6 +289,7 @@ pub const feature_force32bitJumpTables = Feature{
254289
255290pub const feature_fullfp16 = Feature{
256291 .name = "fullfp16",
292 .llvm_name = "fullfp16",
257293 .description = "Full FP16",
258294 .dependencies = &[_]*const Feature {
259295 &feature_fpArmv8,
......@@ -262,6 +298,7 @@ pub const feature_fullfp16 = Feature{
262298
263299pub const feature_fuseAes = Feature{
264300 .name = "fuse-aes",
301 .llvm_name = "fuse-aes",
265302 .description = "CPU fuses AES crypto operations",
266303 .dependencies = &[_]*const Feature {
267304 },
......@@ -269,6 +306,7 @@ pub const feature_fuseAes = Feature{
269306
270307pub const feature_fuseAddress = Feature{
271308 .name = "fuse-address",
309 .llvm_name = "fuse-address",
272310 .description = "CPU fuses address generation and memory operations",
273311 .dependencies = &[_]*const Feature {
274312 },
......@@ -276,6 +314,7 @@ pub const feature_fuseAddress = Feature{
276314
277315pub const feature_fuseArithLogic = Feature{
278316 .name = "fuse-arith-logic",
317 .llvm_name = "fuse-arith-logic",
279318 .description = "CPU fuses arithmetic and logic operations",
280319 .dependencies = &[_]*const Feature {
281320 },
......@@ -283,6 +322,7 @@ pub const feature_fuseArithLogic = Feature{
283322
284323pub const feature_fuseCsel = Feature{
285324 .name = "fuse-csel",
325 .llvm_name = "fuse-csel",
286326 .description = "CPU fuses conditional select operations",
287327 .dependencies = &[_]*const Feature {
288328 },
......@@ -290,6 +330,7 @@ pub const feature_fuseCsel = Feature{
290330
291331pub const feature_fuseCryptoEor = Feature{
292332 .name = "fuse-crypto-eor",
333 .llvm_name = "fuse-crypto-eor",
293334 .description = "CPU fuses AES/PMULL and EOR operations",
294335 .dependencies = &[_]*const Feature {
295336 },
......@@ -297,6 +338,7 @@ pub const feature_fuseCryptoEor = Feature{
297338
298339pub const feature_fuseLiterals = Feature{
299340 .name = "fuse-literals",
341 .llvm_name = "fuse-literals",
300342 .description = "CPU fuses literal generation operations",
301343 .dependencies = &[_]*const Feature {
302344 },
......@@ -304,6 +346,7 @@ pub const feature_fuseLiterals = Feature{
304346
305347pub const feature_jsconv = Feature{
306348 .name = "jsconv",
349 .llvm_name = "jsconv",
307350 .description = "Enable v8.3-A JavaScript FP conversion enchancement",
308351 .dependencies = &[_]*const Feature {
309352 &feature_fpArmv8,
......@@ -312,6 +355,7 @@ pub const feature_jsconv = Feature{
312355
313356pub const feature_lor = Feature{
314357 .name = "lor",
358 .llvm_name = "lor",
315359 .description = "Enables ARM v8.1 Limited Ordering Regions extension",
316360 .dependencies = &[_]*const Feature {
317361 },
......@@ -319,6 +363,7 @@ pub const feature_lor = Feature{
319363
320364pub const feature_lse = Feature{
321365 .name = "lse",
366 .llvm_name = "lse",
322367 .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions",
323368 .dependencies = &[_]*const Feature {
324369 },
......@@ -326,6 +371,7 @@ pub const feature_lse = Feature{
326371
327372pub const feature_lslFast = Feature{
328373 .name = "lsl-fast",
374 .llvm_name = "lsl-fast",
329375 .description = "CPU has a fastpath logical shift of up to 3 places",
330376 .dependencies = &[_]*const Feature {
331377 },
......@@ -333,6 +379,7 @@ pub const feature_lslFast = Feature{
333379
334380pub const feature_mpam = Feature{
335381 .name = "mpam",
382 .llvm_name = "mpam",
336383 .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension",
337384 .dependencies = &[_]*const Feature {
338385 },
......@@ -340,6 +387,7 @@ pub const feature_mpam = Feature{
340387
341388pub const feature_mte = Feature{
342389 .name = "mte",
390 .llvm_name = "mte",
343391 .description = "Enable Memory Tagging Extension",
344392 .dependencies = &[_]*const Feature {
345393 },
......@@ -347,6 +395,7 @@ pub const feature_mte = Feature{
347395
348396pub const feature_neon = Feature{
349397 .name = "neon",
398 .llvm_name = "neon",
350399 .description = "Enable Advanced SIMD instructions",
351400 .dependencies = &[_]*const Feature {
352401 &feature_fpArmv8,
......@@ -355,6 +404,7 @@ pub const feature_neon = Feature{
355404
356405pub const feature_nv = Feature{
357406 .name = "nv",
407 .llvm_name = "nv",
358408 .description = "Enable v8.4-A Nested Virtualization Enchancement",
359409 .dependencies = &[_]*const Feature {
360410 },
......@@ -362,6 +412,7 @@ pub const feature_nv = Feature{
362412
363413pub const feature_noNegImmediates = Feature{
364414 .name = "no-neg-immediates",
415 .llvm_name = "no-neg-immediates",
365416 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
366417 .dependencies = &[_]*const Feature {
367418 },
......@@ -369,6 +420,7 @@ pub const feature_noNegImmediates = Feature{
369420
370421pub const feature_pa = Feature{
371422 .name = "pa",
423 .llvm_name = "pa",
372424 .description = "Enable v8.3-A Pointer Authentication enchancement",
373425 .dependencies = &[_]*const Feature {
374426 },
......@@ -376,6 +428,7 @@ pub const feature_pa = Feature{
376428
377429pub const feature_pan = Feature{
378430 .name = "pan",
431 .llvm_name = "pan",
379432 .description = "Enables ARM v8.1 Privileged Access-Never extension",
380433 .dependencies = &[_]*const Feature {
381434 },
......@@ -383,6 +436,7 @@ pub const feature_pan = Feature{
383436
384437pub const feature_panRwv = Feature{
385438 .name = "pan-rwv",
439 .llvm_name = "pan-rwv",
386440 .description = "Enable v8.2 PAN s1e1R and s1e1W Variants",
387441 .dependencies = &[_]*const Feature {
388442 &feature_pan,
......@@ -391,6 +445,7 @@ pub const feature_panRwv = Feature{
391445
392446pub const feature_perfmon = Feature{
393447 .name = "perfmon",
448 .llvm_name = "perfmon",
394449 .description = "Enable ARMv8 PMUv3 Performance Monitors extension",
395450 .dependencies = &[_]*const Feature {
396451 },
......@@ -398,6 +453,7 @@ pub const feature_perfmon = Feature{
398453
399454pub const feature_usePostraScheduler = Feature{
400455 .name = "use-postra-scheduler",
456 .llvm_name = "use-postra-scheduler",
401457 .description = "Schedule again after register allocation",
402458 .dependencies = &[_]*const Feature {
403459 },
......@@ -405,6 +461,7 @@ pub const feature_usePostraScheduler = Feature{
405461
406462pub const feature_predres = Feature{
407463 .name = "predres",
464 .llvm_name = "predres",
408465 .description = "Enable v8.5a execution and data prediction invalidation instructions",
409466 .dependencies = &[_]*const Feature {
410467 },
......@@ -412,6 +469,7 @@ pub const feature_predres = Feature{
412469
413470pub const feature_predictableSelectExpensive = Feature{
414471 .name = "predictable-select-expensive",
472 .llvm_name = "predictable-select-expensive",
415473 .description = "Prefer likely predicted branches over selects",
416474 .dependencies = &[_]*const Feature {
417475 },
......@@ -419,6 +477,7 @@ pub const feature_predictableSelectExpensive = Feature{
419477
420478pub const feature_uaops = Feature{
421479 .name = "uaops",
480 .llvm_name = "uaops",
422481 .description = "Enable v8.2 UAO PState",
423482 .dependencies = &[_]*const Feature {
424483 },
......@@ -426,6 +485,7 @@ pub const feature_uaops = Feature{
426485
427486pub const feature_ras = Feature{
428487 .name = "ras",
488 .llvm_name = "ras",
429489 .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions",
430490 .dependencies = &[_]*const Feature {
431491 },
......@@ -433,6 +493,7 @@ pub const feature_ras = Feature{
433493
434494pub const feature_rasv8_4 = Feature{
435495 .name = "rasv8_4",
496 .llvm_name = "rasv8_4",
436497 .description = "Enable v8.4-A Reliability, Availability and Serviceability extension",
437498 .dependencies = &[_]*const Feature {
438499 &feature_ras,
......@@ -441,6 +502,7 @@ pub const feature_rasv8_4 = Feature{
441502
442503pub const feature_rcpc = Feature{
443504 .name = "rcpc",
505 .llvm_name = "rcpc",
444506 .description = "Enable support for RCPC extension",
445507 .dependencies = &[_]*const Feature {
446508 },
......@@ -448,6 +510,7 @@ pub const feature_rcpc = Feature{
448510
449511pub const feature_rcpcImmo = Feature{
450512 .name = "rcpc-immo",
513 .llvm_name = "rcpc-immo",
451514 .description = "Enable v8.4-A RCPC instructions with Immediate Offsets",
452515 .dependencies = &[_]*const Feature {
453516 &feature_rcpc,
......@@ -456,6 +519,7 @@ pub const feature_rcpcImmo = Feature{
456519
457520pub const feature_rdm = Feature{
458521 .name = "rdm",
522 .llvm_name = "rdm",
459523 .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions",
460524 .dependencies = &[_]*const Feature {
461525 },
......@@ -463,6 +527,7 @@ pub const feature_rdm = Feature{
463527
464528pub const feature_rand = Feature{
465529 .name = "rand",
530 .llvm_name = "rand",
466531 .description = "Enable Random Number generation instructions",
467532 .dependencies = &[_]*const Feature {
468533 },
......@@ -470,6 +535,7 @@ pub const feature_rand = Feature{
470535
471536pub const feature_reserveX1 = Feature{
472537 .name = "reserve-x1",
538 .llvm_name = "reserve-x1",
473539 .description = "Reserve X1, making it unavailable as a GPR",
474540 .dependencies = &[_]*const Feature {
475541 },
......@@ -477,6 +543,7 @@ pub const feature_reserveX1 = Feature{
477543
478544pub const feature_reserveX2 = Feature{
479545 .name = "reserve-x2",
546 .llvm_name = "reserve-x2",
480547 .description = "Reserve X2, making it unavailable as a GPR",
481548 .dependencies = &[_]*const Feature {
482549 },
......@@ -484,6 +551,7 @@ pub const feature_reserveX2 = Feature{
484551
485552pub const feature_reserveX3 = Feature{
486553 .name = "reserve-x3",
554 .llvm_name = "reserve-x3",
487555 .description = "Reserve X3, making it unavailable as a GPR",
488556 .dependencies = &[_]*const Feature {
489557 },
......@@ -491,6 +559,7 @@ pub const feature_reserveX3 = Feature{
491559
492560pub const feature_reserveX4 = Feature{
493561 .name = "reserve-x4",
562 .llvm_name = "reserve-x4",
494563 .description = "Reserve X4, making it unavailable as a GPR",
495564 .dependencies = &[_]*const Feature {
496565 },
......@@ -498,6 +567,7 @@ pub const feature_reserveX4 = Feature{
498567
499568pub const feature_reserveX5 = Feature{
500569 .name = "reserve-x5",
570 .llvm_name = "reserve-x5",
501571 .description = "Reserve X5, making it unavailable as a GPR",
502572 .dependencies = &[_]*const Feature {
503573 },
......@@ -505,6 +575,7 @@ pub const feature_reserveX5 = Feature{
505575
506576pub const feature_reserveX6 = Feature{
507577 .name = "reserve-x6",
578 .llvm_name = "reserve-x6",
508579 .description = "Reserve X6, making it unavailable as a GPR",
509580 .dependencies = &[_]*const Feature {
510581 },
......@@ -512,6 +583,7 @@ pub const feature_reserveX6 = Feature{
512583
513584pub const feature_reserveX7 = Feature{
514585 .name = "reserve-x7",
586 .llvm_name = "reserve-x7",
515587 .description = "Reserve X7, making it unavailable as a GPR",
516588 .dependencies = &[_]*const Feature {
517589 },
......@@ -519,6 +591,7 @@ pub const feature_reserveX7 = Feature{
519591
520592pub const feature_reserveX9 = Feature{
521593 .name = "reserve-x9",
594 .llvm_name = "reserve-x9",
522595 .description = "Reserve X9, making it unavailable as a GPR",
523596 .dependencies = &[_]*const Feature {
524597 },
......@@ -526,6 +599,7 @@ pub const feature_reserveX9 = Feature{
526599
527600pub const feature_reserveX10 = Feature{
528601 .name = "reserve-x10",
602 .llvm_name = "reserve-x10",
529603 .description = "Reserve X10, making it unavailable as a GPR",
530604 .dependencies = &[_]*const Feature {
531605 },
......@@ -533,6 +607,7 @@ pub const feature_reserveX10 = Feature{
533607
534608pub const feature_reserveX11 = Feature{
535609 .name = "reserve-x11",
610 .llvm_name = "reserve-x11",
536611 .description = "Reserve X11, making it unavailable as a GPR",
537612 .dependencies = &[_]*const Feature {
538613 },
......@@ -540,6 +615,7 @@ pub const feature_reserveX11 = Feature{
540615
541616pub const feature_reserveX12 = Feature{
542617 .name = "reserve-x12",
618 .llvm_name = "reserve-x12",
543619 .description = "Reserve X12, making it unavailable as a GPR",
544620 .dependencies = &[_]*const Feature {
545621 },
......@@ -547,6 +623,7 @@ pub const feature_reserveX12 = Feature{
547623
548624pub const feature_reserveX13 = Feature{
549625 .name = "reserve-x13",
626 .llvm_name = "reserve-x13",
550627 .description = "Reserve X13, making it unavailable as a GPR",
551628 .dependencies = &[_]*const Feature {
552629 },
......@@ -554,6 +631,7 @@ pub const feature_reserveX13 = Feature{
554631
555632pub const feature_reserveX14 = Feature{
556633 .name = "reserve-x14",
634 .llvm_name = "reserve-x14",
557635 .description = "Reserve X14, making it unavailable as a GPR",
558636 .dependencies = &[_]*const Feature {
559637 },
......@@ -561,6 +639,7 @@ pub const feature_reserveX14 = Feature{
561639
562640pub const feature_reserveX15 = Feature{
563641 .name = "reserve-x15",
642 .llvm_name = "reserve-x15",
564643 .description = "Reserve X15, making it unavailable as a GPR",
565644 .dependencies = &[_]*const Feature {
566645 },
......@@ -568,6 +647,7 @@ pub const feature_reserveX15 = Feature{
568647
569648pub const feature_reserveX18 = Feature{
570649 .name = "reserve-x18",
650 .llvm_name = "reserve-x18",
571651 .description = "Reserve X18, making it unavailable as a GPR",
572652 .dependencies = &[_]*const Feature {
573653 },
......@@ -575,6 +655,7 @@ pub const feature_reserveX18 = Feature{
575655
576656pub const feature_reserveX20 = Feature{
577657 .name = "reserve-x20",
658 .llvm_name = "reserve-x20",
578659 .description = "Reserve X20, making it unavailable as a GPR",
579660 .dependencies = &[_]*const Feature {
580661 },
......@@ -582,6 +663,7 @@ pub const feature_reserveX20 = Feature{
582663
583664pub const feature_reserveX21 = Feature{
584665 .name = "reserve-x21",
666 .llvm_name = "reserve-x21",
585667 .description = "Reserve X21, making it unavailable as a GPR",
586668 .dependencies = &[_]*const Feature {
587669 },
......@@ -589,6 +671,7 @@ pub const feature_reserveX21 = Feature{
589671
590672pub const feature_reserveX22 = Feature{
591673 .name = "reserve-x22",
674 .llvm_name = "reserve-x22",
592675 .description = "Reserve X22, making it unavailable as a GPR",
593676 .dependencies = &[_]*const Feature {
594677 },
......@@ -596,6 +679,7 @@ pub const feature_reserveX22 = Feature{
596679
597680pub const feature_reserveX23 = Feature{
598681 .name = "reserve-x23",
682 .llvm_name = "reserve-x23",
599683 .description = "Reserve X23, making it unavailable as a GPR",
600684 .dependencies = &[_]*const Feature {
601685 },
......@@ -603,6 +687,7 @@ pub const feature_reserveX23 = Feature{
603687
604688pub const feature_reserveX24 = Feature{
605689 .name = "reserve-x24",
690 .llvm_name = "reserve-x24",
606691 .description = "Reserve X24, making it unavailable as a GPR",
607692 .dependencies = &[_]*const Feature {
608693 },
......@@ -610,6 +695,7 @@ pub const feature_reserveX24 = Feature{
610695
611696pub const feature_reserveX25 = Feature{
612697 .name = "reserve-x25",
698 .llvm_name = "reserve-x25",
613699 .description = "Reserve X25, making it unavailable as a GPR",
614700 .dependencies = &[_]*const Feature {
615701 },
......@@ -617,6 +703,7 @@ pub const feature_reserveX25 = Feature{
617703
618704pub const feature_reserveX26 = Feature{
619705 .name = "reserve-x26",
706 .llvm_name = "reserve-x26",
620707 .description = "Reserve X26, making it unavailable as a GPR",
621708 .dependencies = &[_]*const Feature {
622709 },
......@@ -624,6 +711,7 @@ pub const feature_reserveX26 = Feature{
624711
625712pub const feature_reserveX27 = Feature{
626713 .name = "reserve-x27",
714 .llvm_name = "reserve-x27",
627715 .description = "Reserve X27, making it unavailable as a GPR",
628716 .dependencies = &[_]*const Feature {
629717 },
......@@ -631,6 +719,7 @@ pub const feature_reserveX27 = Feature{
631719
632720pub const feature_reserveX28 = Feature{
633721 .name = "reserve-x28",
722 .llvm_name = "reserve-x28",
634723 .description = "Reserve X28, making it unavailable as a GPR",
635724 .dependencies = &[_]*const Feature {
636725 },
......@@ -638,6 +727,7 @@ pub const feature_reserveX28 = Feature{
638727
639728pub const feature_sb = Feature{
640729 .name = "sb",
730 .llvm_name = "sb",
641731 .description = "Enable v8.5 Speculation Barrier",
642732 .dependencies = &[_]*const Feature {
643733 },
......@@ -645,6 +735,7 @@ pub const feature_sb = Feature{
645735
646736pub const feature_sel2 = Feature{
647737 .name = "sel2",
738 .llvm_name = "sel2",
648739 .description = "Enable v8.4-A Secure Exception Level 2 extension",
649740 .dependencies = &[_]*const Feature {
650741 },
......@@ -652,6 +743,7 @@ pub const feature_sel2 = Feature{
652743
653744pub const feature_sha2 = Feature{
654745 .name = "sha2",
746 .llvm_name = "sha2",
655747 .description = "Enable SHA1 and SHA256 support",
656748 .dependencies = &[_]*const Feature {
657749 &feature_fpArmv8,
......@@ -660,6 +752,7 @@ pub const feature_sha2 = Feature{
660752
661753pub const feature_sha3 = Feature{
662754 .name = "sha3",
755 .llvm_name = "sha3",
663756 .description = "Enable SHA512 and SHA3 support",
664757 .dependencies = &[_]*const Feature {
665758 &feature_fpArmv8,
......@@ -668,6 +761,7 @@ pub const feature_sha3 = Feature{
668761
669762pub const feature_sm4 = Feature{
670763 .name = "sm4",
764 .llvm_name = "sm4",
671765 .description = "Enable SM3 and SM4 support",
672766 .dependencies = &[_]*const Feature {
673767 &feature_fpArmv8,
......@@ -676,6 +770,7 @@ pub const feature_sm4 = Feature{
676770
677771pub const feature_spe = Feature{
678772 .name = "spe",
773 .llvm_name = "spe",
679774 .description = "Enable Statistical Profiling extension",
680775 .dependencies = &[_]*const Feature {
681776 },
......@@ -683,6 +778,7 @@ pub const feature_spe = Feature{
683778
684779pub const feature_ssbs = Feature{
685780 .name = "ssbs",
781 .llvm_name = "ssbs",
686782 .description = "Enable Speculative Store Bypass Safe bit",
687783 .dependencies = &[_]*const Feature {
688784 },
......@@ -690,6 +786,7 @@ pub const feature_ssbs = Feature{
690786
691787pub const feature_sve = Feature{
692788 .name = "sve",
789 .llvm_name = "sve",
693790 .description = "Enable Scalable Vector Extension (SVE) instructions",
694791 .dependencies = &[_]*const Feature {
695792 },
......@@ -697,6 +794,7 @@ pub const feature_sve = Feature{
697794
698795pub const feature_sve2 = Feature{
699796 .name = "sve2",
797 .llvm_name = "sve2",
700798 .description = "Enable Scalable Vector Extension 2 (SVE2) instructions",
701799 .dependencies = &[_]*const Feature {
702800 &feature_sve,
......@@ -705,6 +803,7 @@ pub const feature_sve2 = Feature{
705803
706804pub const feature_sve2Aes = Feature{
707805 .name = "sve2-aes",
806 .llvm_name = "sve2-aes",
708807 .description = "Enable AES SVE2 instructions",
709808 .dependencies = &[_]*const Feature {
710809 &feature_fpArmv8,
......@@ -714,6 +813,7 @@ pub const feature_sve2Aes = Feature{
714813
715814pub const feature_sve2Bitperm = Feature{
716815 .name = "sve2-bitperm",
816 .llvm_name = "sve2-bitperm",
717817 .description = "Enable bit permutation SVE2 instructions",
718818 .dependencies = &[_]*const Feature {
719819 &feature_sve,
......@@ -722,6 +822,7 @@ pub const feature_sve2Bitperm = Feature{
722822
723823pub const feature_sve2Sha3 = Feature{
724824 .name = "sve2-sha3",
825 .llvm_name = "sve2-sha3",
725826 .description = "Enable SHA3 SVE2 instructions",
726827 .dependencies = &[_]*const Feature {
727828 &feature_fpArmv8,
......@@ -731,6 +832,7 @@ pub const feature_sve2Sha3 = Feature{
731832
732833pub const feature_sve2Sm4 = Feature{
733834 .name = "sve2-sm4",
835 .llvm_name = "sve2-sm4",
734836 .description = "Enable SM4 SVE2 instructions",
735837 .dependencies = &[_]*const Feature {
736838 &feature_fpArmv8,
......@@ -740,6 +842,7 @@ pub const feature_sve2Sm4 = Feature{
740842
741843pub const feature_slowMisaligned128store = Feature{
742844 .name = "slow-misaligned-128store",
845 .llvm_name = "slow-misaligned-128store",
743846 .description = "Misaligned 128 bit stores are slow",
744847 .dependencies = &[_]*const Feature {
745848 },
......@@ -747,6 +850,7 @@ pub const feature_slowMisaligned128store = Feature{
747850
748851pub const feature_slowPaired128 = Feature{
749852 .name = "slow-paired-128",
853 .llvm_name = "slow-paired-128",
750854 .description = "Paired 128 bit loads and stores are slow",
751855 .dependencies = &[_]*const Feature {
752856 },
......@@ -754,6 +858,7 @@ pub const feature_slowPaired128 = Feature{
754858
755859pub const feature_slowStrqroStore = Feature{
756860 .name = "slow-strqro-store",
861 .llvm_name = "slow-strqro-store",
757862 .description = "STR of Q register with register offset is slow",
758863 .dependencies = &[_]*const Feature {
759864 },
......@@ -761,6 +866,7 @@ pub const feature_slowStrqroStore = Feature{
761866
762867pub const feature_specrestrict = Feature{
763868 .name = "specrestrict",
869 .llvm_name = "specrestrict",
764870 .description = "Enable architectural speculation restriction",
765871 .dependencies = &[_]*const Feature {
766872 },
......@@ -768,6 +874,7 @@ pub const feature_specrestrict = Feature{
768874
769875pub const feature_strictAlign = Feature{
770876 .name = "strict-align",
877 .llvm_name = "strict-align",
771878 .description = "Disallow all unaligned memory access",
772879 .dependencies = &[_]*const Feature {
773880 },
......@@ -775,6 +882,7 @@ pub const feature_strictAlign = Feature{
775882
776883pub const feature_tlbRmi = Feature{
777884 .name = "tlb-rmi",
885 .llvm_name = "tlb-rmi",
778886 .description = "Enable v8.4-A TLB Range and Maintenance Instructions",
779887 .dependencies = &[_]*const Feature {
780888 },
......@@ -782,6 +890,7 @@ pub const feature_tlbRmi = Feature{
782890
783891pub const feature_tme = Feature{
784892 .name = "tme",
893 .llvm_name = "tme",
785894 .description = "Enable Transactional Memory Extension",
786895 .dependencies = &[_]*const Feature {
787896 },
......@@ -789,6 +898,7 @@ pub const feature_tme = Feature{
789898
790899pub const feature_tracev84 = Feature{
791900 .name = "tracev8.4",
901 .llvm_name = "tracev8.4",
792902 .description = "Enable v8.4-A Trace extension",
793903 .dependencies = &[_]*const Feature {
794904 },
......@@ -796,6 +906,7 @@ pub const feature_tracev84 = Feature{
796906
797907pub const feature_trbe = Feature{
798908 .name = "trbe",
909 .llvm_name = "trbe",
799910 .description = "Enable Trace Buffer Extension",
800911 .dependencies = &[_]*const Feature {
801912 },
......@@ -803,6 +914,7 @@ pub const feature_trbe = Feature{
803914
804915pub const feature_taggedGlobals = Feature{
805916 .name = "tagged-globals",
917 .llvm_name = "tagged-globals",
806918 .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",
807919 .dependencies = &[_]*const Feature {
808920 },
......@@ -810,6 +922,7 @@ pub const feature_taggedGlobals = Feature{
810922
811923pub const feature_useAa = Feature{
812924 .name = "use-aa",
925 .llvm_name = "use-aa",
813926 .description = "Use alias analysis during codegen",
814927 .dependencies = &[_]*const Feature {
815928 },
......@@ -817,6 +930,7 @@ pub const feature_useAa = Feature{
817930
818931pub const feature_tpidrEl1 = Feature{
819932 .name = "tpidr-el1",
933 .llvm_name = "tpidr-el1",
820934 .description = "Permit use of TPIDR_EL1 for the TLS base",
821935 .dependencies = &[_]*const Feature {
822936 },
......@@ -824,6 +938,7 @@ pub const feature_tpidrEl1 = Feature{
824938
825939pub const feature_tpidrEl2 = Feature{
826940 .name = "tpidr-el2",
941 .llvm_name = "tpidr-el2",
827942 .description = "Permit use of TPIDR_EL2 for the TLS base",
828943 .dependencies = &[_]*const Feature {
829944 },
......@@ -831,6 +946,7 @@ pub const feature_tpidrEl2 = Feature{
831946
832947pub const feature_tpidrEl3 = Feature{
833948 .name = "tpidr-el3",
949 .llvm_name = "tpidr-el3",
834950 .description = "Permit use of TPIDR_EL3 for the TLS base",
835951 .dependencies = &[_]*const Feature {
836952 },
......@@ -838,6 +954,7 @@ pub const feature_tpidrEl3 = Feature{
838954
839955pub const feature_useReciprocalSquareRoot = Feature{
840956 .name = "use-reciprocal-square-root",
957 .llvm_name = "use-reciprocal-square-root",
841958 .description = "Use the reciprocal square root approximation",
842959 .dependencies = &[_]*const Feature {
843960 },
......@@ -845,6 +962,7 @@ pub const feature_useReciprocalSquareRoot = Feature{
845962
846963pub const feature_vh = Feature{
847964 .name = "vh",
965 .llvm_name = "vh",
848966 .description = "Enables ARM v8.1 Virtual Host extension",
849967 .dependencies = &[_]*const Feature {
850968 },
......@@ -852,6 +970,7 @@ pub const feature_vh = Feature{
852970
853971pub const feature_zcm = Feature{
854972 .name = "zcm",
973 .llvm_name = "zcm",
855974 .description = "Has zero-cycle register moves",
856975 .dependencies = &[_]*const Feature {
857976 },
......@@ -859,6 +978,7 @@ pub const feature_zcm = Feature{
859978
860979pub const feature_zcz = Feature{
861980 .name = "zcz",
981 .llvm_name = "zcz",
862982 .description = "Has zero-cycle zeroing instructions",
863983 .dependencies = &[_]*const Feature {
864984 &feature_zczGp,
......@@ -868,6 +988,7 @@ pub const feature_zcz = Feature{
868988
869989pub const feature_zczFp = Feature{
870990 .name = "zcz-fp",
991 .llvm_name = "zcz-fp",
871992 .description = "Has zero-cycle zeroing instructions for FP registers",
872993 .dependencies = &[_]*const Feature {
873994 },
......@@ -875,6 +996,7 @@ pub const feature_zczFp = Feature{
875996
876997pub const feature_zczFpWorkaround = Feature{
877998 .name = "zcz-fp-workaround",
999 .llvm_name = "zcz-fp-workaround",
8781000 .description = "The zero-cycle floating-point zeroing instruction has a bug",
8791001 .dependencies = &[_]*const Feature {
8801002 },
......@@ -882,6 +1004,7 @@ pub const feature_zczFpWorkaround = Feature{
8821004
8831005pub const feature_zczGp = Feature{
8841006 .name = "zcz-gp",
1007 .llvm_name = "zcz-gp",
8851008 .description = "Has zero-cycle zeroing instructions for generic registers",
8861009 .dependencies = &[_]*const Feature {
8871010 },
......@@ -1017,18 +1140,18 @@ pub const cpu_appleLatest = Cpu{
10171140 .name = "apple-latest",
10181141 .llvm_name = "apple-latest",
10191142 .dependencies = &[_]*const Feature {
1020 &feature_alternateSextloadCvtF32Pattern,
1021 &feature_fuseCryptoEor,
10221143 &feature_fuseAes,
1023 &feature_zczGp,
10241144 &feature_zczFpWorkaround,
1025 &feature_disableLatencySchedHeuristic,
10261145 &feature_perfmon,
1027 &feature_fpArmv8,
1028 &feature_arithBccFusion,
10291146 &feature_arithCbzFusion,
1030 &feature_zczFp,
1147 &feature_alternateSextloadCvtF32Pattern,
1148 &feature_fuseCryptoEor,
1149 &feature_disableLatencySchedHeuristic,
10311150 &feature_zcm,
1151 &feature_zczFp,
1152 &feature_zczGp,
1153 &feature_fpArmv8,
1154 &feature_arithBccFusion,
10321155 },
10331156};
10341157
......@@ -1036,9 +1159,9 @@ pub const cpu_cortexA35 = Cpu{
10361159 .name = "cortex-a35",
10371160 .llvm_name = "cortex-a35",
10381161 .dependencies = &[_]*const Feature {
1039 &feature_crc,
10401162 &feature_fpArmv8,
10411163 &feature_perfmon,
1164 &feature_crc,
10421165 },
10431166};
10441167
......@@ -1046,13 +1169,13 @@ pub const cpu_cortexA53 = Cpu{
10461169 .name = "cortex-a53",
10471170 .llvm_name = "cortex-a53",
10481171 .dependencies = &[_]*const Feature {
1049 &feature_customCheapAsMove,
10501172 &feature_fuseAes,
1051 &feature_usePostraScheduler,
1173 &feature_balanceFpOps,
10521174 &feature_perfmon,
1053 &feature_fpArmv8,
10541175 &feature_crc,
1055 &feature_balanceFpOps,
1176 &feature_customCheapAsMove,
1177 &feature_fpArmv8,
1178 &feature_usePostraScheduler,
10561179 &feature_useAa,
10571180 },
10581181};
......@@ -1061,20 +1184,20 @@ pub const cpu_cortexA55 = Cpu{
10611184 .name = "cortex-a55",
10621185 .llvm_name = "cortex-a55",
10631186 .dependencies = &[_]*const Feature {
1064 &feature_rdm,
1065 &feature_ccpp,
10661187 &feature_fuseAes,
1067 &feature_lse,
1068 &feature_perfmon,
10691188 &feature_fpArmv8,
1070 &feature_lor,
10711189 &feature_ras,
1072 &feature_vh,
1073 &feature_rcpc,
10741190 &feature_dotprod,
1075 &feature_uaops,
1191 &feature_vh,
10761192 &feature_crc,
10771193 &feature_pan,
1194 &feature_ccpp,
1195 &feature_rdm,
1196 &feature_rcpc,
1197 &feature_uaops,
1198 &feature_perfmon,
1199 &feature_lse,
1200 &feature_lor,
10781201 },
10791202};
10801203
......@@ -1082,15 +1205,15 @@ pub const cpu_cortexA57 = Cpu{
10821205 .name = "cortex-a57",
10831206 .llvm_name = "cortex-a57",
10841207 .dependencies = &[_]*const Feature {
1085 &feature_customCheapAsMove,
10861208 &feature_fuseAes,
1087 &feature_usePostraScheduler,
1209 &feature_balanceFpOps,
10881210 &feature_perfmon,
1089 &feature_fpArmv8,
10901211 &feature_crc,
1091 &feature_balanceFpOps,
10921212 &feature_fuseLiterals,
10931213 &feature_predictableSelectExpensive,
1214 &feature_customCheapAsMove,
1215 &feature_fpArmv8,
1216 &feature_usePostraScheduler,
10941217 },
10951218};
10961219
......@@ -1098,19 +1221,19 @@ pub const cpu_cortexA65 = Cpu{
10981221 .name = "cortex-a65",
10991222 .llvm_name = "cortex-a65",
11001223 .dependencies = &[_]*const Feature {
1101 &feature_rdm,
1102 &feature_ccpp,
1103 &feature_lse,
1104 &feature_fpArmv8,
11051224 &feature_ras,
1106 &feature_lor,
1107 &feature_vh,
1108 &feature_rcpc,
11091225 &feature_dotprod,
1110 &feature_ssbs,
1111 &feature_uaops,
1226 &feature_vh,
11121227 &feature_crc,
11131228 &feature_pan,
1229 &feature_ccpp,
1230 &feature_rdm,
1231 &feature_rcpc,
1232 &feature_uaops,
1233 &feature_ssbs,
1234 &feature_fpArmv8,
1235 &feature_lse,
1236 &feature_lor,
11141237 },
11151238};
11161239
......@@ -1118,19 +1241,19 @@ pub const cpu_cortexA65ae = Cpu{
11181241 .name = "cortex-a65ae",
11191242 .llvm_name = "cortex-a65ae",
11201243 .dependencies = &[_]*const Feature {
1121 &feature_rdm,
1122 &feature_ccpp,
1123 &feature_lse,
1124 &feature_fpArmv8,
11251244 &feature_ras,
1126 &feature_lor,
1127 &feature_vh,
1128 &feature_rcpc,
11291245 &feature_dotprod,
1130 &feature_ssbs,
1131 &feature_uaops,
1246 &feature_vh,
11321247 &feature_crc,
11331248 &feature_pan,
1249 &feature_ccpp,
1250 &feature_rdm,
1251 &feature_rcpc,
1252 &feature_uaops,
1253 &feature_ssbs,
1254 &feature_fpArmv8,
1255 &feature_lse,
1256 &feature_lor,
11341257 },
11351258};
11361259
......@@ -1138,10 +1261,10 @@ pub const cpu_cortexA72 = Cpu{
11381261 .name = "cortex-a72",
11391262 .llvm_name = "cortex-a72",
11401263 .dependencies = &[_]*const Feature {
1141 &feature_crc,
1142 &feature_fuseAes,
11431264 &feature_fpArmv8,
1265 &feature_fuseAes,
11441266 &feature_perfmon,
1267 &feature_crc,
11451268 },
11461269};
11471270
......@@ -1149,10 +1272,10 @@ pub const cpu_cortexA73 = Cpu{
11491272 .name = "cortex-a73",
11501273 .llvm_name = "cortex-a73",
11511274 .dependencies = &[_]*const Feature {
1152 &feature_crc,
1153 &feature_fuseAes,
11541275 &feature_fpArmv8,
1276 &feature_fuseAes,
11551277 &feature_perfmon,
1278 &feature_crc,
11561279 },
11571280};
11581281
......@@ -1160,20 +1283,20 @@ pub const cpu_cortexA75 = Cpu{
11601283 .name = "cortex-a75",
11611284 .llvm_name = "cortex-a75",
11621285 .dependencies = &[_]*const Feature {
1163 &feature_rdm,
1164 &feature_ccpp,
11651286 &feature_fuseAes,
1166 &feature_lse,
1167 &feature_perfmon,
11681287 &feature_fpArmv8,
1169 &feature_lor,
11701288 &feature_ras,
1171 &feature_vh,
1172 &feature_rcpc,
11731289 &feature_dotprod,
1174 &feature_uaops,
1290 &feature_vh,
11751291 &feature_crc,
11761292 &feature_pan,
1293 &feature_ccpp,
1294 &feature_rdm,
1295 &feature_rcpc,
1296 &feature_uaops,
1297 &feature_perfmon,
1298 &feature_lse,
1299 &feature_lor,
11771300 },
11781301};
11791302
......@@ -1181,19 +1304,19 @@ pub const cpu_cortexA76 = Cpu{
11811304 .name = "cortex-a76",
11821305 .llvm_name = "cortex-a76",
11831306 .dependencies = &[_]*const Feature {
1184 &feature_rdm,
1185 &feature_ccpp,
1186 &feature_lse,
1187 &feature_fpArmv8,
1188 &feature_lor,
11891307 &feature_ras,
1190 &feature_vh,
1191 &feature_rcpc,
11921308 &feature_dotprod,
1193 &feature_ssbs,
1194 &feature_uaops,
1309 &feature_vh,
11951310 &feature_crc,
11961311 &feature_pan,
1312 &feature_ccpp,
1313 &feature_rdm,
1314 &feature_rcpc,
1315 &feature_uaops,
1316 &feature_ssbs,
1317 &feature_fpArmv8,
1318 &feature_lse,
1319 &feature_lor,
11971320 },
11981321};
11991322
......@@ -1201,19 +1324,19 @@ pub const cpu_cortexA76ae = Cpu{
12011324 .name = "cortex-a76ae",
12021325 .llvm_name = "cortex-a76ae",
12031326 .dependencies = &[_]*const Feature {
1204 &feature_rdm,
1205 &feature_ccpp,
1206 &feature_lse,
1207 &feature_fpArmv8,
1208 &feature_lor,
12091327 &feature_ras,
1210 &feature_vh,
1211 &feature_rcpc,
12121328 &feature_dotprod,
1213 &feature_ssbs,
1214 &feature_uaops,
1329 &feature_vh,
12151330 &feature_crc,
12161331 &feature_pan,
1332 &feature_ccpp,
1333 &feature_rdm,
1334 &feature_rcpc,
1335 &feature_uaops,
1336 &feature_ssbs,
1337 &feature_fpArmv8,
1338 &feature_lse,
1339 &feature_lor,
12171340 },
12181341};
12191342
......@@ -1221,18 +1344,18 @@ pub const cpu_cyclone = Cpu{
12211344 .name = "cyclone",
12221345 .llvm_name = "cyclone",
12231346 .dependencies = &[_]*const Feature {
1224 &feature_alternateSextloadCvtF32Pattern,
1225 &feature_fuseCryptoEor,
12261347 &feature_fuseAes,
1227 &feature_zczGp,
12281348 &feature_zczFpWorkaround,
1229 &feature_disableLatencySchedHeuristic,
12301349 &feature_perfmon,
1231 &feature_fpArmv8,
1232 &feature_arithBccFusion,
12331350 &feature_arithCbzFusion,
1234 &feature_zczFp,
1351 &feature_alternateSextloadCvtF32Pattern,
1352 &feature_fuseCryptoEor,
1353 &feature_disableLatencySchedHeuristic,
12351354 &feature_zcm,
1355 &feature_zczFp,
1356 &feature_zczGp,
1357 &feature_fpArmv8,
1358 &feature_arithBccFusion,
12361359 },
12371360};
12381361
......@@ -1240,17 +1363,17 @@ pub const cpu_exynosM1 = Cpu{
12401363 .name = "exynos-m1",
12411364 .llvm_name = "exynos-m1",
12421365 .dependencies = &[_]*const Feature {
1243 &feature_customCheapAsMove,
12441366 &feature_fuseAes,
12451367 &feature_force32bitJumpTables,
1246 &feature_usePostraScheduler,
12471368 &feature_perfmon,
1248 &feature_fpArmv8,
1249 &feature_slowMisaligned128store,
1250 &feature_useReciprocalSquareRoot,
12511369 &feature_crc,
1370 &feature_useReciprocalSquareRoot,
12521371 &feature_slowPaired128,
12531372 &feature_zczFp,
1373 &feature_slowMisaligned128store,
1374 &feature_customCheapAsMove,
1375 &feature_fpArmv8,
1376 &feature_usePostraScheduler,
12541377 },
12551378};
12561379
......@@ -1258,16 +1381,16 @@ pub const cpu_exynosM2 = Cpu{
12581381 .name = "exynos-m2",
12591382 .llvm_name = "exynos-m2",
12601383 .dependencies = &[_]*const Feature {
1261 &feature_customCheapAsMove,
12621384 &feature_fuseAes,
12631385 &feature_force32bitJumpTables,
1264 &feature_usePostraScheduler,
12651386 &feature_perfmon,
1266 &feature_fpArmv8,
1267 &feature_slowMisaligned128store,
12681387 &feature_crc,
12691388 &feature_slowPaired128,
12701389 &feature_zczFp,
1390 &feature_slowMisaligned128store,
1391 &feature_customCheapAsMove,
1392 &feature_fpArmv8,
1393 &feature_usePostraScheduler,
12711394 },
12721395};
12731396
......@@ -1275,19 +1398,19 @@ pub const cpu_exynosM3 = Cpu{
12751398 .name = "exynos-m3",
12761399 .llvm_name = "exynos-m3",
12771400 .dependencies = &[_]*const Feature {
1278 &feature_customCheapAsMove,
12791401 &feature_fuseAes,
1402 &feature_lslFast,
12801403 &feature_force32bitJumpTables,
1281 &feature_usePostraScheduler,
12821404 &feature_perfmon,
1283 &feature_fpArmv8,
1284 &feature_fuseAddress,
1285 &feature_fuseCsel,
1286 &feature_lslFast,
1287 &feature_zczFp,
12881405 &feature_crc,
12891406 &feature_fuseLiterals,
1407 &feature_fuseCsel,
1408 &feature_zczFp,
12901409 &feature_predictableSelectExpensive,
1410 &feature_customCheapAsMove,
1411 &feature_fpArmv8,
1412 &feature_usePostraScheduler,
1413 &feature_fuseAddress,
12911414 },
12921415};
12931416
......@@ -1295,31 +1418,31 @@ pub const cpu_exynosM4 = Cpu{
12951418 .name = "exynos-m4",
12961419 .llvm_name = "exynos-m4",
12971420 .dependencies = &[_]*const Feature {
1298 &feature_customCheapAsMove,
1299 &feature_lse,
1300 &feature_perfmon,
1301 &feature_fuseAddress,
1302 &feature_dotprod,
1303 &feature_arithCbzFusion,
1304 &feature_zczFp,
1305 &feature_fuseArithLogic,
1306 &feature_ccpp,
13071421 &feature_fuseAes,
1308 &feature_fuseCsel,
1309 &feature_rdm,
1310 &feature_zczGp,
1311 &feature_force32bitJumpTables,
1312 &feature_usePostraScheduler,
13131422 &feature_lslFast,
1423 &feature_force32bitJumpTables,
13141424 &feature_crc,
1315 &feature_fuseLiterals,
1316 &feature_pan,
1425 &feature_rdm,
13171426 &feature_fpArmv8,
1318 &feature_lor,
1319 &feature_ras,
1427 &feature_lse,
13201428 &feature_vh,
1429 &feature_arithCbzFusion,
1430 &feature_fuseLiterals,
1431 &feature_ccpp,
1432 &feature_lor,
13211433 &feature_arithBccFusion,
1434 &feature_ras,
1435 &feature_dotprod,
1436 &feature_fuseCsel,
1437 &feature_zczFp,
13221438 &feature_uaops,
1439 &feature_zczGp,
1440 &feature_perfmon,
1441 &feature_usePostraScheduler,
1442 &feature_fuseAddress,
1443 &feature_fuseArithLogic,
1444 &feature_customCheapAsMove,
1445 &feature_pan,
13231446 },
13241447};
13251448
......@@ -1327,31 +1450,31 @@ pub const cpu_exynosM5 = Cpu{
13271450 .name = "exynos-m5",
13281451 .llvm_name = "exynos-m5",
13291452 .dependencies = &[_]*const Feature {
1330 &feature_customCheapAsMove,
1331 &feature_lse,
1332 &feature_perfmon,
1333 &feature_fuseAddress,
1334 &feature_dotprod,
1335 &feature_arithCbzFusion,
1336 &feature_zczFp,
1337 &feature_fuseArithLogic,
1338 &feature_ccpp,
13391453 &feature_fuseAes,
1340 &feature_fuseCsel,
1341 &feature_rdm,
1342 &feature_zczGp,
1343 &feature_force32bitJumpTables,
1344 &feature_usePostraScheduler,
13451454 &feature_lslFast,
1455 &feature_force32bitJumpTables,
13461456 &feature_crc,
1347 &feature_fuseLiterals,
1348 &feature_pan,
1457 &feature_rdm,
13491458 &feature_fpArmv8,
1350 &feature_lor,
1351 &feature_ras,
1459 &feature_lse,
13521460 &feature_vh,
1461 &feature_arithCbzFusion,
1462 &feature_fuseLiterals,
1463 &feature_ccpp,
1464 &feature_lor,
13531465 &feature_arithBccFusion,
1466 &feature_ras,
1467 &feature_dotprod,
1468 &feature_fuseCsel,
1469 &feature_zczFp,
13541470 &feature_uaops,
1471 &feature_zczGp,
1472 &feature_perfmon,
1473 &feature_usePostraScheduler,
1474 &feature_fuseAddress,
1475 &feature_fuseArithLogic,
1476 &feature_customCheapAsMove,
1477 &feature_pan,
13551478 },
13561479};
13571480
......@@ -1359,17 +1482,17 @@ pub const cpu_falkor = Cpu{
13591482 .name = "falkor",
13601483 .llvm_name = "falkor",
13611484 .dependencies = &[_]*const Feature {
1362 &feature_customCheapAsMove,
1363 &feature_rdm,
1364 &feature_zczGp,
1365 &feature_usePostraScheduler,
1366 &feature_perfmon,
1367 &feature_fpArmv8,
13681485 &feature_lslFast,
1369 &feature_zczFp,
1486 &feature_perfmon,
13701487 &feature_crc,
13711488 &feature_slowStrqroStore,
1489 &feature_rdm,
1490 &feature_zczFp,
13721491 &feature_predictableSelectExpensive,
1492 &feature_customCheapAsMove,
1493 &feature_zczGp,
1494 &feature_fpArmv8,
1495 &feature_usePostraScheduler,
13731496 },
13741497};
13751498
......@@ -1391,15 +1514,15 @@ pub const cpu_kryo = Cpu{
13911514 .name = "kryo",
13921515 .llvm_name = "kryo",
13931516 .dependencies = &[_]*const Feature {
1394 &feature_customCheapAsMove,
1395 &feature_zczGp,
1396 &feature_usePostraScheduler,
1397 &feature_perfmon,
1398 &feature_fpArmv8,
13991517 &feature_lslFast,
1400 &feature_zczFp,
1518 &feature_perfmon,
14011519 &feature_crc,
1520 &feature_zczFp,
14021521 &feature_predictableSelectExpensive,
1522 &feature_customCheapAsMove,
1523 &feature_zczGp,
1524 &feature_fpArmv8,
1525 &feature_usePostraScheduler,
14031526 },
14041527};
14051528
......@@ -1407,19 +1530,19 @@ pub const cpu_neoverseE1 = Cpu{
14071530 .name = "neoverse-e1",
14081531 .llvm_name = "neoverse-e1",
14091532 .dependencies = &[_]*const Feature {
1410 &feature_rdm,
1411 &feature_ccpp,
1412 &feature_lse,
1413 &feature_fpArmv8,
1414 &feature_lor,
14151533 &feature_ras,
1416 &feature_vh,
1417 &feature_rcpc,
14181534 &feature_dotprod,
1419 &feature_ssbs,
1420 &feature_uaops,
1535 &feature_vh,
14211536 &feature_crc,
14221537 &feature_pan,
1538 &feature_ccpp,
1539 &feature_rdm,
1540 &feature_rcpc,
1541 &feature_uaops,
1542 &feature_ssbs,
1543 &feature_fpArmv8,
1544 &feature_lse,
1545 &feature_lor,
14231546 },
14241547};
14251548
......@@ -1427,20 +1550,20 @@ pub const cpu_neoverseN1 = Cpu{
14271550 .name = "neoverse-n1",
14281551 .llvm_name = "neoverse-n1",
14291552 .dependencies = &[_]*const Feature {
1430 &feature_rdm,
1431 &feature_ccpp,
1432 &feature_lse,
1433 &feature_fpArmv8,
1434 &feature_lor,
14351553 &feature_ras,
1436 &feature_vh,
1437 &feature_rcpc,
14381554 &feature_dotprod,
1439 &feature_ssbs,
1440 &feature_uaops,
1555 &feature_vh,
14411556 &feature_crc,
14421557 &feature_pan,
1558 &feature_ccpp,
1559 &feature_rdm,
14431560 &feature_spe,
1561 &feature_rcpc,
1562 &feature_uaops,
1563 &feature_ssbs,
1564 &feature_fpArmv8,
1565 &feature_lse,
1566 &feature_lor,
14441567 },
14451568};
14461569
......@@ -1448,36 +1571,36 @@ pub const cpu_saphira = Cpu{
14481571 .name = "saphira",
14491572 .llvm_name = "saphira",
14501573 .dependencies = &[_]*const Feature {
1451 &feature_customCheapAsMove,
1452 &feature_lse,
1453 &feature_fmi,
1454 &feature_perfmon,
1455 &feature_sel2,
1456 &feature_dotprod,
1574 &feature_lslFast,
1575 &feature_crc,
1576 &feature_rdm,
14571577 &feature_am,
1458 &feature_zczFp,
14591578 &feature_mpam,
1460 &feature_ccpp,
1579 &feature_fmi,
1580 &feature_fpArmv8,
1581 &feature_lse,
14611582 &feature_dit,
1462 &feature_tracev84,
1463 &feature_spe,
1464 &feature_rdm,
1465 &feature_zczGp,
1466 &feature_usePostraScheduler,
1583 &feature_vh,
1584 &feature_ccpp,
1585 &feature_sel2,
1586 &feature_lor,
14671587 &feature_nv,
1468 &feature_tlbRmi,
1469 &feature_lslFast,
1470 &feature_crc,
1471 &feature_pan,
1472 &feature_ccidx,
1473 &feature_fpArmv8,
14741588 &feature_ras,
1475 &feature_lor,
1476 &feature_vh,
1589 &feature_tlbRmi,
1590 &feature_dotprod,
1591 &feature_zczFp,
1592 &feature_spe,
14771593 &feature_rcpc,
1594 &feature_predictableSelectExpensive,
14781595 &feature_uaops,
1596 &feature_zczGp,
1597 &feature_perfmon,
1598 &feature_usePostraScheduler,
14791599 &feature_pa,
1480 &feature_predictableSelectExpensive,
1600 &feature_ccidx,
1601 &feature_customCheapAsMove,
1602 &feature_pan,
1603 &feature_tracev84,
14811604 },
14821605};
14831606
......@@ -1485,11 +1608,11 @@ pub const cpu_thunderx = Cpu{
14851608 .name = "thunderx",
14861609 .llvm_name = "thunderx",
14871610 .dependencies = &[_]*const Feature {
1488 &feature_usePostraScheduler,
14891611 &feature_perfmon,
1490 &feature_fpArmv8,
14911612 &feature_crc,
14921613 &feature_predictableSelectExpensive,
1614 &feature_fpArmv8,
1615 &feature_usePostraScheduler,
14931616 },
14941617};
14951618
......@@ -1497,17 +1620,17 @@ pub const cpu_thunderx2t99 = Cpu{
14971620 .name = "thunderx2t99",
14981621 .llvm_name = "thunderx2t99",
14991622 .dependencies = &[_]*const Feature {
1500 &feature_rdm,
1501 &feature_lse,
1502 &feature_usePostraScheduler,
15031623 &feature_aggressiveFma,
1504 &feature_fpArmv8,
1505 &feature_lor,
15061624 &feature_vh,
1507 &feature_arithBccFusion,
15081625 &feature_crc,
15091626 &feature_pan,
1627 &feature_rdm,
15101628 &feature_predictableSelectExpensive,
1629 &feature_fpArmv8,
1630 &feature_lse,
1631 &feature_lor,
1632 &feature_usePostraScheduler,
1633 &feature_arithBccFusion,
15111634 },
15121635};
15131636
......@@ -1515,11 +1638,11 @@ pub const cpu_thunderxt81 = Cpu{
15151638 .name = "thunderxt81",
15161639 .llvm_name = "thunderxt81",
15171640 .dependencies = &[_]*const Feature {
1518 &feature_usePostraScheduler,
15191641 &feature_perfmon,
1520 &feature_fpArmv8,
15211642 &feature_crc,
15221643 &feature_predictableSelectExpensive,
1644 &feature_fpArmv8,
1645 &feature_usePostraScheduler,
15231646 },
15241647};
15251648
......@@ -1527,11 +1650,11 @@ pub const cpu_thunderxt83 = Cpu{
15271650 .name = "thunderxt83",
15281651 .llvm_name = "thunderxt83",
15291652 .dependencies = &[_]*const Feature {
1530 &feature_usePostraScheduler,
15311653 &feature_perfmon,
1532 &feature_fpArmv8,
15331654 &feature_crc,
15341655 &feature_predictableSelectExpensive,
1656 &feature_fpArmv8,
1657 &feature_usePostraScheduler,
15351658 },
15361659};
15371660
......@@ -1539,11 +1662,11 @@ pub const cpu_thunderxt88 = Cpu{
15391662 .name = "thunderxt88",
15401663 .llvm_name = "thunderxt88",
15411664 .dependencies = &[_]*const Feature {
1542 &feature_usePostraScheduler,
15431665 &feature_perfmon,
1544 &feature_fpArmv8,
15451666 &feature_crc,
15461667 &feature_predictableSelectExpensive,
1668 &feature_fpArmv8,
1669 &feature_usePostraScheduler,
15471670 },
15481671};
15491672
......@@ -1551,22 +1674,22 @@ pub const cpu_tsv110 = Cpu{
15511674 .name = "tsv110",
15521675 .llvm_name = "tsv110",
15531676 .dependencies = &[_]*const Feature {
1554 &feature_customCheapAsMove,
1555 &feature_rdm,
1556 &feature_ccpp,
15571677 &feature_fuseAes,
1558 &feature_lse,
1559 &feature_usePostraScheduler,
1560 &feature_perfmon,
15611678 &feature_fpArmv8,
1562 &feature_lor,
15631679 &feature_ras,
1564 &feature_vh,
15651680 &feature_dotprod,
1566 &feature_uaops,
1681 &feature_vh,
15671682 &feature_crc,
15681683 &feature_pan,
1684 &feature_ccpp,
1685 &feature_rdm,
15691686 &feature_spe,
1687 &feature_uaops,
1688 &feature_customCheapAsMove,
1689 &feature_perfmon,
1690 &feature_lse,
1691 &feature_lor,
1692 &feature_usePostraScheduler,
15701693 },
15711694};
15721695
lib/std/target/amdgpu.zig+570-467
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_BitInsts16 = Feature{
55 .name = "16-bit-insts",
6 .llvm_name = "16-bit-insts",
67 .description = "Has i16/f16 instructions",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_BitInsts16 = Feature{
1011
1112pub const feature_addNoCarryInsts = Feature{
1213 .name = "add-no-carry-insts",
14 .llvm_name = "add-no-carry-insts",
1315 .description = "Have VALU add/sub instructions without carry out",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_addNoCarryInsts = Feature{
1719
1820pub const feature_apertureRegs = Feature{
1921 .name = "aperture-regs",
22 .llvm_name = "aperture-regs",
2023 .description = "Has Memory Aperture Base and Size Registers",
2124 .dependencies = &[_]*const Feature {
2225 },
......@@ -24,6 +27,7 @@ pub const feature_apertureRegs = Feature{
2427
2528pub const feature_atomicFaddInsts = Feature{
2629 .name = "atomic-fadd-insts",
30 .llvm_name = "atomic-fadd-insts",
2731 .description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions",
2832 .dependencies = &[_]*const Feature {
2933 },
......@@ -31,6 +35,7 @@ pub const feature_atomicFaddInsts = Feature{
3135
3236pub const feature_autoWaitcntBeforeBarrier = Feature{
3337 .name = "auto-waitcnt-before-barrier",
38 .llvm_name = "auto-waitcnt-before-barrier",
3439 .description = "Hardware automatically inserts waitcnt before barrier",
3540 .dependencies = &[_]*const Feature {
3641 },
......@@ -38,6 +43,7 @@ pub const feature_autoWaitcntBeforeBarrier = Feature{
3843
3944pub const feature_ciInsts = Feature{
4045 .name = "ci-insts",
46 .llvm_name = "ci-insts",
4147 .description = "Additional instructions for CI+",
4248 .dependencies = &[_]*const Feature {
4349 },
......@@ -45,6 +51,7 @@ pub const feature_ciInsts = Feature{
4551
4652pub const feature_codeObjectV3 = Feature{
4753 .name = "code-object-v3",
54 .llvm_name = "code-object-v3",
4855 .description = "Generate code object version 3",
4956 .dependencies = &[_]*const Feature {
5057 },
......@@ -52,6 +59,7 @@ pub const feature_codeObjectV3 = Feature{
5259
5360pub const feature_cumode = Feature{
5461 .name = "cumode",
62 .llvm_name = "cumode",
5563 .description = "Enable CU wavefront execution mode",
5664 .dependencies = &[_]*const Feature {
5765 },
......@@ -59,6 +67,7 @@ pub const feature_cumode = Feature{
5967
6068pub const feature_dlInsts = Feature{
6169 .name = "dl-insts",
70 .llvm_name = "dl-insts",
6271 .description = "Has v_fmac_f32 and v_xnor_b32 instructions",
6372 .dependencies = &[_]*const Feature {
6473 },
......@@ -66,6 +75,7 @@ pub const feature_dlInsts = Feature{
6675
6776pub const feature_dpp = Feature{
6877 .name = "dpp",
78 .llvm_name = "dpp",
6979 .description = "Support DPP (Data Parallel Primitives) extension",
7080 .dependencies = &[_]*const Feature {
7181 },
......@@ -73,6 +83,7 @@ pub const feature_dpp = Feature{
7383
7484pub const feature_dpp8 = Feature{
7585 .name = "dpp8",
86 .llvm_name = "dpp8",
7687 .description = "Support DPP8 (Data Parallel Primitives) extension",
7788 .dependencies = &[_]*const Feature {
7889 },
......@@ -80,6 +91,7 @@ pub const feature_dpp8 = Feature{
8091
8192pub const feature_noSramEccSupport = Feature{
8293 .name = "no-sram-ecc-support",
94 .llvm_name = "no-sram-ecc-support",
8395 .description = "Hardware does not support SRAM ECC",
8496 .dependencies = &[_]*const Feature {
8597 },
......@@ -87,6 +99,7 @@ pub const feature_noSramEccSupport = Feature{
8799
88100pub const feature_noXnackSupport = Feature{
89101 .name = "no-xnack-support",
102 .llvm_name = "no-xnack-support",
90103 .description = "Hardware does not support XNACK",
91104 .dependencies = &[_]*const Feature {
92105 },
......@@ -94,6 +107,7 @@ pub const feature_noXnackSupport = Feature{
94107
95108pub const feature_dot1Insts = Feature{
96109 .name = "dot1-insts",
110 .llvm_name = "dot1-insts",
97111 .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",
98112 .dependencies = &[_]*const Feature {
99113 },
......@@ -101,6 +115,7 @@ pub const feature_dot1Insts = Feature{
101115
102116pub const feature_dot2Insts = Feature{
103117 .name = "dot2-insts",
118 .llvm_name = "dot2-insts",
104119 .description = "Has v_dot2_f32_f16, v_dot2_i32_i16, v_dot2_u32_u16, v_dot4_u32_u8, v_dot8_u32_u4 instructions",
105120 .dependencies = &[_]*const Feature {
106121 },
......@@ -108,6 +123,7 @@ pub const feature_dot2Insts = Feature{
108123
109124pub const feature_dot3Insts = Feature{
110125 .name = "dot3-insts",
126 .llvm_name = "dot3-insts",
111127 .description = "Has v_dot8c_i32_i4 instruction",
112128 .dependencies = &[_]*const Feature {
113129 },
......@@ -115,6 +131,7 @@ pub const feature_dot3Insts = Feature{
115131
116132pub const feature_dot4Insts = Feature{
117133 .name = "dot4-insts",
134 .llvm_name = "dot4-insts",
118135 .description = "Has v_dot2c_i32_i16 instruction",
119136 .dependencies = &[_]*const Feature {
120137 },
......@@ -122,6 +139,7 @@ pub const feature_dot4Insts = Feature{
122139
123140pub const feature_dot5Insts = Feature{
124141 .name = "dot5-insts",
142 .llvm_name = "dot5-insts",
125143 .description = "Has v_dot2c_f32_f16 instruction",
126144 .dependencies = &[_]*const Feature {
127145 },
......@@ -129,6 +147,7 @@ pub const feature_dot5Insts = Feature{
129147
130148pub const feature_dot6Insts = Feature{
131149 .name = "dot6-insts",
150 .llvm_name = "dot6-insts",
132151 .description = "Has v_dot4c_i32_i8 instruction",
133152 .dependencies = &[_]*const Feature {
134153 },
......@@ -136,6 +155,7 @@ pub const feature_dot6Insts = Feature{
136155
137156pub const feature_DumpCode = Feature{
138157 .name = "DumpCode",
158 .llvm_name = "DumpCode",
139159 .description = "Dump MachineInstrs in the CodeEmitter",
140160 .dependencies = &[_]*const Feature {
141161 },
......@@ -143,6 +163,7 @@ pub const feature_DumpCode = Feature{
143163
144164pub const feature_dumpcode = Feature{
145165 .name = "dumpcode",
166 .llvm_name = "dumpcode",
146167 .description = "Dump MachineInstrs in the CodeEmitter",
147168 .dependencies = &[_]*const Feature {
148169 },
......@@ -150,6 +171,7 @@ pub const feature_dumpcode = Feature{
150171
151172pub const feature_enableDs128 = Feature{
152173 .name = "enable-ds128",
174 .llvm_name = "enable-ds128",
153175 .description = "Use ds_{read|write}_b128",
154176 .dependencies = &[_]*const Feature {
155177 },
......@@ -157,6 +179,7 @@ pub const feature_enableDs128 = Feature{
157179
158180pub const feature_loadStoreOpt = Feature{
159181 .name = "load-store-opt",
182 .llvm_name = "load-store-opt",
160183 .description = "Enable SI load/store optimizer pass",
161184 .dependencies = &[_]*const Feature {
162185 },
......@@ -164,6 +187,7 @@ pub const feature_loadStoreOpt = Feature{
164187
165188pub const feature_enablePrtStrictNull = Feature{
166189 .name = "enable-prt-strict-null",
190 .llvm_name = "enable-prt-strict-null",
167191 .description = "Enable zeroing of result registers for sparse texture fetches",
168192 .dependencies = &[_]*const Feature {
169193 },
......@@ -171,6 +195,7 @@ pub const feature_enablePrtStrictNull = Feature{
171195
172196pub const feature_siScheduler = Feature{
173197 .name = "si-scheduler",
198 .llvm_name = "si-scheduler",
174199 .description = "Enable SI Machine Scheduler",
175200 .dependencies = &[_]*const Feature {
176201 },
......@@ -178,6 +203,7 @@ pub const feature_siScheduler = Feature{
178203
179204pub const feature_unsafeDsOffsetFolding = Feature{
180205 .name = "unsafe-ds-offset-folding",
206 .llvm_name = "unsafe-ds-offset-folding",
181207 .description = "Force using DS instruction immediate offsets on SI",
182208 .dependencies = &[_]*const Feature {
183209 },
......@@ -185,6 +211,7 @@ pub const feature_unsafeDsOffsetFolding = Feature{
185211
186212pub const feature_fmaf = Feature{
187213 .name = "fmaf",
214 .llvm_name = "fmaf",
188215 .description = "Enable single precision FMA (not as fast as mul+add, but fused)",
189216 .dependencies = &[_]*const Feature {
190217 },
......@@ -192,6 +219,7 @@ pub const feature_fmaf = Feature{
192219
193220pub const feature_fp16Denormals = Feature{
194221 .name = "fp16-denormals",
222 .llvm_name = "fp16-denormals",
195223 .description = "Enable half precision denormal handling",
196224 .dependencies = &[_]*const Feature {
197225 &feature_fp64,
......@@ -200,6 +228,7 @@ pub const feature_fp16Denormals = Feature{
200228
201229pub const feature_fp32Denormals = Feature{
202230 .name = "fp32-denormals",
231 .llvm_name = "fp32-denormals",
203232 .description = "Enable single precision denormal handling",
204233 .dependencies = &[_]*const Feature {
205234 },
......@@ -207,6 +236,7 @@ pub const feature_fp32Denormals = Feature{
207236
208237pub const feature_fp64 = Feature{
209238 .name = "fp64",
239 .llvm_name = "fp64",
210240 .description = "Enable double precision operations",
211241 .dependencies = &[_]*const Feature {
212242 },
......@@ -214,6 +244,7 @@ pub const feature_fp64 = Feature{
214244
215245pub const feature_fp64Denormals = Feature{
216246 .name = "fp64-denormals",
247 .llvm_name = "fp64-denormals",
217248 .description = "Enable double and half precision denormal handling",
218249 .dependencies = &[_]*const Feature {
219250 &feature_fp64,
......@@ -222,6 +253,7 @@ pub const feature_fp64Denormals = Feature{
222253
223254pub const feature_fp64Fp16Denormals = Feature{
224255 .name = "fp64-fp16-denormals",
256 .llvm_name = "fp64-fp16-denormals",
225257 .description = "Enable double and half precision denormal handling",
226258 .dependencies = &[_]*const Feature {
227259 &feature_fp64,
......@@ -230,6 +262,7 @@ pub const feature_fp64Fp16Denormals = Feature{
230262
231263pub const feature_fpExceptions = Feature{
232264 .name = "fp-exceptions",
265 .llvm_name = "fp-exceptions",
233266 .description = "Enable floating point exceptions",
234267 .dependencies = &[_]*const Feature {
235268 },
......@@ -237,6 +270,7 @@ pub const feature_fpExceptions = Feature{
237270
238271pub const feature_fastFmaf = Feature{
239272 .name = "fast-fmaf",
273 .llvm_name = "fast-fmaf",
240274 .description = "Assuming f32 fma is at least as fast as mul + add",
241275 .dependencies = &[_]*const Feature {
242276 },
......@@ -244,6 +278,7 @@ pub const feature_fastFmaf = Feature{
244278
245279pub const feature_flatAddressSpace = Feature{
246280 .name = "flat-address-space",
281 .llvm_name = "flat-address-space",
247282 .description = "Support flat address space",
248283 .dependencies = &[_]*const Feature {
249284 },
......@@ -251,6 +286,7 @@ pub const feature_flatAddressSpace = Feature{
251286
252287pub const feature_flatForGlobal = Feature{
253288 .name = "flat-for-global",
289 .llvm_name = "flat-for-global",
254290 .description = "Force to generate flat instruction for global",
255291 .dependencies = &[_]*const Feature {
256292 },
......@@ -258,6 +294,7 @@ pub const feature_flatForGlobal = Feature{
258294
259295pub const feature_flatGlobalInsts = Feature{
260296 .name = "flat-global-insts",
297 .llvm_name = "flat-global-insts",
261298 .description = "Have global_* flat memory instructions",
262299 .dependencies = &[_]*const Feature {
263300 },
......@@ -265,6 +302,7 @@ pub const feature_flatGlobalInsts = Feature{
265302
266303pub const feature_flatInstOffsets = Feature{
267304 .name = "flat-inst-offsets",
305 .llvm_name = "flat-inst-offsets",
268306 .description = "Flat instructions have immediate offset addressing mode",
269307 .dependencies = &[_]*const Feature {
270308 },
......@@ -272,6 +310,7 @@ pub const feature_flatInstOffsets = Feature{
272310
273311pub const feature_flatScratchInsts = Feature{
274312 .name = "flat-scratch-insts",
313 .llvm_name = "flat-scratch-insts",
275314 .description = "Have scratch_* flat memory instructions",
276315 .dependencies = &[_]*const Feature {
277316 },
......@@ -279,6 +318,7 @@ pub const feature_flatScratchInsts = Feature{
279318
280319pub const feature_flatSegmentOffsetBug = Feature{
281320 .name = "flat-segment-offset-bug",
321 .llvm_name = "flat-segment-offset-bug",
282322 .description = "GFX10 bug, inst_offset ignored in flat segment",
283323 .dependencies = &[_]*const Feature {
284324 },
......@@ -286,6 +326,7 @@ pub const feature_flatSegmentOffsetBug = Feature{
286326
287327pub const feature_fmaMixInsts = Feature{
288328 .name = "fma-mix-insts",
329 .llvm_name = "fma-mix-insts",
289330 .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",
290331 .dependencies = &[_]*const Feature {
291332 },
......@@ -293,6 +334,7 @@ pub const feature_fmaMixInsts = Feature{
293334
294335pub const feature_gcn3Encoding = Feature{
295336 .name = "gcn3-encoding",
337 .llvm_name = "gcn3-encoding",
296338 .description = "Encoding format for VI",
297339 .dependencies = &[_]*const Feature {
298340 },
......@@ -300,6 +342,7 @@ pub const feature_gcn3Encoding = Feature{
300342
301343pub const feature_gfx7Gfx8Gfx9Insts = Feature{
302344 .name = "gfx7-gfx8-gfx9-insts",
345 .llvm_name = "gfx7-gfx8-gfx9-insts",
303346 .description = "Instructions shared in GFX7, GFX8, GFX9",
304347 .dependencies = &[_]*const Feature {
305348 },
......@@ -307,6 +350,7 @@ pub const feature_gfx7Gfx8Gfx9Insts = Feature{
307350
308351pub const feature_gfx8Insts = Feature{
309352 .name = "gfx8-insts",
353 .llvm_name = "gfx8-insts",
310354 .description = "Additional instructions for GFX8+",
311355 .dependencies = &[_]*const Feature {
312356 },
......@@ -314,6 +358,7 @@ pub const feature_gfx8Insts = Feature{
314358
315359pub const feature_gfx9Insts = Feature{
316360 .name = "gfx9-insts",
361 .llvm_name = "gfx9-insts",
317362 .description = "Additional instructions for GFX9+",
318363 .dependencies = &[_]*const Feature {
319364 },
......@@ -321,6 +366,7 @@ pub const feature_gfx9Insts = Feature{
321366
322367pub const feature_gfx10Insts = Feature{
323368 .name = "gfx10-insts",
369 .llvm_name = "gfx10-insts",
324370 .description = "Additional instructions for GFX10+",
325371 .dependencies = &[_]*const Feature {
326372 },
......@@ -328,6 +374,7 @@ pub const feature_gfx10Insts = Feature{
328374
329375pub const feature_instFwdPrefetchBug = Feature{
330376 .name = "inst-fwd-prefetch-bug",
377 .llvm_name = "inst-fwd-prefetch-bug",
331378 .description = "S_INST_PREFETCH instruction causes shader to hang",
332379 .dependencies = &[_]*const Feature {
333380 },
......@@ -335,6 +382,7 @@ pub const feature_instFwdPrefetchBug = Feature{
335382
336383pub const feature_intClampInsts = Feature{
337384 .name = "int-clamp-insts",
385 .llvm_name = "int-clamp-insts",
338386 .description = "Support clamp for integer destination",
339387 .dependencies = &[_]*const Feature {
340388 },
......@@ -342,6 +390,7 @@ pub const feature_intClampInsts = Feature{
342390
343391pub const feature_inv2piInlineImm = Feature{
344392 .name = "inv-2pi-inline-imm",
393 .llvm_name = "inv-2pi-inline-imm",
345394 .description = "Has 1 / (2 * pi) as inline immediate",
346395 .dependencies = &[_]*const Feature {
347396 },
......@@ -349,6 +398,7 @@ pub const feature_inv2piInlineImm = Feature{
349398
350399pub const feature_ldsbankcount16 = Feature{
351400 .name = "ldsbankcount16",
401 .llvm_name = "ldsbankcount16",
352402 .description = "The number of LDS banks per compute unit.",
353403 .dependencies = &[_]*const Feature {
354404 },
......@@ -356,6 +406,7 @@ pub const feature_ldsbankcount16 = Feature{
356406
357407pub const feature_ldsbankcount32 = Feature{
358408 .name = "ldsbankcount32",
409 .llvm_name = "ldsbankcount32",
359410 .description = "The number of LDS banks per compute unit.",
360411 .dependencies = &[_]*const Feature {
361412 },
......@@ -363,6 +414,7 @@ pub const feature_ldsbankcount32 = Feature{
363414
364415pub const feature_ldsBranchVmemWarHazard = Feature{
365416 .name = "lds-branch-vmem-war-hazard",
417 .llvm_name = "lds-branch-vmem-war-hazard",
366418 .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",
367419 .dependencies = &[_]*const Feature {
368420 },
......@@ -370,6 +422,7 @@ pub const feature_ldsBranchVmemWarHazard = Feature{
370422
371423pub const feature_ldsMisalignedBug = Feature{
372424 .name = "lds-misaligned-bug",
425 .llvm_name = "lds-misaligned-bug",
373426 .description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode",
374427 .dependencies = &[_]*const Feature {
375428 },
......@@ -377,6 +430,7 @@ pub const feature_ldsMisalignedBug = Feature{
377430
378431pub const feature_localmemorysize0 = Feature{
379432 .name = "localmemorysize0",
433 .llvm_name = "localmemorysize0",
380434 .description = "The size of local memory in bytes",
381435 .dependencies = &[_]*const Feature {
382436 },
......@@ -384,6 +438,7 @@ pub const feature_localmemorysize0 = Feature{
384438
385439pub const feature_localmemorysize32768 = Feature{
386440 .name = "localmemorysize32768",
441 .llvm_name = "localmemorysize32768",
387442 .description = "The size of local memory in bytes",
388443 .dependencies = &[_]*const Feature {
389444 },
......@@ -391,6 +446,7 @@ pub const feature_localmemorysize32768 = Feature{
391446
392447pub const feature_localmemorysize65536 = Feature{
393448 .name = "localmemorysize65536",
449 .llvm_name = "localmemorysize65536",
394450 .description = "The size of local memory in bytes",
395451 .dependencies = &[_]*const Feature {
396452 },
......@@ -398,6 +454,7 @@ pub const feature_localmemorysize65536 = Feature{
398454
399455pub const feature_maiInsts = Feature{
400456 .name = "mai-insts",
457 .llvm_name = "mai-insts",
401458 .description = "Has mAI instructions",
402459 .dependencies = &[_]*const Feature {
403460 },
......@@ -405,6 +462,7 @@ pub const feature_maiInsts = Feature{
405462
406463pub const feature_mfmaInlineLiteralBug = Feature{
407464 .name = "mfma-inline-literal-bug",
465 .llvm_name = "mfma-inline-literal-bug",
408466 .description = "MFMA cannot use inline literal as SrcC",
409467 .dependencies = &[_]*const Feature {
410468 },
......@@ -412,6 +470,7 @@ pub const feature_mfmaInlineLiteralBug = Feature{
412470
413471pub const feature_mimgR128 = Feature{
414472 .name = "mimg-r128",
473 .llvm_name = "mimg-r128",
415474 .description = "Support 128-bit texture resources",
416475 .dependencies = &[_]*const Feature {
417476 },
......@@ -419,6 +478,7 @@ pub const feature_mimgR128 = Feature{
419478
420479pub const feature_madMixInsts = Feature{
421480 .name = "mad-mix-insts",
481 .llvm_name = "mad-mix-insts",
422482 .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",
423483 .dependencies = &[_]*const Feature {
424484 },
......@@ -426,6 +486,7 @@ pub const feature_madMixInsts = Feature{
426486
427487pub const feature_maxPrivateElementSize4 = Feature{
428488 .name = "max-private-element-size-4",
489 .llvm_name = "max-private-element-size-4",
429490 .description = "Maximum private access size may be 4",
430491 .dependencies = &[_]*const Feature {
431492 },
......@@ -433,6 +494,7 @@ pub const feature_maxPrivateElementSize4 = Feature{
433494
434495pub const feature_maxPrivateElementSize8 = Feature{
435496 .name = "max-private-element-size-8",
497 .llvm_name = "max-private-element-size-8",
436498 .description = "Maximum private access size may be 8",
437499 .dependencies = &[_]*const Feature {
438500 },
......@@ -440,6 +502,7 @@ pub const feature_maxPrivateElementSize8 = Feature{
440502
441503pub const feature_maxPrivateElementSize16 = Feature{
442504 .name = "max-private-element-size-16",
505 .llvm_name = "max-private-element-size-16",
443506 .description = "Maximum private access size may be 16",
444507 .dependencies = &[_]*const Feature {
445508 },
......@@ -447,6 +510,7 @@ pub const feature_maxPrivateElementSize16 = Feature{
447510
448511pub const feature_movrel = Feature{
449512 .name = "movrel",
513 .llvm_name = "movrel",
450514 .description = "Has v_movrel*_b32 instructions",
451515 .dependencies = &[_]*const Feature {
452516 },
......@@ -454,6 +518,7 @@ pub const feature_movrel = Feature{
454518
455519pub const feature_nsaEncoding = Feature{
456520 .name = "nsa-encoding",
521 .llvm_name = "nsa-encoding",
457522 .description = "Support NSA encoding for image instructions",
458523 .dependencies = &[_]*const Feature {
459524 },
......@@ -461,6 +526,7 @@ pub const feature_nsaEncoding = Feature{
461526
462527pub const feature_nsaToVmemBug = Feature{
463528 .name = "nsa-to-vmem-bug",
529 .llvm_name = "nsa-to-vmem-bug",
464530 .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",
465531 .dependencies = &[_]*const Feature {
466532 },
......@@ -468,6 +534,7 @@ pub const feature_nsaToVmemBug = Feature{
468534
469535pub const feature_noDataDepHazard = Feature{
470536 .name = "no-data-dep-hazard",
537 .llvm_name = "no-data-dep-hazard",
471538 .description = "Does not need SW waitstates",
472539 .dependencies = &[_]*const Feature {
473540 },
......@@ -475,6 +542,7 @@ pub const feature_noDataDepHazard = Feature{
475542
476543pub const feature_noSdstCmpx = Feature{
477544 .name = "no-sdst-cmpx",
545 .llvm_name = "no-sdst-cmpx",
478546 .description = "V_CMPX does not write VCC/SGPR in addition to EXEC",
479547 .dependencies = &[_]*const Feature {
480548 },
......@@ -482,6 +550,7 @@ pub const feature_noSdstCmpx = Feature{
482550
483551pub const feature_offset3fBug = Feature{
484552 .name = "offset-3f-bug",
553 .llvm_name = "offset-3f-bug",
485554 .description = "Branch offset of 3f hardware bug",
486555 .dependencies = &[_]*const Feature {
487556 },
......@@ -489,6 +558,7 @@ pub const feature_offset3fBug = Feature{
489558
490559pub const feature_pkFmacF16Inst = Feature{
491560 .name = "pk-fmac-f16-inst",
561 .llvm_name = "pk-fmac-f16-inst",
492562 .description = "Has v_pk_fmac_f16 instruction",
493563 .dependencies = &[_]*const Feature {
494564 },
......@@ -496,6 +566,7 @@ pub const feature_pkFmacF16Inst = Feature{
496566
497567pub const feature_promoteAlloca = Feature{
498568 .name = "promote-alloca",
569 .llvm_name = "promote-alloca",
499570 .description = "Enable promote alloca pass",
500571 .dependencies = &[_]*const Feature {
501572 },
......@@ -503,6 +574,7 @@ pub const feature_promoteAlloca = Feature{
503574
504575pub const feature_r128A16 = Feature{
505576 .name = "r128-a16",
577 .llvm_name = "r128-a16",
506578 .description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9",
507579 .dependencies = &[_]*const Feature {
508580 },
......@@ -510,6 +582,7 @@ pub const feature_r128A16 = Feature{
510582
511583pub const feature_registerBanking = Feature{
512584 .name = "register-banking",
585 .llvm_name = "register-banking",
513586 .description = "Has register banking",
514587 .dependencies = &[_]*const Feature {
515588 },
......@@ -517,6 +590,7 @@ pub const feature_registerBanking = Feature{
517590
518591pub const feature_sdwa = Feature{
519592 .name = "sdwa",
593 .llvm_name = "sdwa",
520594 .description = "Support SDWA (Sub-DWORD Addressing) extension",
521595 .dependencies = &[_]*const Feature {
522596 },
......@@ -524,6 +598,7 @@ pub const feature_sdwa = Feature{
524598
525599pub const feature_sdwaMav = Feature{
526600 .name = "sdwa-mav",
601 .llvm_name = "sdwa-mav",
527602 .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",
528603 .dependencies = &[_]*const Feature {
529604 },
......@@ -531,6 +606,7 @@ pub const feature_sdwaMav = Feature{
531606
532607pub const feature_sdwaOmod = Feature{
533608 .name = "sdwa-omod",
609 .llvm_name = "sdwa-omod",
534610 .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",
535611 .dependencies = &[_]*const Feature {
536612 },
......@@ -538,6 +614,7 @@ pub const feature_sdwaOmod = Feature{
538614
539615pub const feature_sdwaOutModsVopc = Feature{
540616 .name = "sdwa-out-mods-vopc",
617 .llvm_name = "sdwa-out-mods-vopc",
541618 .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",
542619 .dependencies = &[_]*const Feature {
543620 },
......@@ -545,6 +622,7 @@ pub const feature_sdwaOutModsVopc = Feature{
545622
546623pub const feature_sdwaScalar = Feature{
547624 .name = "sdwa-scalar",
625 .llvm_name = "sdwa-scalar",
548626 .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",
549627 .dependencies = &[_]*const Feature {
550628 },
......@@ -552,6 +630,7 @@ pub const feature_sdwaScalar = Feature{
552630
553631pub const feature_sdwaSdst = Feature{
554632 .name = "sdwa-sdst",
633 .llvm_name = "sdwa-sdst",
555634 .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",
556635 .dependencies = &[_]*const Feature {
557636 },
......@@ -559,6 +638,7 @@ pub const feature_sdwaSdst = Feature{
559638
560639pub const feature_sgprInitBug = Feature{
561640 .name = "sgpr-init-bug",
641 .llvm_name = "sgpr-init-bug",
562642 .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",
563643 .dependencies = &[_]*const Feature {
564644 },
......@@ -566,6 +646,7 @@ pub const feature_sgprInitBug = Feature{
566646
567647pub const feature_smemToVectorWriteHazard = Feature{
568648 .name = "smem-to-vector-write-hazard",
649 .llvm_name = "smem-to-vector-write-hazard",
569650 .description = "s_load_dword followed by v_cmp page faults",
570651 .dependencies = &[_]*const Feature {
571652 },
......@@ -573,6 +654,7 @@ pub const feature_smemToVectorWriteHazard = Feature{
573654
574655pub const feature_sMemrealtime = Feature{
575656 .name = "s-memrealtime",
657 .llvm_name = "s-memrealtime",
576658 .description = "Has s_memrealtime instruction",
577659 .dependencies = &[_]*const Feature {
578660 },
......@@ -580,6 +662,7 @@ pub const feature_sMemrealtime = Feature{
580662
581663pub const feature_sramEcc = Feature{
582664 .name = "sram-ecc",
665 .llvm_name = "sram-ecc",
583666 .description = "Enable SRAM ECC",
584667 .dependencies = &[_]*const Feature {
585668 },
......@@ -587,6 +670,7 @@ pub const feature_sramEcc = Feature{
587670
588671pub const feature_scalarAtomics = Feature{
589672 .name = "scalar-atomics",
673 .llvm_name = "scalar-atomics",
590674 .description = "Has atomic scalar memory instructions",
591675 .dependencies = &[_]*const Feature {
592676 },
......@@ -594,6 +678,7 @@ pub const feature_scalarAtomics = Feature{
594678
595679pub const feature_scalarFlatScratchInsts = Feature{
596680 .name = "scalar-flat-scratch-insts",
681 .llvm_name = "scalar-flat-scratch-insts",
597682 .description = "Have s_scratch_* flat memory instructions",
598683 .dependencies = &[_]*const Feature {
599684 },
......@@ -601,6 +686,7 @@ pub const feature_scalarFlatScratchInsts = Feature{
601686
602687pub const feature_scalarStores = Feature{
603688 .name = "scalar-stores",
689 .llvm_name = "scalar-stores",
604690 .description = "Has store scalar memory instructions",
605691 .dependencies = &[_]*const Feature {
606692 },
......@@ -608,6 +694,7 @@ pub const feature_scalarStores = Feature{
608694
609695pub const feature_trapHandler = Feature{
610696 .name = "trap-handler",
697 .llvm_name = "trap-handler",
611698 .description = "Trap handler support",
612699 .dependencies = &[_]*const Feature {
613700 },
......@@ -615,6 +702,7 @@ pub const feature_trapHandler = Feature{
615702
616703pub const feature_trigReducedRange = Feature{
617704 .name = "trig-reduced-range",
705 .llvm_name = "trig-reduced-range",
618706 .description = "Requires use of fract on arguments to trig instructions",
619707 .dependencies = &[_]*const Feature {
620708 },
......@@ -622,6 +710,7 @@ pub const feature_trigReducedRange = Feature{
622710
623711pub const feature_unalignedBufferAccess = Feature{
624712 .name = "unaligned-buffer-access",
713 .llvm_name = "unaligned-buffer-access",
625714 .description = "Support unaligned global loads and stores",
626715 .dependencies = &[_]*const Feature {
627716 },
......@@ -629,6 +718,7 @@ pub const feature_unalignedBufferAccess = Feature{
629718
630719pub const feature_unalignedScratchAccess = Feature{
631720 .name = "unaligned-scratch-access",
721 .llvm_name = "unaligned-scratch-access",
632722 .description = "Support unaligned scratch loads and stores",
633723 .dependencies = &[_]*const Feature {
634724 },
......@@ -636,6 +726,7 @@ pub const feature_unalignedScratchAccess = Feature{
636726
637727pub const feature_unpackedD16Vmem = Feature{
638728 .name = "unpacked-d16-vmem",
729 .llvm_name = "unpacked-d16-vmem",
639730 .description = "Has unpacked d16 vmem instructions",
640731 .dependencies = &[_]*const Feature {
641732 },
......@@ -643,6 +734,7 @@ pub const feature_unpackedD16Vmem = Feature{
643734
644735pub const feature_vgprIndexMode = Feature{
645736 .name = "vgpr-index-mode",
737 .llvm_name = "vgpr-index-mode",
646738 .description = "Has VGPR mode register indexing",
647739 .dependencies = &[_]*const Feature {
648740 },
......@@ -650,6 +742,7 @@ pub const feature_vgprIndexMode = Feature{
650742
651743pub const feature_vmemToScalarWriteHazard = Feature{
652744 .name = "vmem-to-scalar-write-hazard",
745 .llvm_name = "vmem-to-scalar-write-hazard",
653746 .description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.",
654747 .dependencies = &[_]*const Feature {
655748 },
......@@ -657,6 +750,7 @@ pub const feature_vmemToScalarWriteHazard = Feature{
657750
658751pub const feature_vop3Literal = Feature{
659752 .name = "vop3-literal",
753 .llvm_name = "vop3-literal",
660754 .description = "Can use one literal in VOP3",
661755 .dependencies = &[_]*const Feature {
662756 },
......@@ -664,6 +758,7 @@ pub const feature_vop3Literal = Feature{
664758
665759pub const feature_vop3p = Feature{
666760 .name = "vop3p",
761 .llvm_name = "vop3p",
667762 .description = "Has VOP3P packed instructions",
668763 .dependencies = &[_]*const Feature {
669764 },
......@@ -671,6 +766,7 @@ pub const feature_vop3p = Feature{
671766
672767pub const feature_vcmpxExecWarHazard = Feature{
673768 .name = "vcmpx-exec-war-hazard",
769 .llvm_name = "vcmpx-exec-war-hazard",
674770 .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",
675771 .dependencies = &[_]*const Feature {
676772 },
......@@ -678,6 +774,7 @@ pub const feature_vcmpxExecWarHazard = Feature{
678774
679775pub const feature_vcmpxPermlaneHazard = Feature{
680776 .name = "vcmpx-permlane-hazard",
777 .llvm_name = "vcmpx-permlane-hazard",
681778 .description = "TODO: describe me",
682779 .dependencies = &[_]*const Feature {
683780 },
......@@ -685,6 +782,7 @@ pub const feature_vcmpxPermlaneHazard = Feature{
685782
686783pub const feature_vscnt = Feature{
687784 .name = "vscnt",
785 .llvm_name = "vscnt",
688786 .description = "Has separate store vscnt counter",
689787 .dependencies = &[_]*const Feature {
690788 },
......@@ -692,6 +790,7 @@ pub const feature_vscnt = Feature{
692790
693791pub const feature_wavefrontsize16 = Feature{
694792 .name = "wavefrontsize16",
793 .llvm_name = "wavefrontsize16",
695794 .description = "The number of threads per wavefront",
696795 .dependencies = &[_]*const Feature {
697796 },
......@@ -699,6 +798,7 @@ pub const feature_wavefrontsize16 = Feature{
699798
700799pub const feature_wavefrontsize32 = Feature{
701800 .name = "wavefrontsize32",
801 .llvm_name = "wavefrontsize32",
702802 .description = "The number of threads per wavefront",
703803 .dependencies = &[_]*const Feature {
704804 },
......@@ -706,6 +806,7 @@ pub const feature_wavefrontsize32 = Feature{
706806
707807pub const feature_wavefrontsize64 = Feature{
708808 .name = "wavefrontsize64",
809 .llvm_name = "wavefrontsize64",
709810 .description = "The number of threads per wavefront",
710811 .dependencies = &[_]*const Feature {
711812 },
......@@ -713,6 +814,7 @@ pub const feature_wavefrontsize64 = Feature{
713814
714815pub const feature_xnack = Feature{
715816 .name = "xnack",
817 .llvm_name = "xnack",
716818 .description = "Enable XNACK support",
717819 .dependencies = &[_]*const Feature {
718820 },
......@@ -720,6 +822,7 @@ pub const feature_xnack = Feature{
720822
721823pub const feature_halfRate64Ops = Feature{
722824 .name = "half-rate-64-ops",
825 .llvm_name = "half-rate-64-ops",
723826 .description = "Most fp64 instructions are half rate instead of quarter",
724827 .dependencies = &[_]*const Feature {
725828 },
......@@ -838,16 +941,16 @@ pub const cpu_bonaire = Cpu{
838941 &feature_codeObjectV3,
839942 &feature_noXnackSupport,
840943 &feature_ldsbankcount32,
944 &feature_movrel,
841945 &feature_flatAddressSpace,
842 &feature_fp64,
843 &feature_mimgR128,
946 &feature_trigReducedRange,
844947 &feature_gfx7Gfx8Gfx9Insts,
845 &feature_movrel,
948 &feature_wavefrontsize64,
949 &feature_mimgR128,
950 &feature_noSramEccSupport,
846951 &feature_localmemorysize65536,
952 &feature_fp64,
847953 &feature_ciInsts,
848 &feature_noSramEccSupport,
849 &feature_wavefrontsize64,
850 &feature_trigReducedRange,
851954 },
852955};
853956
......@@ -859,28 +962,28 @@ pub const cpu_carrizo = Cpu{
859962 &feature_fastFmaf,
860963 &feature_ldsbankcount32,
861964 &feature_unpackedD16Vmem,
862 &feature_fp64,
863965 &feature_sMemrealtime,
864 &feature_BitInsts16,
865 &feature_wavefrontsize64,
866 &feature_sdwa,
966 &feature_scalarStores,
867967 &feature_flatAddressSpace,
868 &feature_sdwaMav,
869 &feature_mimgR128,
870 &feature_ciInsts,
871 &feature_noSramEccSupport,
872 &feature_inv2piInlineImm,
873968 &feature_vgprIndexMode,
874 &feature_gcn3Encoding,
875 &feature_gfx8Insts,
876 &feature_scalarStores,
969 &feature_wavefrontsize64,
970 &feature_mimgR128,
877971 &feature_intClampInsts,
972 &feature_dpp,
878973 &feature_movrel,
974 &feature_gcn3Encoding,
975 &feature_gfx8Insts,
976 &feature_trigReducedRange,
977 &feature_gfx7Gfx8Gfx9Insts,
978 &feature_sdwaMav,
979 &feature_sdwa,
879980 &feature_localmemorysize65536,
981 &feature_BitInsts16,
880982 &feature_sdwaOutModsVopc,
881 &feature_dpp,
882 &feature_gfx7Gfx8Gfx9Insts,
883 &feature_trigReducedRange,
983 &feature_inv2piInlineImm,
984 &feature_noSramEccSupport,
985 &feature_fp64,
986 &feature_ciInsts,
884987 &feature_xnack,
885988 &feature_halfRate64Ops,
886989 },
......@@ -894,28 +997,28 @@ pub const cpu_fiji = Cpu{
894997 &feature_noXnackSupport,
895998 &feature_ldsbankcount32,
896999 &feature_unpackedD16Vmem,
897 &feature_fp64,
8981000 &feature_sMemrealtime,
899 &feature_BitInsts16,
900 &feature_wavefrontsize64,
901 &feature_sdwa,
1001 &feature_scalarStores,
9021002 &feature_flatAddressSpace,
903 &feature_sdwaMav,
904 &feature_mimgR128,
905 &feature_ciInsts,
906 &feature_noSramEccSupport,
907 &feature_inv2piInlineImm,
9081003 &feature_vgprIndexMode,
909 &feature_gcn3Encoding,
910 &feature_gfx8Insts,
911 &feature_scalarStores,
1004 &feature_wavefrontsize64,
1005 &feature_mimgR128,
9121006 &feature_intClampInsts,
1007 &feature_dpp,
9131008 &feature_movrel,
1009 &feature_gcn3Encoding,
1010 &feature_gfx8Insts,
1011 &feature_trigReducedRange,
1012 &feature_gfx7Gfx8Gfx9Insts,
1013 &feature_sdwaMav,
1014 &feature_sdwa,
9141015 &feature_localmemorysize65536,
1016 &feature_BitInsts16,
9151017 &feature_sdwaOutModsVopc,
916 &feature_dpp,
917 &feature_gfx7Gfx8Gfx9Insts,
918 &feature_trigReducedRange,
1018 &feature_inv2piInlineImm,
1019 &feature_noSramEccSupport,
1020 &feature_fp64,
1021 &feature_ciInsts,
9191022 },
9201023};
9211024
......@@ -944,40 +1047,40 @@ pub const cpu_gfx1010 = Cpu{
9441047 &feature_dlInsts,
9451048 &feature_noXnackSupport,
9461049 &feature_flatSegmentOffsetBug,
947 &feature_noSdstCmpx,
948 &feature_flatScratchInsts,
949 &feature_fp64,
1050 &feature_sdwaOmod,
9501051 &feature_sMemrealtime,
951 &feature_addNoCarryInsts,
952 &feature_vop3p,
953 &feature_fastFmaf,
954 &feature_BitInsts16,
955 &feature_sdwa,
956 &feature_gfx9Insts,
9571052 &feature_flatAddressSpace,
958 &feature_vop3Literal,
959 &feature_apertureRegs,
1053 &feature_gfx9Insts,
1054 &feature_fastFmaf,
1055 &feature_flatScratchInsts,
9601056 &feature_mimgR128,
961 &feature_sdwaScalar,
962 &feature_ciInsts,
963 &feature_noSramEccSupport,
964 &feature_inv2piInlineImm,
965 &feature_gfx8Insts,
1057 &feature_noSdstCmpx,
1058 &feature_sdwaSdst,
1059 &feature_vop3p,
9661060 &feature_intClampInsts,
967 &feature_vscnt,
1061 &feature_dpp,
1062 &feature_registerBanking,
9681063 &feature_movrel,
969 &feature_localmemorysize65536,
970 &feature_gfx10Insts,
1064 &feature_gfx8Insts,
1065 &feature_sdwa,
1066 &feature_noDataDepHazard,
9711067 &feature_flatGlobalInsts,
972 &feature_sdwaOmod,
973 &feature_dpp8,
1068 &feature_gfx10Insts,
1069 &feature_localmemorysize65536,
1070 &feature_BitInsts16,
1071 &feature_addNoCarryInsts,
9741072 &feature_pkFmacF16Inst,
975 &feature_dpp,
976 &feature_sdwaSdst,
9771073 &feature_flatInstOffsets,
9781074 &feature_fmaMixInsts,
979 &feature_registerBanking,
980 &feature_noDataDepHazard,
1075 &feature_sdwaScalar,
1076 &feature_inv2piInlineImm,
1077 &feature_vscnt,
1078 &feature_apertureRegs,
1079 &feature_dpp8,
1080 &feature_noSramEccSupport,
1081 &feature_fp64,
1082 &feature_ciInsts,
1083 &feature_vop3Literal,
9811084 &feature_instFwdPrefetchBug,
9821085 &feature_ldsbankcount32,
9831086 &feature_ldsBranchVmemWarHazard,
......@@ -1008,40 +1111,40 @@ pub const cpu_gfx1011 = Cpu{
10081111 &feature_dot5Insts,
10091112 &feature_dot6Insts,
10101113 &feature_flatSegmentOffsetBug,
1011 &feature_noSdstCmpx,
1012 &feature_flatScratchInsts,
1013 &feature_fp64,
1114 &feature_sdwaOmod,
10141115 &feature_sMemrealtime,
1015 &feature_addNoCarryInsts,
1016 &feature_vop3p,
1017 &feature_fastFmaf,
1018 &feature_BitInsts16,
1019 &feature_sdwa,
1020 &feature_gfx9Insts,
10211116 &feature_flatAddressSpace,
1022 &feature_vop3Literal,
1023 &feature_apertureRegs,
1117 &feature_gfx9Insts,
1118 &feature_fastFmaf,
1119 &feature_flatScratchInsts,
10241120 &feature_mimgR128,
1025 &feature_sdwaScalar,
1026 &feature_ciInsts,
1027 &feature_noSramEccSupport,
1028 &feature_inv2piInlineImm,
1029 &feature_gfx8Insts,
1121 &feature_noSdstCmpx,
1122 &feature_sdwaSdst,
1123 &feature_vop3p,
10301124 &feature_intClampInsts,
1031 &feature_vscnt,
1125 &feature_dpp,
1126 &feature_registerBanking,
10321127 &feature_movrel,
1033 &feature_localmemorysize65536,
1034 &feature_gfx10Insts,
1128 &feature_gfx8Insts,
1129 &feature_sdwa,
1130 &feature_noDataDepHazard,
10351131 &feature_flatGlobalInsts,
1036 &feature_sdwaOmod,
1037 &feature_dpp8,
1132 &feature_gfx10Insts,
1133 &feature_localmemorysize65536,
1134 &feature_BitInsts16,
1135 &feature_addNoCarryInsts,
10381136 &feature_pkFmacF16Inst,
1039 &feature_dpp,
1040 &feature_sdwaSdst,
10411137 &feature_flatInstOffsets,
10421138 &feature_fmaMixInsts,
1043 &feature_registerBanking,
1044 &feature_noDataDepHazard,
1139 &feature_sdwaScalar,
1140 &feature_inv2piInlineImm,
1141 &feature_vscnt,
1142 &feature_apertureRegs,
1143 &feature_dpp8,
1144 &feature_noSramEccSupport,
1145 &feature_fp64,
1146 &feature_ciInsts,
1147 &feature_vop3Literal,
10451148 &feature_instFwdPrefetchBug,
10461149 &feature_ldsbankcount32,
10471150 &feature_ldsBranchVmemWarHazard,
......@@ -1071,40 +1174,40 @@ pub const cpu_gfx1012 = Cpu{
10711174 &feature_dot5Insts,
10721175 &feature_dot6Insts,
10731176 &feature_flatSegmentOffsetBug,
1074 &feature_noSdstCmpx,
1075 &feature_flatScratchInsts,
1076 &feature_fp64,
1177 &feature_sdwaOmod,
10771178 &feature_sMemrealtime,
1078 &feature_addNoCarryInsts,
1079 &feature_vop3p,
1080 &feature_fastFmaf,
1081 &feature_BitInsts16,
1082 &feature_sdwa,
1083 &feature_gfx9Insts,
10841179 &feature_flatAddressSpace,
1085 &feature_vop3Literal,
1086 &feature_apertureRegs,
1180 &feature_gfx9Insts,
1181 &feature_fastFmaf,
1182 &feature_flatScratchInsts,
10871183 &feature_mimgR128,
1088 &feature_sdwaScalar,
1089 &feature_ciInsts,
1090 &feature_noSramEccSupport,
1091 &feature_inv2piInlineImm,
1092 &feature_gfx8Insts,
1184 &feature_noSdstCmpx,
1185 &feature_sdwaSdst,
1186 &feature_vop3p,
10931187 &feature_intClampInsts,
1094 &feature_vscnt,
1188 &feature_dpp,
1189 &feature_registerBanking,
10951190 &feature_movrel,
1096 &feature_localmemorysize65536,
1097 &feature_gfx10Insts,
1191 &feature_gfx8Insts,
1192 &feature_sdwa,
1193 &feature_noDataDepHazard,
10981194 &feature_flatGlobalInsts,
1099 &feature_sdwaOmod,
1100 &feature_dpp8,
1195 &feature_gfx10Insts,
1196 &feature_localmemorysize65536,
1197 &feature_BitInsts16,
1198 &feature_addNoCarryInsts,
11011199 &feature_pkFmacF16Inst,
1102 &feature_dpp,
1103 &feature_sdwaSdst,
11041200 &feature_flatInstOffsets,
11051201 &feature_fmaMixInsts,
1106 &feature_registerBanking,
1107 &feature_noDataDepHazard,
1202 &feature_sdwaScalar,
1203 &feature_inv2piInlineImm,
1204 &feature_vscnt,
1205 &feature_apertureRegs,
1206 &feature_dpp8,
1207 &feature_noSramEccSupport,
1208 &feature_fp64,
1209 &feature_ciInsts,
1210 &feature_vop3Literal,
11081211 &feature_instFwdPrefetchBug,
11091212 &feature_ldsbankcount32,
11101213 &feature_ldsBranchVmemWarHazard,
......@@ -1131,13 +1234,13 @@ pub const cpu_gfx600 = Cpu{
11311234 &feature_noXnackSupport,
11321235 &feature_fastFmaf,
11331236 &feature_ldsbankcount32,
1134 &feature_localmemorysize32768,
1135 &feature_fp64,
1136 &feature_mimgR128,
11371237 &feature_movrel,
1138 &feature_noSramEccSupport,
1139 &feature_wavefrontsize64,
11401238 &feature_trigReducedRange,
1239 &feature_mimgR128,
1240 &feature_localmemorysize32768,
1241 &feature_wavefrontsize64,
1242 &feature_noSramEccSupport,
1243 &feature_fp64,
11411244 &feature_halfRate64Ops,
11421245 },
11431246};
......@@ -1149,13 +1252,13 @@ pub const cpu_gfx601 = Cpu{
11491252 &feature_codeObjectV3,
11501253 &feature_noXnackSupport,
11511254 &feature_ldsbankcount32,
1152 &feature_localmemorysize32768,
1153 &feature_fp64,
1154 &feature_mimgR128,
11551255 &feature_movrel,
1156 &feature_noSramEccSupport,
1157 &feature_wavefrontsize64,
11581256 &feature_trigReducedRange,
1257 &feature_mimgR128,
1258 &feature_localmemorysize32768,
1259 &feature_wavefrontsize64,
1260 &feature_noSramEccSupport,
1261 &feature_fp64,
11591262 },
11601263};
11611264
......@@ -1166,16 +1269,16 @@ pub const cpu_gfx700 = Cpu{
11661269 &feature_codeObjectV3,
11671270 &feature_noXnackSupport,
11681271 &feature_ldsbankcount32,
1272 &feature_movrel,
11691273 &feature_flatAddressSpace,
1170 &feature_fp64,
1171 &feature_mimgR128,
1274 &feature_trigReducedRange,
11721275 &feature_gfx7Gfx8Gfx9Insts,
1173 &feature_movrel,
1276 &feature_wavefrontsize64,
1277 &feature_mimgR128,
1278 &feature_noSramEccSupport,
11741279 &feature_localmemorysize65536,
1280 &feature_fp64,
11751281 &feature_ciInsts,
1176 &feature_noSramEccSupport,
1177 &feature_wavefrontsize64,
1178 &feature_trigReducedRange,
11791282 },
11801283};
11811284
......@@ -1187,16 +1290,16 @@ pub const cpu_gfx701 = Cpu{
11871290 &feature_noXnackSupport,
11881291 &feature_fastFmaf,
11891292 &feature_ldsbankcount32,
1293 &feature_movrel,
11901294 &feature_flatAddressSpace,
1191 &feature_fp64,
1192 &feature_mimgR128,
1295 &feature_trigReducedRange,
11931296 &feature_gfx7Gfx8Gfx9Insts,
1194 &feature_movrel,
1297 &feature_wavefrontsize64,
1298 &feature_mimgR128,
1299 &feature_noSramEccSupport,
11951300 &feature_localmemorysize65536,
1301 &feature_fp64,
11961302 &feature_ciInsts,
1197 &feature_noSramEccSupport,
1198 &feature_wavefrontsize64,
1199 &feature_trigReducedRange,
12001303 &feature_halfRate64Ops,
12011304 },
12021305};
......@@ -1209,16 +1312,16 @@ pub const cpu_gfx702 = Cpu{
12091312 &feature_noXnackSupport,
12101313 &feature_fastFmaf,
12111314 &feature_ldsbankcount16,
1315 &feature_movrel,
12121316 &feature_flatAddressSpace,
1213 &feature_fp64,
1214 &feature_mimgR128,
1317 &feature_trigReducedRange,
12151318 &feature_gfx7Gfx8Gfx9Insts,
1216 &feature_movrel,
1319 &feature_wavefrontsize64,
1320 &feature_mimgR128,
1321 &feature_noSramEccSupport,
12171322 &feature_localmemorysize65536,
1323 &feature_fp64,
12181324 &feature_ciInsts,
1219 &feature_noSramEccSupport,
1220 &feature_wavefrontsize64,
1221 &feature_trigReducedRange,
12221325 },
12231326};
12241327
......@@ -1229,16 +1332,16 @@ pub const cpu_gfx703 = Cpu{
12291332 &feature_codeObjectV3,
12301333 &feature_noXnackSupport,
12311334 &feature_ldsbankcount16,
1335 &feature_movrel,
12321336 &feature_flatAddressSpace,
1233 &feature_fp64,
1234 &feature_mimgR128,
1337 &feature_trigReducedRange,
12351338 &feature_gfx7Gfx8Gfx9Insts,
1236 &feature_movrel,
1339 &feature_wavefrontsize64,
1340 &feature_mimgR128,
1341 &feature_noSramEccSupport,
12371342 &feature_localmemorysize65536,
1343 &feature_fp64,
12381344 &feature_ciInsts,
1239 &feature_noSramEccSupport,
1240 &feature_wavefrontsize64,
1241 &feature_trigReducedRange,
12421345 },
12431346};
12441347
......@@ -1249,16 +1352,16 @@ pub const cpu_gfx704 = Cpu{
12491352 &feature_codeObjectV3,
12501353 &feature_noXnackSupport,
12511354 &feature_ldsbankcount32,
1355 &feature_movrel,
12521356 &feature_flatAddressSpace,
1253 &feature_fp64,
1254 &feature_mimgR128,
1357 &feature_trigReducedRange,
12551358 &feature_gfx7Gfx8Gfx9Insts,
1256 &feature_movrel,
1359 &feature_wavefrontsize64,
1360 &feature_mimgR128,
1361 &feature_noSramEccSupport,
12571362 &feature_localmemorysize65536,
1363 &feature_fp64,
12581364 &feature_ciInsts,
1259 &feature_noSramEccSupport,
1260 &feature_wavefrontsize64,
1261 &feature_trigReducedRange,
12621365 },
12631366};
12641367
......@@ -1270,28 +1373,28 @@ pub const cpu_gfx801 = Cpu{
12701373 &feature_fastFmaf,
12711374 &feature_ldsbankcount32,
12721375 &feature_unpackedD16Vmem,
1273 &feature_fp64,
12741376 &feature_sMemrealtime,
1275 &feature_BitInsts16,
1276 &feature_wavefrontsize64,
1277 &feature_sdwa,
1377 &feature_scalarStores,
12781378 &feature_flatAddressSpace,
1279 &feature_sdwaMav,
1280 &feature_mimgR128,
1281 &feature_ciInsts,
1282 &feature_noSramEccSupport,
1283 &feature_inv2piInlineImm,
12841379 &feature_vgprIndexMode,
1285 &feature_gcn3Encoding,
1286 &feature_gfx8Insts,
1287 &feature_scalarStores,
1380 &feature_wavefrontsize64,
1381 &feature_mimgR128,
12881382 &feature_intClampInsts,
1383 &feature_dpp,
12891384 &feature_movrel,
1385 &feature_gcn3Encoding,
1386 &feature_gfx8Insts,
1387 &feature_trigReducedRange,
1388 &feature_gfx7Gfx8Gfx9Insts,
1389 &feature_sdwaMav,
1390 &feature_sdwa,
12901391 &feature_localmemorysize65536,
1392 &feature_BitInsts16,
12911393 &feature_sdwaOutModsVopc,
1292 &feature_dpp,
1293 &feature_gfx7Gfx8Gfx9Insts,
1294 &feature_trigReducedRange,
1394 &feature_inv2piInlineImm,
1395 &feature_noSramEccSupport,
1396 &feature_fp64,
1397 &feature_ciInsts,
12951398 &feature_xnack,
12961399 &feature_halfRate64Ops,
12971400 },
......@@ -1306,28 +1409,28 @@ pub const cpu_gfx802 = Cpu{
13061409 &feature_ldsbankcount32,
13071410 &feature_sgprInitBug,
13081411 &feature_unpackedD16Vmem,
1309 &feature_fp64,
13101412 &feature_sMemrealtime,
1311 &feature_BitInsts16,
1312 &feature_wavefrontsize64,
1313 &feature_sdwa,
1413 &feature_scalarStores,
13141414 &feature_flatAddressSpace,
1315 &feature_sdwaMav,
1316 &feature_mimgR128,
1317 &feature_ciInsts,
1318 &feature_noSramEccSupport,
1319 &feature_inv2piInlineImm,
13201415 &feature_vgprIndexMode,
1321 &feature_gcn3Encoding,
1322 &feature_gfx8Insts,
1323 &feature_scalarStores,
1416 &feature_wavefrontsize64,
1417 &feature_mimgR128,
13241418 &feature_intClampInsts,
1419 &feature_dpp,
13251420 &feature_movrel,
1421 &feature_gcn3Encoding,
1422 &feature_gfx8Insts,
1423 &feature_trigReducedRange,
1424 &feature_gfx7Gfx8Gfx9Insts,
1425 &feature_sdwaMav,
1426 &feature_sdwa,
13261427 &feature_localmemorysize65536,
1428 &feature_BitInsts16,
13271429 &feature_sdwaOutModsVopc,
1328 &feature_dpp,
1329 &feature_gfx7Gfx8Gfx9Insts,
1330 &feature_trigReducedRange,
1430 &feature_inv2piInlineImm,
1431 &feature_noSramEccSupport,
1432 &feature_fp64,
1433 &feature_ciInsts,
13311434 },
13321435};
13331436
......@@ -1339,28 +1442,28 @@ pub const cpu_gfx803 = Cpu{
13391442 &feature_noXnackSupport,
13401443 &feature_ldsbankcount32,
13411444 &feature_unpackedD16Vmem,
1342 &feature_fp64,
13431445 &feature_sMemrealtime,
1344 &feature_BitInsts16,
1345 &feature_wavefrontsize64,
1346 &feature_sdwa,
1446 &feature_scalarStores,
13471447 &feature_flatAddressSpace,
1348 &feature_sdwaMav,
1349 &feature_mimgR128,
1350 &feature_ciInsts,
1351 &feature_noSramEccSupport,
1352 &feature_inv2piInlineImm,
13531448 &feature_vgprIndexMode,
1354 &feature_gcn3Encoding,
1355 &feature_gfx8Insts,
1356 &feature_scalarStores,
1449 &feature_wavefrontsize64,
1450 &feature_mimgR128,
13571451 &feature_intClampInsts,
1452 &feature_dpp,
13581453 &feature_movrel,
1454 &feature_gcn3Encoding,
1455 &feature_gfx8Insts,
1456 &feature_trigReducedRange,
1457 &feature_gfx7Gfx8Gfx9Insts,
1458 &feature_sdwaMav,
1459 &feature_sdwa,
13591460 &feature_localmemorysize65536,
1461 &feature_BitInsts16,
13601462 &feature_sdwaOutModsVopc,
1361 &feature_dpp,
1362 &feature_gfx7Gfx8Gfx9Insts,
1363 &feature_trigReducedRange,
1463 &feature_inv2piInlineImm,
1464 &feature_noSramEccSupport,
1465 &feature_fp64,
1466 &feature_ciInsts,
13641467 },
13651468};
13661469
......@@ -1370,28 +1473,28 @@ pub const cpu_gfx810 = Cpu{
13701473 .dependencies = &[_]*const Feature {
13711474 &feature_codeObjectV3,
13721475 &feature_ldsbankcount16,
1373 &feature_fp64,
13741476 &feature_sMemrealtime,
1375 &feature_BitInsts16,
1376 &feature_wavefrontsize64,
1377 &feature_sdwa,
1477 &feature_scalarStores,
13781478 &feature_flatAddressSpace,
1379 &feature_sdwaMav,
1380 &feature_mimgR128,
1381 &feature_ciInsts,
1382 &feature_noSramEccSupport,
1383 &feature_inv2piInlineImm,
13841479 &feature_vgprIndexMode,
1385 &feature_gcn3Encoding,
1386 &feature_gfx8Insts,
1387 &feature_scalarStores,
1480 &feature_wavefrontsize64,
1481 &feature_mimgR128,
13881482 &feature_intClampInsts,
1483 &feature_dpp,
13891484 &feature_movrel,
1485 &feature_gcn3Encoding,
1486 &feature_gfx8Insts,
1487 &feature_trigReducedRange,
1488 &feature_gfx7Gfx8Gfx9Insts,
1489 &feature_sdwaMav,
1490 &feature_sdwa,
13901491 &feature_localmemorysize65536,
1492 &feature_BitInsts16,
13911493 &feature_sdwaOutModsVopc,
1392 &feature_dpp,
1393 &feature_gfx7Gfx8Gfx9Insts,
1394 &feature_trigReducedRange,
1494 &feature_inv2piInlineImm,
1495 &feature_noSramEccSupport,
1496 &feature_fp64,
1497 &feature_ciInsts,
13951498 &feature_xnack,
13961499 },
13971500};
......@@ -1403,36 +1506,36 @@ pub const cpu_gfx900 = Cpu{
14031506 &feature_codeObjectV3,
14041507 &feature_noSramEccSupport,
14051508 &feature_noXnackSupport,
1406 &feature_flatScratchInsts,
1407 &feature_fp64,
1408 &feature_r128A16,
1509 &feature_sdwaOmod,
14091510 &feature_sMemrealtime,
1410 &feature_addNoCarryInsts,
1411 &feature_vop3p,
1511 &feature_scalarStores,
1512 &feature_flatAddressSpace,
1513 &feature_vgprIndexMode,
1514 &feature_gfx9Insts,
1515 &feature_r128A16,
14121516 &feature_fastFmaf,
1413 &feature_BitInsts16,
14141517 &feature_wavefrontsize64,
1415 &feature_sdwa,
1416 &feature_gfx9Insts,
1417 &feature_flatAddressSpace,
1418 &feature_apertureRegs,
1419 &feature_sdwaScalar,
1420 &feature_ciInsts,
1518 &feature_flatScratchInsts,
1519 &feature_sdwaSdst,
1520 &feature_vop3p,
1521 &feature_intClampInsts,
1522 &feature_dpp,
14211523 &feature_scalarAtomics,
1422 &feature_scalarFlatScratchInsts,
1423 &feature_inv2piInlineImm,
1424 &feature_vgprIndexMode,
14251524 &feature_gcn3Encoding,
14261525 &feature_gfx8Insts,
1427 &feature_scalarStores,
1428 &feature_intClampInsts,
1429 &feature_localmemorysize65536,
1430 &feature_flatGlobalInsts,
1431 &feature_sdwaOmod,
1432 &feature_dpp,
14331526 &feature_gfx7Gfx8Gfx9Insts,
1434 &feature_sdwaSdst,
1527 &feature_sdwa,
1528 &feature_flatGlobalInsts,
1529 &feature_localmemorysize65536,
1530 &feature_BitInsts16,
1531 &feature_addNoCarryInsts,
14351532 &feature_flatInstOffsets,
1533 &feature_sdwaScalar,
1534 &feature_inv2piInlineImm,
1535 &feature_apertureRegs,
1536 &feature_fp64,
1537 &feature_ciInsts,
1538 &feature_scalarFlatScratchInsts,
14361539 &feature_ldsbankcount32,
14371540 &feature_madMixInsts,
14381541 },
......@@ -1444,36 +1547,36 @@ pub const cpu_gfx902 = Cpu{
14441547 .dependencies = &[_]*const Feature {
14451548 &feature_codeObjectV3,
14461549 &feature_noSramEccSupport,
1447 &feature_flatScratchInsts,
1448 &feature_fp64,
1449 &feature_r128A16,
1550 &feature_sdwaOmod,
14501551 &feature_sMemrealtime,
1451 &feature_addNoCarryInsts,
1452 &feature_vop3p,
1552 &feature_scalarStores,
1553 &feature_flatAddressSpace,
1554 &feature_vgprIndexMode,
1555 &feature_gfx9Insts,
1556 &feature_r128A16,
14531557 &feature_fastFmaf,
1454 &feature_BitInsts16,
14551558 &feature_wavefrontsize64,
1456 &feature_sdwa,
1457 &feature_gfx9Insts,
1458 &feature_flatAddressSpace,
1459 &feature_apertureRegs,
1460 &feature_sdwaScalar,
1461 &feature_ciInsts,
1559 &feature_flatScratchInsts,
1560 &feature_sdwaSdst,
1561 &feature_vop3p,
1562 &feature_intClampInsts,
1563 &feature_dpp,
14621564 &feature_scalarAtomics,
1463 &feature_scalarFlatScratchInsts,
1464 &feature_inv2piInlineImm,
1465 &feature_vgprIndexMode,
14661565 &feature_gcn3Encoding,
14671566 &feature_gfx8Insts,
1468 &feature_scalarStores,
1469 &feature_intClampInsts,
1470 &feature_localmemorysize65536,
1471 &feature_flatGlobalInsts,
1472 &feature_sdwaOmod,
1473 &feature_dpp,
14741567 &feature_gfx7Gfx8Gfx9Insts,
1475 &feature_sdwaSdst,
1568 &feature_sdwa,
1569 &feature_flatGlobalInsts,
1570 &feature_localmemorysize65536,
1571 &feature_BitInsts16,
1572 &feature_addNoCarryInsts,
14761573 &feature_flatInstOffsets,
1574 &feature_sdwaScalar,
1575 &feature_inv2piInlineImm,
1576 &feature_apertureRegs,
1577 &feature_fp64,
1578 &feature_ciInsts,
1579 &feature_scalarFlatScratchInsts,
14771580 &feature_ldsbankcount32,
14781581 &feature_madMixInsts,
14791582 &feature_xnack,
......@@ -1488,36 +1591,36 @@ pub const cpu_gfx904 = Cpu{
14881591 &feature_noSramEccSupport,
14891592 &feature_noXnackSupport,
14901593 &feature_fmaMixInsts,
1491 &feature_flatScratchInsts,
1492 &feature_fp64,
1493 &feature_r128A16,
1594 &feature_sdwaOmod,
14941595 &feature_sMemrealtime,
1495 &feature_addNoCarryInsts,
1496 &feature_vop3p,
1596 &feature_scalarStores,
1597 &feature_flatAddressSpace,
1598 &feature_vgprIndexMode,
1599 &feature_gfx9Insts,
1600 &feature_r128A16,
14971601 &feature_fastFmaf,
1498 &feature_BitInsts16,
14991602 &feature_wavefrontsize64,
1500 &feature_sdwa,
1501 &feature_gfx9Insts,
1502 &feature_flatAddressSpace,
1503 &feature_apertureRegs,
1504 &feature_sdwaScalar,
1505 &feature_ciInsts,
1603 &feature_flatScratchInsts,
1604 &feature_sdwaSdst,
1605 &feature_vop3p,
1606 &feature_intClampInsts,
1607 &feature_dpp,
15061608 &feature_scalarAtomics,
1507 &feature_scalarFlatScratchInsts,
1508 &feature_inv2piInlineImm,
1509 &feature_vgprIndexMode,
15101609 &feature_gcn3Encoding,
15111610 &feature_gfx8Insts,
1512 &feature_scalarStores,
1513 &feature_intClampInsts,
1514 &feature_localmemorysize65536,
1515 &feature_flatGlobalInsts,
1516 &feature_sdwaOmod,
1517 &feature_dpp,
15181611 &feature_gfx7Gfx8Gfx9Insts,
1519 &feature_sdwaSdst,
1612 &feature_sdwa,
1613 &feature_flatGlobalInsts,
1614 &feature_localmemorysize65536,
1615 &feature_BitInsts16,
1616 &feature_addNoCarryInsts,
15201617 &feature_flatInstOffsets,
1618 &feature_sdwaScalar,
1619 &feature_inv2piInlineImm,
1620 &feature_apertureRegs,
1621 &feature_fp64,
1622 &feature_ciInsts,
1623 &feature_scalarFlatScratchInsts,
15211624 &feature_ldsbankcount32,
15221625 },
15231626};
......@@ -1532,36 +1635,36 @@ pub const cpu_gfx906 = Cpu{
15321635 &feature_dot1Insts,
15331636 &feature_dot2Insts,
15341637 &feature_fmaMixInsts,
1535 &feature_flatScratchInsts,
1536 &feature_fp64,
1537 &feature_r128A16,
1638 &feature_sdwaOmod,
15381639 &feature_sMemrealtime,
1539 &feature_addNoCarryInsts,
1540 &feature_vop3p,
1640 &feature_scalarStores,
1641 &feature_flatAddressSpace,
1642 &feature_vgprIndexMode,
1643 &feature_gfx9Insts,
1644 &feature_r128A16,
15411645 &feature_fastFmaf,
1542 &feature_BitInsts16,
15431646 &feature_wavefrontsize64,
1544 &feature_sdwa,
1545 &feature_gfx9Insts,
1546 &feature_flatAddressSpace,
1547 &feature_apertureRegs,
1548 &feature_sdwaScalar,
1549 &feature_ciInsts,
1647 &feature_flatScratchInsts,
1648 &feature_sdwaSdst,
1649 &feature_vop3p,
1650 &feature_intClampInsts,
1651 &feature_dpp,
15501652 &feature_scalarAtomics,
1551 &feature_scalarFlatScratchInsts,
1552 &feature_inv2piInlineImm,
1553 &feature_vgprIndexMode,
15541653 &feature_gcn3Encoding,
15551654 &feature_gfx8Insts,
1556 &feature_scalarStores,
1557 &feature_intClampInsts,
1558 &feature_localmemorysize65536,
1559 &feature_flatGlobalInsts,
1560 &feature_sdwaOmod,
1561 &feature_dpp,
15621655 &feature_gfx7Gfx8Gfx9Insts,
1563 &feature_sdwaSdst,
1656 &feature_sdwa,
1657 &feature_flatGlobalInsts,
1658 &feature_localmemorysize65536,
1659 &feature_BitInsts16,
1660 &feature_addNoCarryInsts,
15641661 &feature_flatInstOffsets,
1662 &feature_sdwaScalar,
1663 &feature_inv2piInlineImm,
1664 &feature_apertureRegs,
1665 &feature_fp64,
1666 &feature_ciInsts,
1667 &feature_scalarFlatScratchInsts,
15651668 &feature_ldsbankcount32,
15661669 &feature_halfRate64Ops,
15671670 },
......@@ -1581,36 +1684,36 @@ pub const cpu_gfx908 = Cpu{
15811684 &feature_dot5Insts,
15821685 &feature_dot6Insts,
15831686 &feature_fmaMixInsts,
1584 &feature_flatScratchInsts,
1585 &feature_fp64,
1586 &feature_r128A16,
1687 &feature_sdwaOmod,
15871688 &feature_sMemrealtime,
1588 &feature_addNoCarryInsts,
1589 &feature_vop3p,
1689 &feature_scalarStores,
1690 &feature_flatAddressSpace,
1691 &feature_vgprIndexMode,
1692 &feature_gfx9Insts,
1693 &feature_r128A16,
15901694 &feature_fastFmaf,
1591 &feature_BitInsts16,
15921695 &feature_wavefrontsize64,
1593 &feature_sdwa,
1594 &feature_gfx9Insts,
1595 &feature_flatAddressSpace,
1596 &feature_apertureRegs,
1597 &feature_sdwaScalar,
1598 &feature_ciInsts,
1696 &feature_flatScratchInsts,
1697 &feature_sdwaSdst,
1698 &feature_vop3p,
1699 &feature_intClampInsts,
1700 &feature_dpp,
15991701 &feature_scalarAtomics,
1600 &feature_scalarFlatScratchInsts,
1601 &feature_inv2piInlineImm,
1602 &feature_vgprIndexMode,
16031702 &feature_gcn3Encoding,
16041703 &feature_gfx8Insts,
1605 &feature_scalarStores,
1606 &feature_intClampInsts,
1607 &feature_localmemorysize65536,
1608 &feature_flatGlobalInsts,
1609 &feature_sdwaOmod,
1610 &feature_dpp,
16111704 &feature_gfx7Gfx8Gfx9Insts,
1612 &feature_sdwaSdst,
1705 &feature_sdwa,
1706 &feature_flatGlobalInsts,
1707 &feature_localmemorysize65536,
1708 &feature_BitInsts16,
1709 &feature_addNoCarryInsts,
16131710 &feature_flatInstOffsets,
1711 &feature_sdwaScalar,
1712 &feature_inv2piInlineImm,
1713 &feature_apertureRegs,
1714 &feature_fp64,
1715 &feature_ciInsts,
1716 &feature_scalarFlatScratchInsts,
16141717 &feature_ldsbankcount32,
16151718 &feature_maiInsts,
16161719 &feature_mfmaInlineLiteralBug,
......@@ -1625,36 +1728,36 @@ pub const cpu_gfx909 = Cpu{
16251728 .llvm_name = "gfx909",
16261729 .dependencies = &[_]*const Feature {
16271730 &feature_codeObjectV3,
1628 &feature_flatScratchInsts,
1629 &feature_fp64,
1630 &feature_r128A16,
1731 &feature_sdwaOmod,
16311732 &feature_sMemrealtime,
1632 &feature_addNoCarryInsts,
1633 &feature_vop3p,
1733 &feature_scalarStores,
1734 &feature_flatAddressSpace,
1735 &feature_vgprIndexMode,
1736 &feature_gfx9Insts,
1737 &feature_r128A16,
16341738 &feature_fastFmaf,
1635 &feature_BitInsts16,
16361739 &feature_wavefrontsize64,
1637 &feature_sdwa,
1638 &feature_gfx9Insts,
1639 &feature_flatAddressSpace,
1640 &feature_apertureRegs,
1641 &feature_sdwaScalar,
1642 &feature_ciInsts,
1740 &feature_flatScratchInsts,
1741 &feature_sdwaSdst,
1742 &feature_vop3p,
1743 &feature_intClampInsts,
1744 &feature_dpp,
16431745 &feature_scalarAtomics,
1644 &feature_scalarFlatScratchInsts,
1645 &feature_inv2piInlineImm,
1646 &feature_vgprIndexMode,
16471746 &feature_gcn3Encoding,
16481747 &feature_gfx8Insts,
1649 &feature_scalarStores,
1650 &feature_intClampInsts,
1651 &feature_localmemorysize65536,
1652 &feature_flatGlobalInsts,
1653 &feature_sdwaOmod,
1654 &feature_dpp,
16551748 &feature_gfx7Gfx8Gfx9Insts,
1656 &feature_sdwaSdst,
1749 &feature_sdwa,
1750 &feature_flatGlobalInsts,
1751 &feature_localmemorysize65536,
1752 &feature_BitInsts16,
1753 &feature_addNoCarryInsts,
16571754 &feature_flatInstOffsets,
1755 &feature_sdwaScalar,
1756 &feature_inv2piInlineImm,
1757 &feature_apertureRegs,
1758 &feature_fp64,
1759 &feature_ciInsts,
1760 &feature_scalarFlatScratchInsts,
16581761 &feature_ldsbankcount32,
16591762 &feature_madMixInsts,
16601763 &feature_xnack,
......@@ -1668,13 +1771,13 @@ pub const cpu_hainan = Cpu{
16681771 &feature_codeObjectV3,
16691772 &feature_noXnackSupport,
16701773 &feature_ldsbankcount32,
1671 &feature_localmemorysize32768,
1672 &feature_fp64,
1673 &feature_mimgR128,
16741774 &feature_movrel,
1675 &feature_noSramEccSupport,
1676 &feature_wavefrontsize64,
16771775 &feature_trigReducedRange,
1776 &feature_mimgR128,
1777 &feature_localmemorysize32768,
1778 &feature_wavefrontsize64,
1779 &feature_noSramEccSupport,
1780 &feature_fp64,
16781781 },
16791782};
16801783
......@@ -1686,16 +1789,16 @@ pub const cpu_hawaii = Cpu{
16861789 &feature_noXnackSupport,
16871790 &feature_fastFmaf,
16881791 &feature_ldsbankcount32,
1792 &feature_movrel,
16891793 &feature_flatAddressSpace,
1690 &feature_fp64,
1691 &feature_mimgR128,
1794 &feature_trigReducedRange,
16921795 &feature_gfx7Gfx8Gfx9Insts,
1693 &feature_movrel,
1796 &feature_wavefrontsize64,
1797 &feature_mimgR128,
1798 &feature_noSramEccSupport,
16941799 &feature_localmemorysize65536,
1800 &feature_fp64,
16951801 &feature_ciInsts,
1696 &feature_noSramEccSupport,
1697 &feature_wavefrontsize64,
1698 &feature_trigReducedRange,
16991802 &feature_halfRate64Ops,
17001803 },
17011804};
......@@ -1709,28 +1812,28 @@ pub const cpu_iceland = Cpu{
17091812 &feature_ldsbankcount32,
17101813 &feature_sgprInitBug,
17111814 &feature_unpackedD16Vmem,
1712 &feature_fp64,
17131815 &feature_sMemrealtime,
1714 &feature_BitInsts16,
1715 &feature_wavefrontsize64,
1716 &feature_sdwa,
1816 &feature_scalarStores,
17171817 &feature_flatAddressSpace,
1718 &feature_sdwaMav,
1719 &feature_mimgR128,
1720 &feature_ciInsts,
1721 &feature_noSramEccSupport,
1722 &feature_inv2piInlineImm,
17231818 &feature_vgprIndexMode,
1724 &feature_gcn3Encoding,
1725 &feature_gfx8Insts,
1726 &feature_scalarStores,
1819 &feature_wavefrontsize64,
1820 &feature_mimgR128,
17271821 &feature_intClampInsts,
1822 &feature_dpp,
17281823 &feature_movrel,
1824 &feature_gcn3Encoding,
1825 &feature_gfx8Insts,
1826 &feature_trigReducedRange,
1827 &feature_gfx7Gfx8Gfx9Insts,
1828 &feature_sdwaMav,
1829 &feature_sdwa,
17291830 &feature_localmemorysize65536,
1831 &feature_BitInsts16,
17301832 &feature_sdwaOutModsVopc,
1731 &feature_dpp,
1732 &feature_gfx7Gfx8Gfx9Insts,
1733 &feature_trigReducedRange,
1833 &feature_inv2piInlineImm,
1834 &feature_noSramEccSupport,
1835 &feature_fp64,
1836 &feature_ciInsts,
17341837 },
17351838};
17361839
......@@ -1741,16 +1844,16 @@ pub const cpu_kabini = Cpu{
17411844 &feature_codeObjectV3,
17421845 &feature_noXnackSupport,
17431846 &feature_ldsbankcount16,
1847 &feature_movrel,
17441848 &feature_flatAddressSpace,
1745 &feature_fp64,
1746 &feature_mimgR128,
1849 &feature_trigReducedRange,
17471850 &feature_gfx7Gfx8Gfx9Insts,
1748 &feature_movrel,
1851 &feature_wavefrontsize64,
1852 &feature_mimgR128,
1853 &feature_noSramEccSupport,
17491854 &feature_localmemorysize65536,
1855 &feature_fp64,
17501856 &feature_ciInsts,
1751 &feature_noSramEccSupport,
1752 &feature_wavefrontsize64,
1753 &feature_trigReducedRange,
17541857 },
17551858};
17561859
......@@ -1761,16 +1864,16 @@ pub const cpu_kaveri = Cpu{
17611864 &feature_codeObjectV3,
17621865 &feature_noXnackSupport,
17631866 &feature_ldsbankcount32,
1867 &feature_movrel,
17641868 &feature_flatAddressSpace,
1765 &feature_fp64,
1766 &feature_mimgR128,
1869 &feature_trigReducedRange,
17671870 &feature_gfx7Gfx8Gfx9Insts,
1768 &feature_movrel,
1871 &feature_wavefrontsize64,
1872 &feature_mimgR128,
1873 &feature_noSramEccSupport,
17691874 &feature_localmemorysize65536,
1875 &feature_fp64,
17701876 &feature_ciInsts,
1771 &feature_noSramEccSupport,
1772 &feature_wavefrontsize64,
1773 &feature_trigReducedRange,
17741877 },
17751878};
17761879
......@@ -1781,16 +1884,16 @@ pub const cpu_mullins = Cpu{
17811884 &feature_codeObjectV3,
17821885 &feature_noXnackSupport,
17831886 &feature_ldsbankcount16,
1887 &feature_movrel,
17841888 &feature_flatAddressSpace,
1785 &feature_fp64,
1786 &feature_mimgR128,
1889 &feature_trigReducedRange,
17871890 &feature_gfx7Gfx8Gfx9Insts,
1788 &feature_movrel,
1891 &feature_wavefrontsize64,
1892 &feature_mimgR128,
1893 &feature_noSramEccSupport,
17891894 &feature_localmemorysize65536,
1895 &feature_fp64,
17901896 &feature_ciInsts,
1791 &feature_noSramEccSupport,
1792 &feature_wavefrontsize64,
1793 &feature_trigReducedRange,
17941897 },
17951898};
17961899
......@@ -1801,13 +1904,13 @@ pub const cpu_oland = Cpu{
18011904 &feature_codeObjectV3,
18021905 &feature_noXnackSupport,
18031906 &feature_ldsbankcount32,
1804 &feature_localmemorysize32768,
1805 &feature_fp64,
1806 &feature_mimgR128,
18071907 &feature_movrel,
1808 &feature_noSramEccSupport,
1809 &feature_wavefrontsize64,
18101908 &feature_trigReducedRange,
1909 &feature_mimgR128,
1910 &feature_localmemorysize32768,
1911 &feature_wavefrontsize64,
1912 &feature_noSramEccSupport,
1913 &feature_fp64,
18111914 },
18121915};
18131916
......@@ -1818,13 +1921,13 @@ pub const cpu_pitcairn = Cpu{
18181921 &feature_codeObjectV3,
18191922 &feature_noXnackSupport,
18201923 &feature_ldsbankcount32,
1821 &feature_localmemorysize32768,
1822 &feature_fp64,
1823 &feature_mimgR128,
18241924 &feature_movrel,
1825 &feature_noSramEccSupport,
1826 &feature_wavefrontsize64,
18271925 &feature_trigReducedRange,
1926 &feature_mimgR128,
1927 &feature_localmemorysize32768,
1928 &feature_wavefrontsize64,
1929 &feature_noSramEccSupport,
1930 &feature_fp64,
18281931 },
18291932};
18301933
......@@ -1836,28 +1939,28 @@ pub const cpu_polaris10 = Cpu{
18361939 &feature_noXnackSupport,
18371940 &feature_ldsbankcount32,
18381941 &feature_unpackedD16Vmem,
1839 &feature_fp64,
18401942 &feature_sMemrealtime,
1841 &feature_BitInsts16,
1842 &feature_wavefrontsize64,
1843 &feature_sdwa,
1943 &feature_scalarStores,
18441944 &feature_flatAddressSpace,
1845 &feature_sdwaMav,
1846 &feature_mimgR128,
1847 &feature_ciInsts,
1848 &feature_noSramEccSupport,
1849 &feature_inv2piInlineImm,
18501945 &feature_vgprIndexMode,
1851 &feature_gcn3Encoding,
1852 &feature_gfx8Insts,
1853 &feature_scalarStores,
1946 &feature_wavefrontsize64,
1947 &feature_mimgR128,
18541948 &feature_intClampInsts,
1949 &feature_dpp,
18551950 &feature_movrel,
1951 &feature_gcn3Encoding,
1952 &feature_gfx8Insts,
1953 &feature_trigReducedRange,
1954 &feature_gfx7Gfx8Gfx9Insts,
1955 &feature_sdwaMav,
1956 &feature_sdwa,
18561957 &feature_localmemorysize65536,
1958 &feature_BitInsts16,
18571959 &feature_sdwaOutModsVopc,
1858 &feature_dpp,
1859 &feature_gfx7Gfx8Gfx9Insts,
1860 &feature_trigReducedRange,
1960 &feature_inv2piInlineImm,
1961 &feature_noSramEccSupport,
1962 &feature_fp64,
1963 &feature_ciInsts,
18611964 },
18621965};
18631966
......@@ -1869,28 +1972,28 @@ pub const cpu_polaris11 = Cpu{
18691972 &feature_noXnackSupport,
18701973 &feature_ldsbankcount32,
18711974 &feature_unpackedD16Vmem,
1872 &feature_fp64,
18731975 &feature_sMemrealtime,
1874 &feature_BitInsts16,
1875 &feature_wavefrontsize64,
1876 &feature_sdwa,
1976 &feature_scalarStores,
18771977 &feature_flatAddressSpace,
1878 &feature_sdwaMav,
1879 &feature_mimgR128,
1880 &feature_ciInsts,
1881 &feature_noSramEccSupport,
1882 &feature_inv2piInlineImm,
18831978 &feature_vgprIndexMode,
1884 &feature_gcn3Encoding,
1885 &feature_gfx8Insts,
1886 &feature_scalarStores,
1979 &feature_wavefrontsize64,
1980 &feature_mimgR128,
18871981 &feature_intClampInsts,
1982 &feature_dpp,
18881983 &feature_movrel,
1984 &feature_gcn3Encoding,
1985 &feature_gfx8Insts,
1986 &feature_trigReducedRange,
1987 &feature_gfx7Gfx8Gfx9Insts,
1988 &feature_sdwaMav,
1989 &feature_sdwa,
18891990 &feature_localmemorysize65536,
1991 &feature_BitInsts16,
18901992 &feature_sdwaOutModsVopc,
1891 &feature_dpp,
1892 &feature_gfx7Gfx8Gfx9Insts,
1893 &feature_trigReducedRange,
1993 &feature_inv2piInlineImm,
1994 &feature_noSramEccSupport,
1995 &feature_fp64,
1996 &feature_ciInsts,
18941997 },
18951998};
18961999
......@@ -1900,28 +2003,28 @@ pub const cpu_stoney = Cpu{
19002003 .dependencies = &[_]*const Feature {
19012004 &feature_codeObjectV3,
19022005 &feature_ldsbankcount16,
1903 &feature_fp64,
19042006 &feature_sMemrealtime,
1905 &feature_BitInsts16,
1906 &feature_wavefrontsize64,
1907 &feature_sdwa,
2007 &feature_scalarStores,
19082008 &feature_flatAddressSpace,
1909 &feature_sdwaMav,
1910 &feature_mimgR128,
1911 &feature_ciInsts,
1912 &feature_noSramEccSupport,
1913 &feature_inv2piInlineImm,
19142009 &feature_vgprIndexMode,
1915 &feature_gcn3Encoding,
1916 &feature_gfx8Insts,
1917 &feature_scalarStores,
2010 &feature_wavefrontsize64,
2011 &feature_mimgR128,
19182012 &feature_intClampInsts,
2013 &feature_dpp,
19192014 &feature_movrel,
2015 &feature_gcn3Encoding,
2016 &feature_gfx8Insts,
2017 &feature_trigReducedRange,
2018 &feature_gfx7Gfx8Gfx9Insts,
2019 &feature_sdwaMav,
2020 &feature_sdwa,
19202021 &feature_localmemorysize65536,
2022 &feature_BitInsts16,
19212023 &feature_sdwaOutModsVopc,
1922 &feature_dpp,
1923 &feature_gfx7Gfx8Gfx9Insts,
1924 &feature_trigReducedRange,
2024 &feature_inv2piInlineImm,
2025 &feature_noSramEccSupport,
2026 &feature_fp64,
2027 &feature_ciInsts,
19252028 &feature_xnack,
19262029 },
19272030};
......@@ -1934,13 +2037,13 @@ pub const cpu_tahiti = Cpu{
19342037 &feature_noXnackSupport,
19352038 &feature_fastFmaf,
19362039 &feature_ldsbankcount32,
1937 &feature_localmemorysize32768,
1938 &feature_fp64,
1939 &feature_mimgR128,
19402040 &feature_movrel,
1941 &feature_noSramEccSupport,
1942 &feature_wavefrontsize64,
19432041 &feature_trigReducedRange,
2042 &feature_mimgR128,
2043 &feature_localmemorysize32768,
2044 &feature_wavefrontsize64,
2045 &feature_noSramEccSupport,
2046 &feature_fp64,
19442047 &feature_halfRate64Ops,
19452048 },
19462049};
......@@ -1954,28 +2057,28 @@ pub const cpu_tonga = Cpu{
19542057 &feature_ldsbankcount32,
19552058 &feature_sgprInitBug,
19562059 &feature_unpackedD16Vmem,
1957 &feature_fp64,
19582060 &feature_sMemrealtime,
1959 &feature_BitInsts16,
1960 &feature_wavefrontsize64,
1961 &feature_sdwa,
2061 &feature_scalarStores,
19622062 &feature_flatAddressSpace,
1963 &feature_sdwaMav,
1964 &feature_mimgR128,
1965 &feature_ciInsts,
1966 &feature_noSramEccSupport,
1967 &feature_inv2piInlineImm,
19682063 &feature_vgprIndexMode,
1969 &feature_gcn3Encoding,
1970 &feature_gfx8Insts,
1971 &feature_scalarStores,
2064 &feature_wavefrontsize64,
2065 &feature_mimgR128,
19722066 &feature_intClampInsts,
2067 &feature_dpp,
19732068 &feature_movrel,
2069 &feature_gcn3Encoding,
2070 &feature_gfx8Insts,
2071 &feature_trigReducedRange,
2072 &feature_gfx7Gfx8Gfx9Insts,
2073 &feature_sdwaMav,
2074 &feature_sdwa,
19742075 &feature_localmemorysize65536,
2076 &feature_BitInsts16,
19752077 &feature_sdwaOutModsVopc,
1976 &feature_dpp,
1977 &feature_gfx7Gfx8Gfx9Insts,
1978 &feature_trigReducedRange,
2078 &feature_inv2piInlineImm,
2079 &feature_noSramEccSupport,
2080 &feature_fp64,
2081 &feature_ciInsts,
19792082 },
19802083};
19812084
......@@ -1986,13 +2089,13 @@ pub const cpu_verde = Cpu{
19862089 &feature_codeObjectV3,
19872090 &feature_noXnackSupport,
19882091 &feature_ldsbankcount32,
1989 &feature_localmemorysize32768,
1990 &feature_fp64,
1991 &feature_mimgR128,
19922092 &feature_movrel,
1993 &feature_noSramEccSupport,
1994 &feature_wavefrontsize64,
19952093 &feature_trigReducedRange,
2094 &feature_mimgR128,
2095 &feature_localmemorysize32768,
2096 &feature_wavefrontsize64,
2097 &feature_noSramEccSupport,
2098 &feature_fp64,
19962099 },
19972100};
19982101
lib/std/target/arm.zig+390-297
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_msecext8 = Feature{
55 .name = "8msecext",
6 .llvm_name = "8msecext",
67 .description = "Enable support for ARMv8-M Security Extensions",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_msecext8 = Feature{
1011
1112pub const feature_aclass = Feature{
1213 .name = "aclass",
14 .llvm_name = "aclass",
1315 .description = "Is application profile ('A' series)",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_aclass = Feature{
1719
1820pub const feature_aes = Feature{
1921 .name = "aes",
22 .llvm_name = "aes",
2023 .description = "Enable AES support",
2124 .dependencies = &[_]*const Feature {
2225 &feature_d32,
......@@ -26,6 +29,7 @@ pub const feature_aes = Feature{
2629
2730pub const feature_acquireRelease = Feature{
2831 .name = "acquire-release",
32 .llvm_name = "acquire-release",
2933 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",
3034 .dependencies = &[_]*const Feature {
3135 },
......@@ -33,6 +37,7 @@ pub const feature_acquireRelease = Feature{
3337
3438pub const feature_avoidMovsShop = Feature{
3539 .name = "avoid-movs-shop",
40 .llvm_name = "avoid-movs-shop",
3641 .description = "Avoid movs instructions with shifter operand",
3742 .dependencies = &[_]*const Feature {
3843 },
......@@ -40,6 +45,7 @@ pub const feature_avoidMovsShop = Feature{
4045
4146pub const feature_avoidPartialCpsr = Feature{
4247 .name = "avoid-partial-cpsr",
48 .llvm_name = "avoid-partial-cpsr",
4349 .description = "Avoid CPSR partial update for OOO execution",
4450 .dependencies = &[_]*const Feature {
4551 },
......@@ -47,6 +53,7 @@ pub const feature_avoidPartialCpsr = Feature{
4753
4854pub const feature_crc = Feature{
4955 .name = "crc",
56 .llvm_name = "crc",
5057 .description = "Enable support for CRC instructions",
5158 .dependencies = &[_]*const Feature {
5259 },
......@@ -54,6 +61,7 @@ pub const feature_crc = Feature{
5461
5562pub const feature_cheapPredicableCpsr = Feature{
5663 .name = "cheap-predicable-cpsr",
64 .llvm_name = "cheap-predicable-cpsr",
5765 .description = "Disable +1 predication cost for instructions updating CPSR",
5866 .dependencies = &[_]*const Feature {
5967 },
......@@ -61,6 +69,7 @@ pub const feature_cheapPredicableCpsr = Feature{
6169
6270pub const feature_vldnAlign = Feature{
6371 .name = "vldn-align",
72 .llvm_name = "vldn-align",
6473 .description = "Check for VLDn unaligned access",
6574 .dependencies = &[_]*const Feature {
6675 },
......@@ -68,6 +77,7 @@ pub const feature_vldnAlign = Feature{
6877
6978pub const feature_crypto = Feature{
7079 .name = "crypto",
80 .llvm_name = "crypto",
7181 .description = "Enable support for Cryptography extensions",
7282 .dependencies = &[_]*const Feature {
7383 &feature_d32,
......@@ -77,6 +87,7 @@ pub const feature_crypto = Feature{
7787
7888pub const feature_d32 = Feature{
7989 .name = "d32",
90 .llvm_name = "d32",
8091 .description = "Extend FP to 32 double registers",
8192 .dependencies = &[_]*const Feature {
8293 },
......@@ -84,6 +95,7 @@ pub const feature_d32 = Feature{
8495
8596pub const feature_db = Feature{
8697 .name = "db",
98 .llvm_name = "db",
8799 .description = "Has data barrier (dmb/dsb) instructions",
88100 .dependencies = &[_]*const Feature {
89101 },
......@@ -91,6 +103,7 @@ pub const feature_db = Feature{
91103
92104pub const feature_dfb = Feature{
93105 .name = "dfb",
106 .llvm_name = "dfb",
94107 .description = "Has full data barrier (dfb) instruction",
95108 .dependencies = &[_]*const Feature {
96109 },
......@@ -98,6 +111,7 @@ pub const feature_dfb = Feature{
98111
99112pub const feature_dsp = Feature{
100113 .name = "dsp",
114 .llvm_name = "dsp",
101115 .description = "Supports DSP instructions in ARM and/or Thumb2",
102116 .dependencies = &[_]*const Feature {
103117 },
......@@ -105,6 +119,7 @@ pub const feature_dsp = Feature{
105119
106120pub const feature_dontWidenVmovs = Feature{
107121 .name = "dont-widen-vmovs",
122 .llvm_name = "dont-widen-vmovs",
108123 .description = "Don't widen VMOVS to VMOVD",
109124 .dependencies = &[_]*const Feature {
110125 },
......@@ -112,6 +127,7 @@ pub const feature_dontWidenVmovs = Feature{
112127
113128pub const feature_dotprod = Feature{
114129 .name = "dotprod",
130 .llvm_name = "dotprod",
115131 .description = "Enable support for dot product instructions",
116132 .dependencies = &[_]*const Feature {
117133 &feature_d32,
......@@ -121,6 +137,7 @@ pub const feature_dotprod = Feature{
121137
122138pub const feature_executeOnly = Feature{
123139 .name = "execute-only",
140 .llvm_name = "execute-only",
124141 .description = "Enable the generation of execute only code.",
125142 .dependencies = &[_]*const Feature {
126143 },
......@@ -128,6 +145,7 @@ pub const feature_executeOnly = Feature{
128145
129146pub const feature_expandFpMlx = Feature{
130147 .name = "expand-fp-mlx",
148 .llvm_name = "expand-fp-mlx",
131149 .description = "Expand VFP/NEON MLA/MLS instructions",
132150 .dependencies = &[_]*const Feature {
133151 },
......@@ -135,6 +153,7 @@ pub const feature_expandFpMlx = Feature{
135153
136154pub const feature_fp16 = Feature{
137155 .name = "fp16",
156 .llvm_name = "fp16",
138157 .description = "Enable half-precision floating point",
139158 .dependencies = &[_]*const Feature {
140159 },
......@@ -142,6 +161,7 @@ pub const feature_fp16 = Feature{
142161
143162pub const feature_fp16fml = Feature{
144163 .name = "fp16fml",
164 .llvm_name = "fp16fml",
145165 .description = "Enable full half-precision floating point fml instructions",
146166 .dependencies = &[_]*const Feature {
147167 &feature_fp16,
......@@ -151,6 +171,7 @@ pub const feature_fp16fml = Feature{
151171
152172pub const feature_fp64 = Feature{
153173 .name = "fp64",
174 .llvm_name = "fp64",
154175 .description = "Floating point unit supports double precision",
155176 .dependencies = &[_]*const Feature {
156177 &feature_fpregs,
......@@ -159,6 +180,7 @@ pub const feature_fp64 = Feature{
159180
160181pub const feature_fpao = Feature{
161182 .name = "fpao",
183 .llvm_name = "fpao",
162184 .description = "Enable fast computation of positive address offsets",
163185 .dependencies = &[_]*const Feature {
164186 },
......@@ -166,16 +188,18 @@ pub const feature_fpao = Feature{
166188
167189pub const feature_fpArmv8 = Feature{
168190 .name = "fp-armv8",
191 .llvm_name = "fp-armv8",
169192 .description = "Enable ARMv8 FP",
170193 .dependencies = &[_]*const Feature {
171 &feature_fpregs,
172 &feature_d32,
173194 &feature_fp16,
195 &feature_d32,
196 &feature_fpregs,
174197 },
175198};
176199
177200pub const feature_fpArmv8d16 = Feature{
178201 .name = "fp-armv8d16",
202 .llvm_name = "fp-armv8d16",
179203 .description = "Enable ARMv8 FP with only 16 d-registers",
180204 .dependencies = &[_]*const Feature {
181205 &feature_fp16,
......@@ -185,6 +209,7 @@ pub const feature_fpArmv8d16 = Feature{
185209
186210pub const feature_fpArmv8d16sp = Feature{
187211 .name = "fp-armv8d16sp",
212 .llvm_name = "fp-armv8d16sp",
188213 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",
189214 .dependencies = &[_]*const Feature {
190215 &feature_fp16,
......@@ -194,16 +219,18 @@ pub const feature_fpArmv8d16sp = Feature{
194219
195220pub const feature_fpArmv8sp = Feature{
196221 .name = "fp-armv8sp",
222 .llvm_name = "fp-armv8sp",
197223 .description = "Enable ARMv8 FP with no double precision",
198224 .dependencies = &[_]*const Feature {
199 &feature_fpregs,
200 &feature_d32,
201225 &feature_fp16,
226 &feature_d32,
227 &feature_fpregs,
202228 },
203229};
204230
205231pub const feature_fpregs = Feature{
206232 .name = "fpregs",
233 .llvm_name = "fpregs",
207234 .description = "Enable FP registers",
208235 .dependencies = &[_]*const Feature {
209236 },
......@@ -211,6 +238,7 @@ pub const feature_fpregs = Feature{
211238
212239pub const feature_fpregs16 = Feature{
213240 .name = "fpregs16",
241 .llvm_name = "fpregs16",
214242 .description = "Enable 16-bit FP registers",
215243 .dependencies = &[_]*const Feature {
216244 &feature_fpregs,
......@@ -219,6 +247,7 @@ pub const feature_fpregs16 = Feature{
219247
220248pub const feature_fpregs64 = Feature{
221249 .name = "fpregs64",
250 .llvm_name = "fpregs64",
222251 .description = "Enable 64-bit FP registers",
223252 .dependencies = &[_]*const Feature {
224253 &feature_fpregs,
......@@ -227,15 +256,17 @@ pub const feature_fpregs64 = Feature{
227256
228257pub const feature_fullfp16 = Feature{
229258 .name = "fullfp16",
259 .llvm_name = "fullfp16",
230260 .description = "Enable full half-precision floating point",
231261 .dependencies = &[_]*const Feature {
232 &feature_fpregs,
233262 &feature_fp16,
263 &feature_fpregs,
234264 },
235265};
236266
237267pub const feature_fuseAes = Feature{
238268 .name = "fuse-aes",
269 .llvm_name = "fuse-aes",
239270 .description = "CPU fuses AES crypto operations",
240271 .dependencies = &[_]*const Feature {
241272 },
......@@ -243,6 +274,7 @@ pub const feature_fuseAes = Feature{
243274
244275pub const feature_fuseLiterals = Feature{
245276 .name = "fuse-literals",
277 .llvm_name = "fuse-literals",
246278 .description = "CPU fuses literal generation operations",
247279 .dependencies = &[_]*const Feature {
248280 },
......@@ -250,6 +282,7 @@ pub const feature_fuseLiterals = Feature{
250282
251283pub const feature_hwdivArm = Feature{
252284 .name = "hwdiv-arm",
285 .llvm_name = "hwdiv-arm",
253286 .description = "Enable divide instructions in ARM mode",
254287 .dependencies = &[_]*const Feature {
255288 },
......@@ -257,6 +290,7 @@ pub const feature_hwdivArm = Feature{
257290
258291pub const feature_hwdiv = Feature{
259292 .name = "hwdiv",
293 .llvm_name = "hwdiv",
260294 .description = "Enable divide instructions in Thumb",
261295 .dependencies = &[_]*const Feature {
262296 },
......@@ -264,6 +298,7 @@ pub const feature_hwdiv = Feature{
264298
265299pub const feature_noBranchPredictor = Feature{
266300 .name = "no-branch-predictor",
301 .llvm_name = "no-branch-predictor",
267302 .description = "Has no branch predictor",
268303 .dependencies = &[_]*const Feature {
269304 },
......@@ -271,6 +306,7 @@ pub const feature_noBranchPredictor = Feature{
271306
272307pub const feature_retAddrStack = Feature{
273308 .name = "ret-addr-stack",
309 .llvm_name = "ret-addr-stack",
274310 .description = "Has return address stack",
275311 .dependencies = &[_]*const Feature {
276312 },
......@@ -278,6 +314,7 @@ pub const feature_retAddrStack = Feature{
278314
279315pub const feature_slowfpvmlx = Feature{
280316 .name = "slowfpvmlx",
317 .llvm_name = "slowfpvmlx",
281318 .description = "Disable VFP / NEON MAC instructions",
282319 .dependencies = &[_]*const Feature {
283320 },
......@@ -285,6 +322,7 @@ pub const feature_slowfpvmlx = Feature{
285322
286323pub const feature_vmlxHazards = Feature{
287324 .name = "vmlx-hazards",
325 .llvm_name = "vmlx-hazards",
288326 .description = "Has VMLx hazards",
289327 .dependencies = &[_]*const Feature {
290328 },
......@@ -292,6 +330,7 @@ pub const feature_vmlxHazards = Feature{
292330
293331pub const feature_lob = Feature{
294332 .name = "lob",
333 .llvm_name = "lob",
295334 .description = "Enable Low Overhead Branch extensions",
296335 .dependencies = &[_]*const Feature {
297336 },
......@@ -299,6 +338,7 @@ pub const feature_lob = Feature{
299338
300339pub const feature_longCalls = Feature{
301340 .name = "long-calls",
341 .llvm_name = "long-calls",
302342 .description = "Generate calls via indirect call instructions",
303343 .dependencies = &[_]*const Feature {
304344 },
......@@ -306,6 +346,7 @@ pub const feature_longCalls = Feature{
306346
307347pub const feature_mclass = Feature{
308348 .name = "mclass",
349 .llvm_name = "mclass",
309350 .description = "Is microcontroller profile ('M' series)",
310351 .dependencies = &[_]*const Feature {
311352 },
......@@ -313,6 +354,7 @@ pub const feature_mclass = Feature{
313354
314355pub const feature_mp = Feature{
315356 .name = "mp",
357 .llvm_name = "mp",
316358 .description = "Supports Multiprocessing extension",
317359 .dependencies = &[_]*const Feature {
318360 },
......@@ -320,6 +362,7 @@ pub const feature_mp = Feature{
320362
321363pub const feature_mve1beat = Feature{
322364 .name = "mve1beat",
365 .llvm_name = "mve1beat",
323366 .description = "Model MVE instructions as a 1 beat per tick architecture",
324367 .dependencies = &[_]*const Feature {
325368 },
......@@ -327,6 +370,7 @@ pub const feature_mve1beat = Feature{
327370
328371pub const feature_mve2beat = Feature{
329372 .name = "mve2beat",
373 .llvm_name = "mve2beat",
330374 .description = "Model MVE instructions as a 2 beats per tick architecture",
331375 .dependencies = &[_]*const Feature {
332376 },
......@@ -334,6 +378,7 @@ pub const feature_mve2beat = Feature{
334378
335379pub const feature_mve4beat = Feature{
336380 .name = "mve4beat",
381 .llvm_name = "mve4beat",
337382 .description = "Model MVE instructions as a 4 beats per tick architecture",
338383 .dependencies = &[_]*const Feature {
339384 },
......@@ -341,6 +386,7 @@ pub const feature_mve4beat = Feature{
341386
342387pub const feature_muxedUnits = Feature{
343388 .name = "muxed-units",
389 .llvm_name = "muxed-units",
344390 .description = "Has muxed AGU and NEON/FPU",
345391 .dependencies = &[_]*const Feature {
346392 },
......@@ -348,6 +394,7 @@ pub const feature_muxedUnits = Feature{
348394
349395pub const feature_neon = Feature{
350396 .name = "neon",
397 .llvm_name = "neon",
351398 .description = "Enable NEON instructions",
352399 .dependencies = &[_]*const Feature {
353400 &feature_d32,
......@@ -357,6 +404,7 @@ pub const feature_neon = Feature{
357404
358405pub const feature_neonfp = Feature{
359406 .name = "neonfp",
407 .llvm_name = "neonfp",
360408 .description = "Use NEON for single precision FP",
361409 .dependencies = &[_]*const Feature {
362410 },
......@@ -364,6 +412,7 @@ pub const feature_neonfp = Feature{
364412
365413pub const feature_neonFpmovs = Feature{
366414 .name = "neon-fpmovs",
415 .llvm_name = "neon-fpmovs",
367416 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",
368417 .dependencies = &[_]*const Feature {
369418 },
......@@ -371,6 +420,7 @@ pub const feature_neonFpmovs = Feature{
371420
372421pub const feature_naclTrap = Feature{
373422 .name = "nacl-trap",
423 .llvm_name = "nacl-trap",
374424 .description = "NaCl trap",
375425 .dependencies = &[_]*const Feature {
376426 },
......@@ -378,6 +428,7 @@ pub const feature_naclTrap = Feature{
378428
379429pub const feature_noarm = Feature{
380430 .name = "noarm",
431 .llvm_name = "noarm",
381432 .description = "Does not support ARM mode execution",
382433 .dependencies = &[_]*const Feature {
383434 },
......@@ -385,6 +436,7 @@ pub const feature_noarm = Feature{
385436
386437pub const feature_noMovt = Feature{
387438 .name = "no-movt",
439 .llvm_name = "no-movt",
388440 .description = "Don't use movt/movw pairs for 32-bit imms",
389441 .dependencies = &[_]*const Feature {
390442 },
......@@ -392,6 +444,7 @@ pub const feature_noMovt = Feature{
392444
393445pub const feature_noNegImmediates = Feature{
394446 .name = "no-neg-immediates",
447 .llvm_name = "no-neg-immediates",
395448 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
396449 .dependencies = &[_]*const Feature {
397450 },
......@@ -399,6 +452,7 @@ pub const feature_noNegImmediates = Feature{
399452
400453pub const feature_disablePostraScheduler = Feature{
401454 .name = "disable-postra-scheduler",
455 .llvm_name = "disable-postra-scheduler",
402456 .description = "Don't schedule again after register allocation",
403457 .dependencies = &[_]*const Feature {
404458 },
......@@ -406,6 +460,7 @@ pub const feature_disablePostraScheduler = Feature{
406460
407461pub const feature_nonpipelinedVfp = Feature{
408462 .name = "nonpipelined-vfp",
463 .llvm_name = "nonpipelined-vfp",
409464 .description = "VFP instructions are not pipelined",
410465 .dependencies = &[_]*const Feature {
411466 },
......@@ -413,6 +468,7 @@ pub const feature_nonpipelinedVfp = Feature{
413468
414469pub const feature_perfmon = Feature{
415470 .name = "perfmon",
471 .llvm_name = "perfmon",
416472 .description = "Enable support for Performance Monitor extensions",
417473 .dependencies = &[_]*const Feature {
418474 },
......@@ -420,6 +476,7 @@ pub const feature_perfmon = Feature{
420476
421477pub const feature_bit32 = Feature{
422478 .name = "32bit",
479 .llvm_name = "32bit",
423480 .description = "Prefer 32-bit Thumb instrs",
424481 .dependencies = &[_]*const Feature {
425482 },
......@@ -427,6 +484,7 @@ pub const feature_bit32 = Feature{
427484
428485pub const feature_preferIshst = Feature{
429486 .name = "prefer-ishst",
487 .llvm_name = "prefer-ishst",
430488 .description = "Prefer ISHST barriers",
431489 .dependencies = &[_]*const Feature {
432490 },
......@@ -434,6 +492,7 @@ pub const feature_preferIshst = Feature{
434492
435493pub const feature_loopAlign = Feature{
436494 .name = "loop-align",
495 .llvm_name = "loop-align",
437496 .description = "Prefer 32-bit alignment for loops",
438497 .dependencies = &[_]*const Feature {
439498 },
......@@ -441,6 +500,7 @@ pub const feature_loopAlign = Feature{
441500
442501pub const feature_preferVmovsr = Feature{
443502 .name = "prefer-vmovsr",
503 .llvm_name = "prefer-vmovsr",
444504 .description = "Prefer VMOVSR",
445505 .dependencies = &[_]*const Feature {
446506 },
......@@ -448,6 +508,7 @@ pub const feature_preferVmovsr = Feature{
448508
449509pub const feature_profUnpr = Feature{
450510 .name = "prof-unpr",
511 .llvm_name = "prof-unpr",
451512 .description = "Is profitable to unpredicate",
452513 .dependencies = &[_]*const Feature {
453514 },
......@@ -455,6 +516,7 @@ pub const feature_profUnpr = Feature{
455516
456517pub const feature_ras = Feature{
457518 .name = "ras",
519 .llvm_name = "ras",
458520 .description = "Enable Reliability, Availability and Serviceability extensions",
459521 .dependencies = &[_]*const Feature {
460522 },
......@@ -462,6 +524,7 @@ pub const feature_ras = Feature{
462524
463525pub const feature_rclass = Feature{
464526 .name = "rclass",
527 .llvm_name = "rclass",
465528 .description = "Is realtime profile ('R' series)",
466529 .dependencies = &[_]*const Feature {
467530 },
......@@ -469,6 +532,7 @@ pub const feature_rclass = Feature{
469532
470533pub const feature_readTpHard = Feature{
471534 .name = "read-tp-hard",
535 .llvm_name = "read-tp-hard",
472536 .description = "Reading thread pointer from register",
473537 .dependencies = &[_]*const Feature {
474538 },
......@@ -476,6 +540,7 @@ pub const feature_readTpHard = Feature{
476540
477541pub const feature_reserveR9 = Feature{
478542 .name = "reserve-r9",
543 .llvm_name = "reserve-r9",
479544 .description = "Reserve R9, making it unavailable as GPR",
480545 .dependencies = &[_]*const Feature {
481546 },
......@@ -483,6 +548,7 @@ pub const feature_reserveR9 = Feature{
483548
484549pub const feature_sb = Feature{
485550 .name = "sb",
551 .llvm_name = "sb",
486552 .description = "Enable v8.5a Speculation Barrier",
487553 .dependencies = &[_]*const Feature {
488554 },
......@@ -490,6 +556,7 @@ pub const feature_sb = Feature{
490556
491557pub const feature_sha2 = Feature{
492558 .name = "sha2",
559 .llvm_name = "sha2",
493560 .description = "Enable SHA1 and SHA256 support",
494561 .dependencies = &[_]*const Feature {
495562 &feature_d32,
......@@ -499,6 +566,7 @@ pub const feature_sha2 = Feature{
499566
500567pub const feature_slowFpBrcc = Feature{
501568 .name = "slow-fp-brcc",
569 .llvm_name = "slow-fp-brcc",
502570 .description = "FP compare + branch is slow",
503571 .dependencies = &[_]*const Feature {
504572 },
......@@ -506,6 +574,7 @@ pub const feature_slowFpBrcc = Feature{
506574
507575pub const feature_slowLoadDSubreg = Feature{
508576 .name = "slow-load-D-subreg",
577 .llvm_name = "slow-load-D-subreg",
509578 .description = "Loading into D subregs is slow",
510579 .dependencies = &[_]*const Feature {
511580 },
......@@ -513,6 +582,7 @@ pub const feature_slowLoadDSubreg = Feature{
513582
514583pub const feature_slowOddReg = Feature{
515584 .name = "slow-odd-reg",
585 .llvm_name = "slow-odd-reg",
516586 .description = "VLDM/VSTM starting with an odd register is slow",
517587 .dependencies = &[_]*const Feature {
518588 },
......@@ -520,6 +590,7 @@ pub const feature_slowOddReg = Feature{
520590
521591pub const feature_slowVdup32 = Feature{
522592 .name = "slow-vdup32",
593 .llvm_name = "slow-vdup32",
523594 .description = "Has slow VDUP32 - prefer VMOV",
524595 .dependencies = &[_]*const Feature {
525596 },
......@@ -527,6 +598,7 @@ pub const feature_slowVdup32 = Feature{
527598
528599pub const feature_slowVgetlni32 = Feature{
529600 .name = "slow-vgetlni32",
601 .llvm_name = "slow-vgetlni32",
530602 .description = "Has slow VGETLNi32 - prefer VMOV",
531603 .dependencies = &[_]*const Feature {
532604 },
......@@ -534,6 +606,7 @@ pub const feature_slowVgetlni32 = Feature{
534606
535607pub const feature_splatVfpNeon = Feature{
536608 .name = "splat-vfp-neon",
609 .llvm_name = "splat-vfp-neon",
537610 .description = "Splat register from VFP to NEON",
538611 .dependencies = &[_]*const Feature {
539612 &feature_dontWidenVmovs,
......@@ -542,6 +615,7 @@ pub const feature_splatVfpNeon = Feature{
542615
543616pub const feature_strictAlign = Feature{
544617 .name = "strict-align",
618 .llvm_name = "strict-align",
545619 .description = "Disallow all unaligned memory access",
546620 .dependencies = &[_]*const Feature {
547621 },
......@@ -549,6 +623,7 @@ pub const feature_strictAlign = Feature{
549623
550624pub const feature_thumb2 = Feature{
551625 .name = "thumb2",
626 .llvm_name = "thumb2",
552627 .description = "Enable Thumb2 instructions",
553628 .dependencies = &[_]*const Feature {
554629 },
......@@ -556,6 +631,7 @@ pub const feature_thumb2 = Feature{
556631
557632pub const feature_trustzone = Feature{
558633 .name = "trustzone",
634 .llvm_name = "trustzone",
559635 .description = "Enable support for TrustZone security extensions",
560636 .dependencies = &[_]*const Feature {
561637 },
......@@ -563,6 +639,7 @@ pub const feature_trustzone = Feature{
563639
564640pub const feature_useAa = Feature{
565641 .name = "use-aa",
642 .llvm_name = "use-aa",
566643 .description = "Use alias analysis during codegen",
567644 .dependencies = &[_]*const Feature {
568645 },
......@@ -570,6 +647,7 @@ pub const feature_useAa = Feature{
570647
571648pub const feature_useMisched = Feature{
572649 .name = "use-misched",
650 .llvm_name = "use-misched",
573651 .description = "Use the MachineScheduler",
574652 .dependencies = &[_]*const Feature {
575653 },
......@@ -577,6 +655,7 @@ pub const feature_useMisched = Feature{
577655
578656pub const feature_wideStrideVfp = Feature{
579657 .name = "wide-stride-vfp",
658 .llvm_name = "wide-stride-vfp",
580659 .description = "Use a wide stride when allocating VFP registers",
581660 .dependencies = &[_]*const Feature {
582661 },
......@@ -584,6 +663,7 @@ pub const feature_wideStrideVfp = Feature{
584663
585664pub const feature_v7clrex = Feature{
586665 .name = "v7clrex",
666 .llvm_name = "v7clrex",
587667 .description = "Has v7 clrex instruction",
588668 .dependencies = &[_]*const Feature {
589669 },
......@@ -591,6 +671,7 @@ pub const feature_v7clrex = Feature{
591671
592672pub const feature_vfp2 = Feature{
593673 .name = "vfp2",
674 .llvm_name = "vfp2",
594675 .description = "Enable VFP2 instructions",
595676 .dependencies = &[_]*const Feature {
596677 &feature_fpregs,
......@@ -599,6 +680,7 @@ pub const feature_vfp2 = Feature{
599680
600681pub const feature_vfp2sp = Feature{
601682 .name = "vfp2sp",
683 .llvm_name = "vfp2sp",
602684 .description = "Enable VFP2 instructions with no double precision",
603685 .dependencies = &[_]*const Feature {
604686 &feature_fpregs,
......@@ -607,6 +689,7 @@ pub const feature_vfp2sp = Feature{
607689
608690pub const feature_vfp3 = Feature{
609691 .name = "vfp3",
692 .llvm_name = "vfp3",
610693 .description = "Enable VFP3 instructions",
611694 .dependencies = &[_]*const Feature {
612695 &feature_d32,
......@@ -616,6 +699,7 @@ pub const feature_vfp3 = Feature{
616699
617700pub const feature_vfp3d16 = Feature{
618701 .name = "vfp3d16",
702 .llvm_name = "vfp3d16",
619703 .description = "Enable VFP3 instructions with only 16 d-registers",
620704 .dependencies = &[_]*const Feature {
621705 &feature_fpregs,
......@@ -624,6 +708,7 @@ pub const feature_vfp3d16 = Feature{
624708
625709pub const feature_vfp3d16sp = Feature{
626710 .name = "vfp3d16sp",
711 .llvm_name = "vfp3d16sp",
627712 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",
628713 .dependencies = &[_]*const Feature {
629714 &feature_fpregs,
......@@ -632,6 +717,7 @@ pub const feature_vfp3d16sp = Feature{
632717
633718pub const feature_vfp3sp = Feature{
634719 .name = "vfp3sp",
720 .llvm_name = "vfp3sp",
635721 .description = "Enable VFP3 instructions with no double precision",
636722 .dependencies = &[_]*const Feature {
637723 &feature_d32,
......@@ -641,44 +727,49 @@ pub const feature_vfp3sp = Feature{
641727
642728pub const feature_vfp4 = Feature{
643729 .name = "vfp4",
730 .llvm_name = "vfp4",
644731 .description = "Enable VFP4 instructions",
645732 .dependencies = &[_]*const Feature {
646 &feature_fpregs,
647 &feature_d32,
648733 &feature_fp16,
734 &feature_d32,
735 &feature_fpregs,
649736 },
650737};
651738
652739pub const feature_vfp4d16 = Feature{
653740 .name = "vfp4d16",
741 .llvm_name = "vfp4d16",
654742 .description = "Enable VFP4 instructions with only 16 d-registers",
655743 .dependencies = &[_]*const Feature {
656 &feature_fpregs,
657744 &feature_fp16,
745 &feature_fpregs,
658746 },
659747};
660748
661749pub const feature_vfp4d16sp = Feature{
662750 .name = "vfp4d16sp",
751 .llvm_name = "vfp4d16sp",
663752 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",
664753 .dependencies = &[_]*const Feature {
665 &feature_fpregs,
666754 &feature_fp16,
755 &feature_fpregs,
667756 },
668757};
669758
670759pub const feature_vfp4sp = Feature{
671760 .name = "vfp4sp",
761 .llvm_name = "vfp4sp",
672762 .description = "Enable VFP4 instructions with no double precision",
673763 .dependencies = &[_]*const Feature {
674 &feature_fpregs,
675 &feature_d32,
676764 &feature_fp16,
765 &feature_d32,
766 &feature_fpregs,
677767 },
678768};
679769
680770pub const feature_vmlxForwarding = Feature{
681771 .name = "vmlx-forwarding",
772 .llvm_name = "vmlx-forwarding",
682773 .description = "Has multiplier accumulator forwarding",
683774 .dependencies = &[_]*const Feature {
684775 },
......@@ -686,6 +777,7 @@ pub const feature_vmlxForwarding = Feature{
686777
687778pub const feature_virtualization = Feature{
688779 .name = "virtualization",
780 .llvm_name = "virtualization",
689781 .description = "Supports Virtualization extension",
690782 .dependencies = &[_]*const Feature {
691783 &feature_hwdiv,
......@@ -695,6 +787,7 @@ pub const feature_virtualization = Feature{
695787
696788pub const feature_zcz = Feature{
697789 .name = "zcz",
790 .llvm_name = "zcz",
698791 .description = "Has zero-cycle zeroing instructions",
699792 .dependencies = &[_]*const Feature {
700793 },
......@@ -854,8 +947,8 @@ pub const cpu_arm1156t2S = Cpu{
854947 .name = "arm1156t2-s",
855948 .llvm_name = "arm1156t2-s",
856949 .dependencies = &[_]*const Feature {
857 &feature_thumb2,
858950 &feature_dsp,
951 &feature_thumb2,
859952 },
860953};
861954
......@@ -863,8 +956,8 @@ pub const cpu_arm1156t2fS = Cpu{
863956 .name = "arm1156t2f-s",
864957 .llvm_name = "arm1156t2f-s",
865958 .dependencies = &[_]*const Feature {
866 &feature_thumb2,
867959 &feature_dsp,
960 &feature_thumb2,
868961 &feature_slowfpvmlx,
869962 &feature_fpregs,
870963 &feature_vfp2,
......@@ -1021,13 +1114,13 @@ pub const cpu_cortexA12 = Cpu{
10211114 .name = "cortex-a12",
10221115 .llvm_name = "cortex-a12",
10231116 .dependencies = &[_]*const Feature {
1024 &feature_d32,
1117 &feature_db,
10251118 &feature_perfmon,
10261119 &feature_fpregs,
1027 &feature_db,
1028 &feature_thumb2,
1120 &feature_d32,
10291121 &feature_v7clrex,
10301122 &feature_dsp,
1123 &feature_thumb2,
10311124 &feature_aclass,
10321125 &feature_avoidPartialCpsr,
10331126 &feature_retAddrStack,
......@@ -1046,13 +1139,13 @@ pub const cpu_cortexA15 = Cpu{
10461139 .name = "cortex-a15",
10471140 .llvm_name = "cortex-a15",
10481141 .dependencies = &[_]*const Feature {
1049 &feature_d32,
1142 &feature_db,
10501143 &feature_perfmon,
10511144 &feature_fpregs,
1052 &feature_db,
1053 &feature_thumb2,
1145 &feature_d32,
10541146 &feature_v7clrex,
10551147 &feature_dsp,
1148 &feature_thumb2,
10561149 &feature_aclass,
10571150 &feature_avoidPartialCpsr,
10581151 &feature_vldnAlign,
......@@ -1074,13 +1167,13 @@ pub const cpu_cortexA17 = Cpu{
10741167 .name = "cortex-a17",
10751168 .llvm_name = "cortex-a17",
10761169 .dependencies = &[_]*const Feature {
1077 &feature_d32,
1170 &feature_db,
10781171 &feature_perfmon,
10791172 &feature_fpregs,
1080 &feature_db,
1081 &feature_thumb2,
1173 &feature_d32,
10821174 &feature_v7clrex,
10831175 &feature_dsp,
1176 &feature_thumb2,
10841177 &feature_aclass,
10851178 &feature_avoidPartialCpsr,
10861179 &feature_retAddrStack,
......@@ -1099,20 +1192,20 @@ pub const cpu_cortexA32 = Cpu{
10991192 .name = "cortex-a32",
11001193 .llvm_name = "cortex-a32",
11011194 .dependencies = &[_]*const Feature {
1102 &feature_d32,
1103 &feature_hwdivArm,
1104 &feature_fpregs,
11051195 &feature_db,
1106 &feature_crc,
1107 &feature_fp16,
1196 &feature_trustzone,
11081197 &feature_perfmon,
1109 &feature_thumb2,
1110 &feature_mp,
1198 &feature_fpregs,
11111199 &feature_acquireRelease,
1112 &feature_hwdiv,
1113 &feature_trustzone,
1200 &feature_mp,
1201 &feature_d32,
11141202 &feature_v7clrex,
11151203 &feature_dsp,
1204 &feature_crc,
1205 &feature_fp16,
1206 &feature_hwdiv,
1207 &feature_hwdivArm,
1208 &feature_thumb2,
11161209 &feature_aclass,
11171210 &feature_crypto,
11181211 },
......@@ -1122,20 +1215,20 @@ pub const cpu_cortexA35 = Cpu{
11221215 .name = "cortex-a35",
11231216 .llvm_name = "cortex-a35",
11241217 .dependencies = &[_]*const Feature {
1125 &feature_d32,
1126 &feature_hwdivArm,
1127 &feature_fpregs,
11281218 &feature_db,
1129 &feature_crc,
1130 &feature_fp16,
1219 &feature_trustzone,
11311220 &feature_perfmon,
1132 &feature_thumb2,
1133 &feature_mp,
1221 &feature_fpregs,
11341222 &feature_acquireRelease,
1135 &feature_hwdiv,
1136 &feature_trustzone,
1223 &feature_mp,
1224 &feature_d32,
11371225 &feature_v7clrex,
11381226 &feature_dsp,
1227 &feature_crc,
1228 &feature_fp16,
1229 &feature_hwdiv,
1230 &feature_hwdivArm,
1231 &feature_thumb2,
11391232 &feature_aclass,
11401233 &feature_crypto,
11411234 },
......@@ -1145,13 +1238,13 @@ pub const cpu_cortexA5 = Cpu{
11451238 .name = "cortex-a5",
11461239 .llvm_name = "cortex-a5",
11471240 .dependencies = &[_]*const Feature {
1148 &feature_d32,
1241 &feature_db,
11491242 &feature_perfmon,
11501243 &feature_fpregs,
1151 &feature_db,
1152 &feature_thumb2,
1244 &feature_d32,
11531245 &feature_v7clrex,
11541246 &feature_dsp,
1247 &feature_thumb2,
11551248 &feature_aclass,
11561249 &feature_retAddrStack,
11571250 &feature_slowfpvmlx,
......@@ -1168,20 +1261,20 @@ pub const cpu_cortexA53 = Cpu{
11681261 .name = "cortex-a53",
11691262 .llvm_name = "cortex-a53",
11701263 .dependencies = &[_]*const Feature {
1171 &feature_d32,
1172 &feature_hwdivArm,
1173 &feature_fpregs,
11741264 &feature_db,
1175 &feature_crc,
1176 &feature_fp16,
1265 &feature_trustzone,
11771266 &feature_perfmon,
1178 &feature_thumb2,
1179 &feature_mp,
1267 &feature_fpregs,
11801268 &feature_acquireRelease,
1181 &feature_hwdiv,
1182 &feature_trustzone,
1269 &feature_mp,
1270 &feature_d32,
11831271 &feature_v7clrex,
11841272 &feature_dsp,
1273 &feature_crc,
1274 &feature_fp16,
1275 &feature_hwdiv,
1276 &feature_hwdivArm,
1277 &feature_thumb2,
11851278 &feature_aclass,
11861279 &feature_crypto,
11871280 &feature_fpao,
......@@ -1192,21 +1285,21 @@ pub const cpu_cortexA55 = Cpu{
11921285 .name = "cortex-a55",
11931286 .llvm_name = "cortex-a55",
11941287 .dependencies = &[_]*const Feature {
1195 &feature_d32,
1196 &feature_hwdivArm,
1197 &feature_fpregs,
1198 &feature_db,
1199 &feature_crc,
1200 &feature_fp16,
12011288 &feature_ras,
1289 &feature_db,
1290 &feature_trustzone,
12021291 &feature_perfmon,
1203 &feature_thumb2,
1204 &feature_mp,
1292 &feature_fpregs,
12051293 &feature_acquireRelease,
1206 &feature_hwdiv,
1207 &feature_trustzone,
1294 &feature_mp,
1295 &feature_d32,
12081296 &feature_v7clrex,
12091297 &feature_dsp,
1298 &feature_crc,
1299 &feature_fp16,
1300 &feature_hwdiv,
1301 &feature_hwdivArm,
1302 &feature_thumb2,
12101303 &feature_aclass,
12111304 &feature_dotprod,
12121305 },
......@@ -1216,20 +1309,20 @@ pub const cpu_cortexA57 = Cpu{
12161309 .name = "cortex-a57",
12171310 .llvm_name = "cortex-a57",
12181311 .dependencies = &[_]*const Feature {
1219 &feature_d32,
1220 &feature_hwdivArm,
1221 &feature_fpregs,
12221312 &feature_db,
1223 &feature_crc,
1224 &feature_fp16,
1313 &feature_trustzone,
12251314 &feature_perfmon,
1226 &feature_thumb2,
1227 &feature_mp,
1315 &feature_fpregs,
12281316 &feature_acquireRelease,
1229 &feature_hwdiv,
1230 &feature_trustzone,
1317 &feature_mp,
1318 &feature_d32,
12311319 &feature_v7clrex,
12321320 &feature_dsp,
1321 &feature_crc,
1322 &feature_fp16,
1323 &feature_hwdiv,
1324 &feature_hwdivArm,
1325 &feature_thumb2,
12331326 &feature_aclass,
12341327 &feature_avoidPartialCpsr,
12351328 &feature_cheapPredicableCpsr,
......@@ -1242,13 +1335,13 @@ pub const cpu_cortexA7 = Cpu{
12421335 .name = "cortex-a7",
12431336 .llvm_name = "cortex-a7",
12441337 .dependencies = &[_]*const Feature {
1245 &feature_d32,
1338 &feature_db,
12461339 &feature_perfmon,
12471340 &feature_fpregs,
1248 &feature_db,
1249 &feature_thumb2,
1341 &feature_d32,
12501342 &feature_v7clrex,
12511343 &feature_dsp,
1344 &feature_thumb2,
12521345 &feature_aclass,
12531346 &feature_retAddrStack,
12541347 &feature_slowfpvmlx,
......@@ -1269,20 +1362,20 @@ pub const cpu_cortexA72 = Cpu{
12691362 .name = "cortex-a72",
12701363 .llvm_name = "cortex-a72",
12711364 .dependencies = &[_]*const Feature {
1272 &feature_d32,
1273 &feature_hwdivArm,
1274 &feature_fpregs,
12751365 &feature_db,
1276 &feature_crc,
1277 &feature_fp16,
1366 &feature_trustzone,
12781367 &feature_perfmon,
1279 &feature_thumb2,
1280 &feature_mp,
1368 &feature_fpregs,
12811369 &feature_acquireRelease,
1282 &feature_hwdiv,
1283 &feature_trustzone,
1370 &feature_mp,
1371 &feature_d32,
12841372 &feature_v7clrex,
12851373 &feature_dsp,
1374 &feature_crc,
1375 &feature_fp16,
1376 &feature_hwdiv,
1377 &feature_hwdivArm,
1378 &feature_thumb2,
12861379 &feature_aclass,
12871380 &feature_crypto,
12881381 },
......@@ -1292,20 +1385,20 @@ pub const cpu_cortexA73 = Cpu{
12921385 .name = "cortex-a73",
12931386 .llvm_name = "cortex-a73",
12941387 .dependencies = &[_]*const Feature {
1295 &feature_d32,
1296 &feature_hwdivArm,
1297 &feature_fpregs,
12981388 &feature_db,
1299 &feature_crc,
1300 &feature_fp16,
1389 &feature_trustzone,
13011390 &feature_perfmon,
1302 &feature_thumb2,
1303 &feature_mp,
1391 &feature_fpregs,
13041392 &feature_acquireRelease,
1305 &feature_hwdiv,
1306 &feature_trustzone,
1393 &feature_mp,
1394 &feature_d32,
13071395 &feature_v7clrex,
13081396 &feature_dsp,
1397 &feature_crc,
1398 &feature_fp16,
1399 &feature_hwdiv,
1400 &feature_hwdivArm,
1401 &feature_thumb2,
13091402 &feature_aclass,
13101403 &feature_crypto,
13111404 },
......@@ -1315,21 +1408,21 @@ pub const cpu_cortexA75 = Cpu{
13151408 .name = "cortex-a75",
13161409 .llvm_name = "cortex-a75",
13171410 .dependencies = &[_]*const Feature {
1318 &feature_d32,
1319 &feature_hwdivArm,
1320 &feature_fpregs,
1321 &feature_db,
1322 &feature_crc,
1323 &feature_fp16,
13241411 &feature_ras,
1412 &feature_db,
1413 &feature_trustzone,
13251414 &feature_perfmon,
1326 &feature_thumb2,
1327 &feature_mp,
1415 &feature_fpregs,
13281416 &feature_acquireRelease,
1329 &feature_hwdiv,
1330 &feature_trustzone,
1417 &feature_mp,
1418 &feature_d32,
13311419 &feature_v7clrex,
13321420 &feature_dsp,
1421 &feature_crc,
1422 &feature_fp16,
1423 &feature_hwdiv,
1424 &feature_hwdivArm,
1425 &feature_thumb2,
13331426 &feature_aclass,
13341427 &feature_dotprod,
13351428 },
......@@ -1339,21 +1432,21 @@ pub const cpu_cortexA76 = Cpu{
13391432 .name = "cortex-a76",
13401433 .llvm_name = "cortex-a76",
13411434 .dependencies = &[_]*const Feature {
1342 &feature_d32,
1343 &feature_hwdivArm,
1344 &feature_fpregs,
1345 &feature_db,
1346 &feature_crc,
1347 &feature_fp16,
13481435 &feature_ras,
1436 &feature_db,
1437 &feature_trustzone,
13491438 &feature_perfmon,
1350 &feature_thumb2,
1351 &feature_mp,
1439 &feature_fpregs,
13521440 &feature_acquireRelease,
1353 &feature_hwdiv,
1354 &feature_trustzone,
1441 &feature_mp,
1442 &feature_d32,
13551443 &feature_v7clrex,
13561444 &feature_dsp,
1445 &feature_crc,
1446 &feature_fp16,
1447 &feature_hwdiv,
1448 &feature_hwdivArm,
1449 &feature_thumb2,
13571450 &feature_aclass,
13581451 &feature_crypto,
13591452 &feature_dotprod,
......@@ -1365,21 +1458,21 @@ pub const cpu_cortexA76ae = Cpu{
13651458 .name = "cortex-a76ae",
13661459 .llvm_name = "cortex-a76ae",
13671460 .dependencies = &[_]*const Feature {
1368 &feature_d32,
1369 &feature_hwdivArm,
1370 &feature_fpregs,
1371 &feature_db,
1372 &feature_crc,
1373 &feature_fp16,
13741461 &feature_ras,
1462 &feature_db,
1463 &feature_trustzone,
13751464 &feature_perfmon,
1376 &feature_thumb2,
1377 &feature_mp,
1465 &feature_fpregs,
13781466 &feature_acquireRelease,
1379 &feature_hwdiv,
1380 &feature_trustzone,
1467 &feature_mp,
1468 &feature_d32,
13811469 &feature_v7clrex,
13821470 &feature_dsp,
1471 &feature_crc,
1472 &feature_fp16,
1473 &feature_hwdiv,
1474 &feature_hwdivArm,
1475 &feature_thumb2,
13831476 &feature_aclass,
13841477 &feature_crypto,
13851478 &feature_dotprod,
......@@ -1391,13 +1484,13 @@ pub const cpu_cortexA8 = Cpu{
13911484 .name = "cortex-a8",
13921485 .llvm_name = "cortex-a8",
13931486 .dependencies = &[_]*const Feature {
1394 &feature_d32,
1487 &feature_db,
13951488 &feature_perfmon,
13961489 &feature_fpregs,
1397 &feature_db,
1398 &feature_thumb2,
1490 &feature_d32,
13991491 &feature_v7clrex,
14001492 &feature_dsp,
1493 &feature_thumb2,
14011494 &feature_aclass,
14021495 &feature_retAddrStack,
14031496 &feature_slowfpvmlx,
......@@ -1413,13 +1506,13 @@ pub const cpu_cortexA9 = Cpu{
14131506 .name = "cortex-a9",
14141507 .llvm_name = "cortex-a9",
14151508 .dependencies = &[_]*const Feature {
1416 &feature_d32,
1509 &feature_db,
14171510 &feature_perfmon,
14181511 &feature_fpregs,
1419 &feature_db,
1420 &feature_thumb2,
1512 &feature_d32,
14211513 &feature_v7clrex,
14221514 &feature_dsp,
1515 &feature_thumb2,
14231516 &feature_aclass,
14241517 &feature_avoidPartialCpsr,
14251518 &feature_vldnAlign,
......@@ -1441,9 +1534,9 @@ pub const cpu_cortexM0 = Cpu{
14411534 .llvm_name = "cortex-m0",
14421535 .dependencies = &[_]*const Feature {
14431536 &feature_db,
1444 &feature_mclass,
14451537 &feature_strictAlign,
14461538 &feature_noarm,
1539 &feature_mclass,
14471540 },
14481541};
14491542
......@@ -1452,9 +1545,9 @@ pub const cpu_cortexM0plus = Cpu{
14521545 .llvm_name = "cortex-m0plus",
14531546 .dependencies = &[_]*const Feature {
14541547 &feature_db,
1455 &feature_mclass,
14561548 &feature_strictAlign,
14571549 &feature_noarm,
1550 &feature_mclass,
14581551 },
14591552};
14601553
......@@ -1463,9 +1556,9 @@ pub const cpu_cortexM1 = Cpu{
14631556 .llvm_name = "cortex-m1",
14641557 .dependencies = &[_]*const Feature {
14651558 &feature_db,
1466 &feature_mclass,
14671559 &feature_strictAlign,
14681560 &feature_noarm,
1561 &feature_mclass,
14691562 },
14701563};
14711564
......@@ -1473,14 +1566,14 @@ pub const cpu_cortexM23 = Cpu{
14731566 .name = "cortex-m23",
14741567 .llvm_name = "cortex-m23",
14751568 .dependencies = &[_]*const Feature {
1476 &feature_mclass,
14771569 &feature_db,
1478 &feature_msecext8,
14791570 &feature_strictAlign,
14801571 &feature_acquireRelease,
1481 &feature_hwdiv,
14821572 &feature_v7clrex,
14831573 &feature_noarm,
1574 &feature_mclass,
1575 &feature_hwdiv,
1576 &feature_msecext8,
14841577 &feature_noMovt,
14851578 },
14861579};
......@@ -1489,13 +1582,13 @@ pub const cpu_cortexM3 = Cpu{
14891582 .name = "cortex-m3",
14901583 .llvm_name = "cortex-m3",
14911584 .dependencies = &[_]*const Feature {
1492 &feature_perfmon,
14931585 &feature_db,
1494 &feature_mclass,
1495 &feature_thumb2,
1496 &feature_hwdiv,
1586 &feature_perfmon,
14971587 &feature_v7clrex,
14981588 &feature_noarm,
1589 &feature_mclass,
1590 &feature_hwdiv,
1591 &feature_thumb2,
14991592 &feature_noBranchPredictor,
15001593 &feature_loopAlign,
15011594 &feature_useAa,
......@@ -1507,15 +1600,15 @@ pub const cpu_cortexM33 = Cpu{
15071600 .name = "cortex-m33",
15081601 .llvm_name = "cortex-m33",
15091602 .dependencies = &[_]*const Feature {
1510 &feature_perfmon,
1511 &feature_mclass,
15121603 &feature_db,
1513 &feature_msecext8,
1514 &feature_thumb2,
1604 &feature_perfmon,
15151605 &feature_acquireRelease,
1516 &feature_hwdiv,
15171606 &feature_v7clrex,
15181607 &feature_noarm,
1608 &feature_mclass,
1609 &feature_hwdiv,
1610 &feature_thumb2,
1611 &feature_msecext8,
15191612 &feature_dsp,
15201613 &feature_fp16,
15211614 &feature_fpregs,
......@@ -1532,15 +1625,15 @@ pub const cpu_cortexM35p = Cpu{
15321625 .name = "cortex-m35p",
15331626 .llvm_name = "cortex-m35p",
15341627 .dependencies = &[_]*const Feature {
1535 &feature_perfmon,
1536 &feature_mclass,
15371628 &feature_db,
1538 &feature_msecext8,
1539 &feature_thumb2,
1629 &feature_perfmon,
15401630 &feature_acquireRelease,
1541 &feature_hwdiv,
15421631 &feature_v7clrex,
15431632 &feature_noarm,
1633 &feature_mclass,
1634 &feature_hwdiv,
1635 &feature_thumb2,
1636 &feature_msecext8,
15441637 &feature_dsp,
15451638 &feature_fp16,
15461639 &feature_fpregs,
......@@ -1557,21 +1650,21 @@ pub const cpu_cortexM4 = Cpu{
15571650 .name = "cortex-m4",
15581651 .llvm_name = "cortex-m4",
15591652 .dependencies = &[_]*const Feature {
1560 &feature_perfmon,
15611653 &feature_db,
1562 &feature_mclass,
1563 &feature_thumb2,
1564 &feature_hwdiv,
1654 &feature_perfmon,
15651655 &feature_v7clrex,
15661656 &feature_dsp,
15671657 &feature_noarm,
1658 &feature_mclass,
1659 &feature_hwdiv,
1660 &feature_thumb2,
15681661 &feature_noBranchPredictor,
15691662 &feature_slowfpvmlx,
15701663 &feature_loopAlign,
15711664 &feature_useAa,
15721665 &feature_useMisched,
1573 &feature_fpregs,
15741666 &feature_fp16,
1667 &feature_fpregs,
15751668 &feature_vfp4d16sp,
15761669 },
15771670};
......@@ -1580,14 +1673,14 @@ pub const cpu_cortexM7 = Cpu{
15801673 .name = "cortex-m7",
15811674 .llvm_name = "cortex-m7",
15821675 .dependencies = &[_]*const Feature {
1583 &feature_perfmon,
15841676 &feature_db,
1585 &feature_mclass,
1586 &feature_thumb2,
1587 &feature_hwdiv,
1677 &feature_perfmon,
15881678 &feature_v7clrex,
15891679 &feature_dsp,
15901680 &feature_noarm,
1681 &feature_mclass,
1682 &feature_hwdiv,
1683 &feature_thumb2,
15911684 &feature_fp16,
15921685 &feature_fpregs,
15931686 &feature_fpArmv8d16,
......@@ -1598,13 +1691,13 @@ pub const cpu_cortexR4 = Cpu{
15981691 .name = "cortex-r4",
15991692 .llvm_name = "cortex-r4",
16001693 .dependencies = &[_]*const Feature {
1601 &feature_perfmon,
16021694 &feature_db,
1603 &feature_thumb2,
1695 &feature_perfmon,
16041696 &feature_rclass,
1605 &feature_hwdiv,
16061697 &feature_v7clrex,
16071698 &feature_dsp,
1699 &feature_hwdiv,
1700 &feature_thumb2,
16081701 &feature_avoidPartialCpsr,
16091702 &feature_retAddrStack,
16101703 },
......@@ -1614,13 +1707,13 @@ pub const cpu_cortexR4f = Cpu{
16141707 .name = "cortex-r4f",
16151708 .llvm_name = "cortex-r4f",
16161709 .dependencies = &[_]*const Feature {
1617 &feature_perfmon,
16181710 &feature_db,
1619 &feature_thumb2,
1711 &feature_perfmon,
16201712 &feature_rclass,
1621 &feature_hwdiv,
16221713 &feature_v7clrex,
16231714 &feature_dsp,
1715 &feature_hwdiv,
1716 &feature_thumb2,
16241717 &feature_avoidPartialCpsr,
16251718 &feature_retAddrStack,
16261719 &feature_slowfpvmlx,
......@@ -1634,13 +1727,13 @@ pub const cpu_cortexR5 = Cpu{
16341727 .name = "cortex-r5",
16351728 .llvm_name = "cortex-r5",
16361729 .dependencies = &[_]*const Feature {
1637 &feature_perfmon,
16381730 &feature_db,
1639 &feature_thumb2,
1731 &feature_perfmon,
16401732 &feature_rclass,
1641 &feature_hwdiv,
16421733 &feature_v7clrex,
16431734 &feature_dsp,
1735 &feature_hwdiv,
1736 &feature_thumb2,
16441737 &feature_avoidPartialCpsr,
16451738 &feature_hwdivArm,
16461739 &feature_retAddrStack,
......@@ -1655,21 +1748,21 @@ pub const cpu_cortexR52 = Cpu{
16551748 .name = "cortex-r52",
16561749 .llvm_name = "cortex-r52",
16571750 .dependencies = &[_]*const Feature {
1658 &feature_d32,
1659 &feature_hwdivArm,
1660 &feature_fpregs,
16611751 &feature_db,
1662 &feature_crc,
1663 &feature_fp16,
16641752 &feature_perfmon,
1665 &feature_thumb2,
1753 &feature_fpregs,
16661754 &feature_rclass,
1667 &feature_mp,
16681755 &feature_acquireRelease,
1669 &feature_hwdiv,
1756 &feature_mp,
1757 &feature_d32,
16701758 &feature_v7clrex,
1671 &feature_dfb,
16721759 &feature_dsp,
1760 &feature_crc,
1761 &feature_fp16,
1762 &feature_hwdiv,
1763 &feature_hwdivArm,
1764 &feature_thumb2,
1765 &feature_dfb,
16731766 &feature_fpao,
16741767 &feature_useAa,
16751768 &feature_useMisched,
......@@ -1680,13 +1773,13 @@ pub const cpu_cortexR7 = Cpu{
16801773 .name = "cortex-r7",
16811774 .llvm_name = "cortex-r7",
16821775 .dependencies = &[_]*const Feature {
1683 &feature_perfmon,
16841776 &feature_db,
1685 &feature_thumb2,
1777 &feature_perfmon,
16861778 &feature_rclass,
1687 &feature_hwdiv,
16881779 &feature_v7clrex,
16891780 &feature_dsp,
1781 &feature_hwdiv,
1782 &feature_thumb2,
16901783 &feature_avoidPartialCpsr,
16911784 &feature_fp16,
16921785 &feature_hwdivArm,
......@@ -1703,13 +1796,13 @@ pub const cpu_cortexR8 = Cpu{
17031796 .name = "cortex-r8",
17041797 .llvm_name = "cortex-r8",
17051798 .dependencies = &[_]*const Feature {
1706 &feature_perfmon,
17071799 &feature_db,
1708 &feature_thumb2,
1800 &feature_perfmon,
17091801 &feature_rclass,
1710 &feature_hwdiv,
17111802 &feature_v7clrex,
17121803 &feature_dsp,
1804 &feature_hwdiv,
1805 &feature_thumb2,
17131806 &feature_avoidPartialCpsr,
17141807 &feature_fp16,
17151808 &feature_hwdivArm,
......@@ -1726,20 +1819,20 @@ pub const cpu_cyclone = Cpu{
17261819 .name = "cyclone",
17271820 .llvm_name = "cyclone",
17281821 .dependencies = &[_]*const Feature {
1729 &feature_d32,
1730 &feature_hwdivArm,
1731 &feature_fpregs,
17321822 &feature_db,
1733 &feature_crc,
1734 &feature_fp16,
1823 &feature_trustzone,
17351824 &feature_perfmon,
1736 &feature_thumb2,
1737 &feature_mp,
1825 &feature_fpregs,
17381826 &feature_acquireRelease,
1739 &feature_hwdiv,
1740 &feature_trustzone,
1827 &feature_mp,
1828 &feature_d32,
17411829 &feature_v7clrex,
17421830 &feature_dsp,
1831 &feature_crc,
1832 &feature_fp16,
1833 &feature_hwdiv,
1834 &feature_hwdivArm,
1835 &feature_thumb2,
17431836 &feature_aclass,
17441837 &feature_avoidMovsShop,
17451838 &feature_avoidPartialCpsr,
......@@ -1765,33 +1858,33 @@ pub const cpu_exynosM1 = Cpu{
17651858 .name = "exynos-m1",
17661859 .llvm_name = "exynos-m1",
17671860 .dependencies = &[_]*const Feature {
1768 &feature_d32,
1769 &feature_hwdivArm,
1770 &feature_fpregs,
17711861 &feature_db,
1772 &feature_crc,
1773 &feature_fp16,
1862 &feature_trustzone,
17741863 &feature_perfmon,
1775 &feature_thumb2,
1776 &feature_mp,
1864 &feature_fpregs,
17771865 &feature_acquireRelease,
1778 &feature_hwdiv,
1779 &feature_trustzone,
1866 &feature_mp,
1867 &feature_d32,
17801868 &feature_v7clrex,
17811869 &feature_dsp,
1870 &feature_crc,
1871 &feature_fp16,
1872 &feature_hwdiv,
1873 &feature_hwdivArm,
1874 &feature_thumb2,
17821875 &feature_aclass,
1876 &feature_expandFpMlx,
17831877 &feature_fuseLiterals,
1784 &feature_profUnpr,
1878 &feature_fuseAes,
1879 &feature_slowVgetlni32,
17851880 &feature_wideStrideVfp,
1881 &feature_profUnpr,
17861882 &feature_slowVdup32,
1787 &feature_slowVgetlni32,
1883 &feature_slowfpvmlx,
17881884 &feature_dontWidenVmovs,
1789 &feature_fuseAes,
1885 &feature_useAa,
17901886 &feature_retAddrStack,
1791 &feature_expandFpMlx,
17921887 &feature_zcz,
1793 &feature_useAa,
1794 &feature_slowfpvmlx,
17951888 &feature_slowFpBrcc,
17961889 },
17971890};
......@@ -1800,33 +1893,33 @@ pub const cpu_exynosM2 = Cpu{
18001893 .name = "exynos-m2",
18011894 .llvm_name = "exynos-m2",
18021895 .dependencies = &[_]*const Feature {
1803 &feature_d32,
1804 &feature_hwdivArm,
1805 &feature_fpregs,
18061896 &feature_db,
1807 &feature_crc,
1808 &feature_fp16,
1897 &feature_trustzone,
18091898 &feature_perfmon,
1810 &feature_thumb2,
1811 &feature_mp,
1899 &feature_fpregs,
18121900 &feature_acquireRelease,
1813 &feature_hwdiv,
1814 &feature_trustzone,
1901 &feature_mp,
1902 &feature_d32,
18151903 &feature_v7clrex,
18161904 &feature_dsp,
1905 &feature_crc,
1906 &feature_fp16,
1907 &feature_hwdiv,
1908 &feature_hwdivArm,
1909 &feature_thumb2,
18171910 &feature_aclass,
1911 &feature_expandFpMlx,
18181912 &feature_fuseLiterals,
1819 &feature_profUnpr,
1913 &feature_fuseAes,
1914 &feature_slowVgetlni32,
18201915 &feature_wideStrideVfp,
1916 &feature_profUnpr,
18211917 &feature_slowVdup32,
1822 &feature_slowVgetlni32,
1918 &feature_slowfpvmlx,
18231919 &feature_dontWidenVmovs,
1824 &feature_fuseAes,
1920 &feature_useAa,
18251921 &feature_retAddrStack,
1826 &feature_expandFpMlx,
18271922 &feature_zcz,
1828 &feature_useAa,
1829 &feature_slowfpvmlx,
18301923 &feature_slowFpBrcc,
18311924 },
18321925};
......@@ -1835,33 +1928,33 @@ pub const cpu_exynosM3 = Cpu{
18351928 .name = "exynos-m3",
18361929 .llvm_name = "exynos-m3",
18371930 .dependencies = &[_]*const Feature {
1838 &feature_d32,
1839 &feature_hwdivArm,
1840 &feature_fpregs,
18411931 &feature_db,
1842 &feature_crc,
1843 &feature_fp16,
1932 &feature_trustzone,
18441933 &feature_perfmon,
1845 &feature_thumb2,
1846 &feature_mp,
1934 &feature_fpregs,
18471935 &feature_acquireRelease,
1848 &feature_hwdiv,
1849 &feature_trustzone,
1936 &feature_mp,
1937 &feature_d32,
18501938 &feature_v7clrex,
18511939 &feature_dsp,
1940 &feature_crc,
1941 &feature_fp16,
1942 &feature_hwdiv,
1943 &feature_hwdivArm,
1944 &feature_thumb2,
18521945 &feature_aclass,
1946 &feature_expandFpMlx,
18531947 &feature_fuseLiterals,
1854 &feature_profUnpr,
1948 &feature_fuseAes,
1949 &feature_slowVgetlni32,
18551950 &feature_wideStrideVfp,
1951 &feature_profUnpr,
18561952 &feature_slowVdup32,
1857 &feature_slowVgetlni32,
1953 &feature_slowfpvmlx,
18581954 &feature_dontWidenVmovs,
1859 &feature_fuseAes,
1955 &feature_useAa,
18601956 &feature_retAddrStack,
1861 &feature_expandFpMlx,
18621957 &feature_zcz,
1863 &feature_useAa,
1864 &feature_slowfpvmlx,
18651958 &feature_slowFpBrcc,
18661959 },
18671960};
......@@ -1870,36 +1963,36 @@ pub const cpu_exynosM4 = Cpu{
18701963 .name = "exynos-m4",
18711964 .llvm_name = "exynos-m4",
18721965 .dependencies = &[_]*const Feature {
1873 &feature_d32,
1874 &feature_hwdivArm,
1875 &feature_fpregs,
1876 &feature_db,
1877 &feature_crc,
1878 &feature_fp16,
18791966 &feature_ras,
1967 &feature_db,
1968 &feature_trustzone,
18801969 &feature_perfmon,
1881 &feature_thumb2,
1882 &feature_mp,
1970 &feature_fpregs,
18831971 &feature_acquireRelease,
1884 &feature_hwdiv,
1885 &feature_trustzone,
1972 &feature_mp,
1973 &feature_d32,
18861974 &feature_v7clrex,
18871975 &feature_dsp,
1976 &feature_crc,
1977 &feature_fp16,
1978 &feature_hwdiv,
1979 &feature_hwdivArm,
1980 &feature_thumb2,
18881981 &feature_aclass,
18891982 &feature_dotprod,
18901983 &feature_fullfp16,
1984 &feature_expandFpMlx,
18911985 &feature_fuseLiterals,
1892 &feature_profUnpr,
1986 &feature_fuseAes,
1987 &feature_slowVgetlni32,
18931988 &feature_wideStrideVfp,
1989 &feature_profUnpr,
18941990 &feature_slowVdup32,
1895 &feature_slowVgetlni32,
1991 &feature_slowfpvmlx,
18961992 &feature_dontWidenVmovs,
1897 &feature_fuseAes,
1993 &feature_useAa,
18981994 &feature_retAddrStack,
1899 &feature_expandFpMlx,
19001995 &feature_zcz,
1901 &feature_useAa,
1902 &feature_slowfpvmlx,
19031996 &feature_slowFpBrcc,
19041997 },
19051998};
......@@ -1908,36 +2001,36 @@ pub const cpu_exynosM5 = Cpu{
19082001 .name = "exynos-m5",
19092002 .llvm_name = "exynos-m5",
19102003 .dependencies = &[_]*const Feature {
1911 &feature_d32,
1912 &feature_hwdivArm,
1913 &feature_fpregs,
1914 &feature_db,
1915 &feature_crc,
1916 &feature_fp16,
19172004 &feature_ras,
2005 &feature_db,
2006 &feature_trustzone,
19182007 &feature_perfmon,
1919 &feature_thumb2,
1920 &feature_mp,
2008 &feature_fpregs,
19212009 &feature_acquireRelease,
1922 &feature_hwdiv,
1923 &feature_trustzone,
2010 &feature_mp,
2011 &feature_d32,
19242012 &feature_v7clrex,
19252013 &feature_dsp,
2014 &feature_crc,
2015 &feature_fp16,
2016 &feature_hwdiv,
2017 &feature_hwdivArm,
2018 &feature_thumb2,
19262019 &feature_aclass,
19272020 &feature_dotprod,
19282021 &feature_fullfp16,
2022 &feature_expandFpMlx,
19292023 &feature_fuseLiterals,
1930 &feature_profUnpr,
2024 &feature_fuseAes,
2025 &feature_slowVgetlni32,
19312026 &feature_wideStrideVfp,
2027 &feature_profUnpr,
19322028 &feature_slowVdup32,
1933 &feature_slowVgetlni32,
2029 &feature_slowfpvmlx,
19342030 &feature_dontWidenVmovs,
1935 &feature_fuseAes,
2031 &feature_useAa,
19362032 &feature_retAddrStack,
1937 &feature_expandFpMlx,
19382033 &feature_zcz,
1939 &feature_useAa,
1940 &feature_slowfpvmlx,
19412034 &feature_slowFpBrcc,
19422035 },
19432036};
......@@ -1960,13 +2053,13 @@ pub const cpu_krait = Cpu{
19602053 .name = "krait",
19612054 .llvm_name = "krait",
19622055 .dependencies = &[_]*const Feature {
1963 &feature_d32,
2056 &feature_db,
19642057 &feature_perfmon,
19652058 &feature_fpregs,
1966 &feature_db,
1967 &feature_thumb2,
2059 &feature_d32,
19682060 &feature_v7clrex,
19692061 &feature_dsp,
2062 &feature_thumb2,
19702063 &feature_aclass,
19712064 &feature_avoidPartialCpsr,
19722065 &feature_vldnAlign,
......@@ -1984,20 +2077,20 @@ pub const cpu_kryo = Cpu{
19842077 .name = "kryo",
19852078 .llvm_name = "kryo",
19862079 .dependencies = &[_]*const Feature {
1987 &feature_d32,
1988 &feature_hwdivArm,
1989 &feature_fpregs,
19902080 &feature_db,
1991 &feature_crc,
1992 &feature_fp16,
2081 &feature_trustzone,
19932082 &feature_perfmon,
1994 &feature_thumb2,
1995 &feature_mp,
2083 &feature_fpregs,
19962084 &feature_acquireRelease,
1997 &feature_hwdiv,
1998 &feature_trustzone,
2085 &feature_mp,
2086 &feature_d32,
19992087 &feature_v7clrex,
20002088 &feature_dsp,
2089 &feature_crc,
2090 &feature_fp16,
2091 &feature_hwdiv,
2092 &feature_hwdivArm,
2093 &feature_thumb2,
20012094 &feature_aclass,
20022095 &feature_crypto,
20032096 },
......@@ -2024,21 +2117,21 @@ pub const cpu_neoverseN1 = Cpu{
20242117 .name = "neoverse-n1",
20252118 .llvm_name = "neoverse-n1",
20262119 .dependencies = &[_]*const Feature {
2027 &feature_d32,
2028 &feature_hwdivArm,
2029 &feature_fpregs,
2030 &feature_db,
2031 &feature_crc,
2032 &feature_fp16,
20332120 &feature_ras,
2121 &feature_db,
2122 &feature_trustzone,
20342123 &feature_perfmon,
2035 &feature_thumb2,
2036 &feature_mp,
2124 &feature_fpregs,
20372125 &feature_acquireRelease,
2038 &feature_hwdiv,
2039 &feature_trustzone,
2126 &feature_mp,
2127 &feature_d32,
20402128 &feature_v7clrex,
20412129 &feature_dsp,
2130 &feature_crc,
2131 &feature_fp16,
2132 &feature_hwdiv,
2133 &feature_hwdivArm,
2134 &feature_thumb2,
20422135 &feature_aclass,
20432136 &feature_crypto,
20442137 &feature_dotprod,
......@@ -2050,9 +2143,9 @@ pub const cpu_sc000 = Cpu{
20502143 .llvm_name = "sc000",
20512144 .dependencies = &[_]*const Feature {
20522145 &feature_db,
2053 &feature_mclass,
20542146 &feature_strictAlign,
20552147 &feature_noarm,
2148 &feature_mclass,
20562149 },
20572150};
20582151
......@@ -2060,13 +2153,13 @@ pub const cpu_sc300 = Cpu{
20602153 .name = "sc300",
20612154 .llvm_name = "sc300",
20622155 .dependencies = &[_]*const Feature {
2063 &feature_perfmon,
20642156 &feature_db,
2065 &feature_mclass,
2066 &feature_thumb2,
2067 &feature_hwdiv,
2157 &feature_perfmon,
20682158 &feature_v7clrex,
20692159 &feature_noarm,
2160 &feature_mclass,
2161 &feature_hwdiv,
2162 &feature_thumb2,
20702163 &feature_noBranchPredictor,
20712164 &feature_useAa,
20722165 &feature_useMisched,
......@@ -2105,13 +2198,13 @@ pub const cpu_swift = Cpu{
21052198 .name = "swift",
21062199 .llvm_name = "swift",
21072200 .dependencies = &[_]*const Feature {
2108 &feature_d32,
2201 &feature_db,
21092202 &feature_perfmon,
21102203 &feature_fpregs,
2111 &feature_db,
2112 &feature_thumb2,
2204 &feature_d32,
21132205 &feature_v7clrex,
21142206 &feature_dsp,
2207 &feature_thumb2,
21152208 &feature_aclass,
21162209 &feature_avoidMovsShop,
21172210 &feature_avoidPartialCpsr,
lib/std/target/avr.zig+1416-1398
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_addsubiw = Feature{
55 .name = "addsubiw",
6 .llvm_name = "addsubiw",
67 .description = "Enable 16-bit register-immediate addition and subtraction instructions",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_addsubiw = Feature{
1011
1112pub const feature_break = Feature{
1213 .name = "break",
14 .llvm_name = "break",
1315 .description = "The device supports the `BREAK` debugging instruction",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_break = Feature{
1719
1820pub const feature_des = Feature{
1921 .name = "des",
22 .llvm_name = "des",
2023 .description = "The device supports the `DES k` encryption instruction",
2124 .dependencies = &[_]*const Feature {
2225 },
......@@ -24,6 +27,7 @@ pub const feature_des = Feature{
2427
2528pub const feature_eijmpcall = Feature{
2629 .name = "eijmpcall",
30 .llvm_name = "eijmpcall",
2731 .description = "The device supports the `EIJMP`/`EICALL` instructions",
2832 .dependencies = &[_]*const Feature {
2933 },
......@@ -31,6 +35,7 @@ pub const feature_eijmpcall = Feature{
3135
3236pub const feature_elpm = Feature{
3337 .name = "elpm",
38 .llvm_name = "elpm",
3439 .description = "The device supports the ELPM instruction",
3540 .dependencies = &[_]*const Feature {
3641 },
......@@ -38,6 +43,7 @@ pub const feature_elpm = Feature{
3843
3944pub const feature_elpmx = Feature{
4045 .name = "elpmx",
46 .llvm_name = "elpmx",
4147 .description = "The device supports the `ELPM Rd, Z[+]` instructions",
4248 .dependencies = &[_]*const Feature {
4349 },
......@@ -45,6 +51,7 @@ pub const feature_elpmx = Feature{
4551
4652pub const feature_ijmpcall = Feature{
4753 .name = "ijmpcall",
54 .llvm_name = "ijmpcall",
4855 .description = "The device supports `IJMP`/`ICALL`instructions",
4956 .dependencies = &[_]*const Feature {
5057 },
......@@ -52,6 +59,7 @@ pub const feature_ijmpcall = Feature{
5259
5360pub const feature_jmpcall = Feature{
5461 .name = "jmpcall",
62 .llvm_name = "jmpcall",
5563 .description = "The device supports the `JMP` and `CALL` instructions",
5664 .dependencies = &[_]*const Feature {
5765 },
......@@ -59,6 +67,7 @@ pub const feature_jmpcall = Feature{
5967
6068pub const feature_lpm = Feature{
6169 .name = "lpm",
70 .llvm_name = "lpm",
6271 .description = "The device supports the `LPM` instruction",
6372 .dependencies = &[_]*const Feature {
6473 },
......@@ -66,6 +75,7 @@ pub const feature_lpm = Feature{
6675
6776pub const feature_lpmx = Feature{
6877 .name = "lpmx",
78 .llvm_name = "lpmx",
6979 .description = "The device supports the `LPM Rd, Z[+]` instruction",
7080 .dependencies = &[_]*const Feature {
7181 },
......@@ -73,6 +83,7 @@ pub const feature_lpmx = Feature{
7383
7484pub const feature_movw = Feature{
7585 .name = "movw",
86 .llvm_name = "movw",
7687 .description = "The device supports the 16-bit MOVW instruction",
7788 .dependencies = &[_]*const Feature {
7889 },
......@@ -80,6 +91,7 @@ pub const feature_movw = Feature{
8091
8192pub const feature_mul = Feature{
8293 .name = "mul",
94 .llvm_name = "mul",
8395 .description = "The device supports the multiplication instructions",
8496 .dependencies = &[_]*const Feature {
8597 },
......@@ -87,6 +99,7 @@ pub const feature_mul = Feature{
8799
88100pub const feature_rmw = Feature{
89101 .name = "rmw",
102 .llvm_name = "rmw",
90103 .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",
91104 .dependencies = &[_]*const Feature {
92105 },
......@@ -94,6 +107,7 @@ pub const feature_rmw = Feature{
94107
95108pub const feature_spm = Feature{
96109 .name = "spm",
110 .llvm_name = "spm",
97111 .description = "The device supports the `SPM` instruction",
98112 .dependencies = &[_]*const Feature {
99113 },
......@@ -101,6 +115,7 @@ pub const feature_spm = Feature{
101115
102116pub const feature_spmx = Feature{
103117 .name = "spmx",
118 .llvm_name = "spmx",
104119 .description = "The device supports the `SPM Z+` instruction",
105120 .dependencies = &[_]*const Feature {
106121 },
......@@ -108,6 +123,7 @@ pub const feature_spmx = Feature{
108123
109124pub const feature_sram = Feature{
110125 .name = "sram",
126 .llvm_name = "sram",
111127 .description = "The device has random access memory",
112128 .dependencies = &[_]*const Feature {
113129 },
......@@ -115,6 +131,7 @@ pub const feature_sram = Feature{
115131
116132pub const feature_smallstack = Feature{
117133 .name = "smallstack",
134 .llvm_name = "smallstack",
118135 .description = "The device has an 8-bit stack pointer",
119136 .dependencies = &[_]*const Feature {
120137 },
......@@ -122,6 +139,7 @@ pub const feature_smallstack = Feature{
122139
123140pub const feature_tinyencoding = Feature{
124141 .name = "tinyencoding",
142 .llvm_name = "tinyencoding",
125143 .description = "The device has Tiny core specific instruction encodings",
126144 .dependencies = &[_]*const Feature {
127145 },
......@@ -152,12 +170,12 @@ pub const cpu_at43usb320 = Cpu{
152170 .name = "at43usb320",
153171 .llvm_name = "at43usb320",
154172 .dependencies = &[_]*const Feature {
155 &feature_elpm,
156 &feature_lpm,
157 &feature_ijmpcall,
158173 &feature_sram,
159174 &feature_jmpcall,
175 &feature_elpm,
176 &feature_lpm,
160177 &feature_addsubiw,
178 &feature_ijmpcall,
161179 },
162180};
163181
......@@ -165,11 +183,11 @@ pub const cpu_at43usb355 = Cpu{
165183 .name = "at43usb355",
166184 .llvm_name = "at43usb355",
167185 .dependencies = &[_]*const Feature {
168 &feature_lpm,
169 &feature_ijmpcall,
170186 &feature_sram,
171187 &feature_jmpcall,
188 &feature_lpm,
172189 &feature_addsubiw,
190 &feature_ijmpcall,
173191 },
174192};
175193
......@@ -177,11 +195,11 @@ pub const cpu_at76c711 = Cpu{
177195 .name = "at76c711",
178196 .llvm_name = "at76c711",
179197 .dependencies = &[_]*const Feature {
180 &feature_lpm,
181 &feature_ijmpcall,
182198 &feature_sram,
183199 &feature_jmpcall,
200 &feature_lpm,
184201 &feature_addsubiw,
202 &feature_ijmpcall,
185203 },
186204};
187205
......@@ -189,10 +207,10 @@ pub const cpu_at86rf401 = Cpu{
189207 .name = "at86rf401",
190208 .llvm_name = "at86rf401",
191209 .dependencies = &[_]*const Feature {
192 &feature_lpm,
193 &feature_ijmpcall,
194210 &feature_sram,
211 &feature_lpm,
195212 &feature_addsubiw,
213 &feature_ijmpcall,
196214 &feature_lpmx,
197215 &feature_movw,
198216 },
......@@ -202,10 +220,10 @@ pub const cpu_at90c8534 = Cpu{
202220 .name = "at90c8534",
203221 .llvm_name = "at90c8534",
204222 .dependencies = &[_]*const Feature {
205 &feature_lpm,
206 &feature_ijmpcall,
207223 &feature_sram,
224 &feature_lpm,
208225 &feature_addsubiw,
226 &feature_ijmpcall,
209227 },
210228};
211229
......@@ -213,18 +231,18 @@ pub const cpu_at90can128 = Cpu{
213231 .name = "at90can128",
214232 .llvm_name = "at90can128",
215233 .dependencies = &[_]*const Feature {
216 &feature_lpmx,
234 &feature_sram,
235 &feature_jmpcall,
236 &feature_mul,
217237 &feature_elpm,
218 &feature_spm,
219238 &feature_lpm,
239 &feature_lpmx,
240 &feature_spm,
241 &feature_addsubiw,
220242 &feature_ijmpcall,
221243 &feature_elpmx,
222 &feature_sram,
223244 &feature_break,
224 &feature_jmpcall,
225 &feature_mul,
226245 &feature_movw,
227 &feature_addsubiw,
228246 },
229247};
230248
......@@ -232,16 +250,16 @@ pub const cpu_at90can32 = Cpu{
232250 .name = "at90can32",
233251 .llvm_name = "at90can32",
234252 .dependencies = &[_]*const Feature {
235 &feature_lpmx,
253 &feature_sram,
254 &feature_jmpcall,
255 &feature_mul,
236256 &feature_lpm,
257 &feature_lpmx,
237258 &feature_spm,
259 &feature_addsubiw,
238260 &feature_ijmpcall,
239 &feature_sram,
240261 &feature_break,
241 &feature_jmpcall,
242 &feature_mul,
243262 &feature_movw,
244 &feature_addsubiw,
245263 },
246264};
247265
......@@ -249,16 +267,16 @@ pub const cpu_at90can64 = Cpu{
249267 .name = "at90can64",
250268 .llvm_name = "at90can64",
251269 .dependencies = &[_]*const Feature {
252 &feature_lpmx,
270 &feature_sram,
271 &feature_jmpcall,
272 &feature_mul,
253273 &feature_lpm,
274 &feature_lpmx,
254275 &feature_spm,
276 &feature_addsubiw,
255277 &feature_ijmpcall,
256 &feature_sram,
257278 &feature_break,
258 &feature_jmpcall,
259 &feature_mul,
260279 &feature_movw,
261 &feature_addsubiw,
262280 },
263281};
264282
......@@ -266,15 +284,15 @@ pub const cpu_at90pwm1 = Cpu{
266284 .name = "at90pwm1",
267285 .llvm_name = "at90pwm1",
268286 .dependencies = &[_]*const Feature {
269 &feature_lpmx,
287 &feature_sram,
288 &feature_mul,
270289 &feature_lpm,
290 &feature_lpmx,
271291 &feature_spm,
292 &feature_addsubiw,
272293 &feature_ijmpcall,
273 &feature_sram,
274294 &feature_break,
275 &feature_mul,
276295 &feature_movw,
277 &feature_addsubiw,
278296 },
279297};
280298
......@@ -282,16 +300,16 @@ pub const cpu_at90pwm161 = Cpu{
282300 .name = "at90pwm161",
283301 .llvm_name = "at90pwm161",
284302 .dependencies = &[_]*const Feature {
285 &feature_lpmx,
303 &feature_sram,
304 &feature_jmpcall,
305 &feature_mul,
286306 &feature_lpm,
307 &feature_lpmx,
287308 &feature_spm,
309 &feature_addsubiw,
288310 &feature_ijmpcall,
289 &feature_sram,
290311 &feature_break,
291 &feature_jmpcall,
292 &feature_mul,
293312 &feature_movw,
294 &feature_addsubiw,
295313 },
296314};
297315
......@@ -299,15 +317,15 @@ pub const cpu_at90pwm2 = Cpu{
299317 .name = "at90pwm2",
300318 .llvm_name = "at90pwm2",
301319 .dependencies = &[_]*const Feature {
302 &feature_lpmx,
320 &feature_sram,
321 &feature_mul,
303322 &feature_lpm,
323 &feature_lpmx,
304324 &feature_spm,
325 &feature_addsubiw,
305326 &feature_ijmpcall,
306 &feature_sram,
307327 &feature_break,
308 &feature_mul,
309328 &feature_movw,
310 &feature_addsubiw,
311329 },
312330};
313331
......@@ -315,16 +333,16 @@ pub const cpu_at90pwm216 = Cpu{
315333 .name = "at90pwm216",
316334 .llvm_name = "at90pwm216",
317335 .dependencies = &[_]*const Feature {
318 &feature_lpmx,
336 &feature_sram,
337 &feature_jmpcall,
338 &feature_mul,
319339 &feature_lpm,
340 &feature_lpmx,
320341 &feature_spm,
342 &feature_addsubiw,
321343 &feature_ijmpcall,
322 &feature_sram,
323344 &feature_break,
324 &feature_jmpcall,
325 &feature_mul,
326345 &feature_movw,
327 &feature_addsubiw,
328346 },
329347};
330348
......@@ -332,15 +350,15 @@ pub const cpu_at90pwm2b = Cpu{
332350 .name = "at90pwm2b",
333351 .llvm_name = "at90pwm2b",
334352 .dependencies = &[_]*const Feature {
335 &feature_lpmx,
353 &feature_sram,
354 &feature_mul,
336355 &feature_lpm,
356 &feature_lpmx,
337357 &feature_spm,
358 &feature_addsubiw,
338359 &feature_ijmpcall,
339 &feature_sram,
340360 &feature_break,
341 &feature_mul,
342361 &feature_movw,
343 &feature_addsubiw,
344362 },
345363};
346364
......@@ -348,15 +366,15 @@ pub const cpu_at90pwm3 = Cpu{
348366 .name = "at90pwm3",
349367 .llvm_name = "at90pwm3",
350368 .dependencies = &[_]*const Feature {
351 &feature_lpmx,
369 &feature_sram,
370 &feature_mul,
352371 &feature_lpm,
372 &feature_lpmx,
353373 &feature_spm,
374 &feature_addsubiw,
354375 &feature_ijmpcall,
355 &feature_sram,
356376 &feature_break,
357 &feature_mul,
358377 &feature_movw,
359 &feature_addsubiw,
360378 },
361379};
362380
......@@ -364,16 +382,16 @@ pub const cpu_at90pwm316 = Cpu{
364382 .name = "at90pwm316",
365383 .llvm_name = "at90pwm316",
366384 .dependencies = &[_]*const Feature {
367 &feature_lpmx,
385 &feature_sram,
386 &feature_jmpcall,
387 &feature_mul,
368388 &feature_lpm,
389 &feature_lpmx,
369390 &feature_spm,
391 &feature_addsubiw,
370392 &feature_ijmpcall,
371 &feature_sram,
372393 &feature_break,
373 &feature_jmpcall,
374 &feature_mul,
375394 &feature_movw,
376 &feature_addsubiw,
377395 },
378396};
379397
......@@ -381,15 +399,15 @@ pub const cpu_at90pwm3b = Cpu{
381399 .name = "at90pwm3b",
382400 .llvm_name = "at90pwm3b",
383401 .dependencies = &[_]*const Feature {
384 &feature_lpmx,
402 &feature_sram,
403 &feature_mul,
385404 &feature_lpm,
405 &feature_lpmx,
386406 &feature_spm,
407 &feature_addsubiw,
387408 &feature_ijmpcall,
388 &feature_sram,
389409 &feature_break,
390 &feature_mul,
391410 &feature_movw,
392 &feature_addsubiw,
393411 },
394412};
395413
......@@ -397,15 +415,15 @@ pub const cpu_at90pwm81 = Cpu{
397415 .name = "at90pwm81",
398416 .llvm_name = "at90pwm81",
399417 .dependencies = &[_]*const Feature {
400 &feature_lpmx,
418 &feature_sram,
419 &feature_mul,
401420 &feature_lpm,
421 &feature_lpmx,
402422 &feature_spm,
423 &feature_addsubiw,
403424 &feature_ijmpcall,
404 &feature_sram,
405425 &feature_break,
406 &feature_mul,
407426 &feature_movw,
408 &feature_addsubiw,
409427 },
410428};
411429
......@@ -420,10 +438,10 @@ pub const cpu_at90s2313 = Cpu{
420438 .name = "at90s2313",
421439 .llvm_name = "at90s2313",
422440 .dependencies = &[_]*const Feature {
423 &feature_lpm,
424 &feature_ijmpcall,
425441 &feature_sram,
442 &feature_lpm,
426443 &feature_addsubiw,
444 &feature_ijmpcall,
427445 },
428446};
429447
......@@ -431,10 +449,10 @@ pub const cpu_at90s2323 = Cpu{
431449 .name = "at90s2323",
432450 .llvm_name = "at90s2323",
433451 .dependencies = &[_]*const Feature {
434 &feature_lpm,
435 &feature_ijmpcall,
436452 &feature_sram,
453 &feature_lpm,
437454 &feature_addsubiw,
455 &feature_ijmpcall,
438456 },
439457};
440458
......@@ -442,10 +460,10 @@ pub const cpu_at90s2333 = Cpu{
442460 .name = "at90s2333",
443461 .llvm_name = "at90s2333",
444462 .dependencies = &[_]*const Feature {
445 &feature_lpm,
446 &feature_ijmpcall,
447463 &feature_sram,
464 &feature_lpm,
448465 &feature_addsubiw,
466 &feature_ijmpcall,
449467 },
450468};
451469
......@@ -453,10 +471,10 @@ pub const cpu_at90s2343 = Cpu{
453471 .name = "at90s2343",
454472 .llvm_name = "at90s2343",
455473 .dependencies = &[_]*const Feature {
456 &feature_lpm,
457 &feature_ijmpcall,
458474 &feature_sram,
475 &feature_lpm,
459476 &feature_addsubiw,
477 &feature_ijmpcall,
460478 },
461479};
462480
......@@ -464,10 +482,10 @@ pub const cpu_at90s4414 = Cpu{
464482 .name = "at90s4414",
465483 .llvm_name = "at90s4414",
466484 .dependencies = &[_]*const Feature {
467 &feature_lpm,
468 &feature_ijmpcall,
469485 &feature_sram,
486 &feature_lpm,
470487 &feature_addsubiw,
488 &feature_ijmpcall,
471489 },
472490};
473491
......@@ -475,10 +493,10 @@ pub const cpu_at90s4433 = Cpu{
475493 .name = "at90s4433",
476494 .llvm_name = "at90s4433",
477495 .dependencies = &[_]*const Feature {
478 &feature_lpm,
479 &feature_ijmpcall,
480496 &feature_sram,
497 &feature_lpm,
481498 &feature_addsubiw,
499 &feature_ijmpcall,
482500 },
483501};
484502
......@@ -486,10 +504,10 @@ pub const cpu_at90s4434 = Cpu{
486504 .name = "at90s4434",
487505 .llvm_name = "at90s4434",
488506 .dependencies = &[_]*const Feature {
489 &feature_lpm,
490 &feature_ijmpcall,
491507 &feature_sram,
508 &feature_lpm,
492509 &feature_addsubiw,
510 &feature_ijmpcall,
493511 },
494512};
495513
......@@ -497,10 +515,10 @@ pub const cpu_at90s8515 = Cpu{
497515 .name = "at90s8515",
498516 .llvm_name = "at90s8515",
499517 .dependencies = &[_]*const Feature {
500 &feature_lpm,
501 &feature_ijmpcall,
502518 &feature_sram,
519 &feature_lpm,
503520 &feature_addsubiw,
521 &feature_ijmpcall,
504522 },
505523};
506524
......@@ -508,10 +526,10 @@ pub const cpu_at90s8535 = Cpu{
508526 .name = "at90s8535",
509527 .llvm_name = "at90s8535",
510528 .dependencies = &[_]*const Feature {
511 &feature_lpm,
512 &feature_ijmpcall,
513529 &feature_sram,
530 &feature_lpm,
514531 &feature_addsubiw,
532 &feature_ijmpcall,
515533 },
516534};
517535
......@@ -519,16 +537,16 @@ pub const cpu_at90scr100 = Cpu{
519537 .name = "at90scr100",
520538 .llvm_name = "at90scr100",
521539 .dependencies = &[_]*const Feature {
522 &feature_lpmx,
540 &feature_sram,
541 &feature_jmpcall,
542 &feature_mul,
523543 &feature_lpm,
544 &feature_lpmx,
524545 &feature_spm,
546 &feature_addsubiw,
525547 &feature_ijmpcall,
526 &feature_sram,
527548 &feature_break,
528 &feature_jmpcall,
529 &feature_mul,
530549 &feature_movw,
531 &feature_addsubiw,
532550 },
533551};
534552
......@@ -536,18 +554,18 @@ pub const cpu_at90usb1286 = Cpu{
536554 .name = "at90usb1286",
537555 .llvm_name = "at90usb1286",
538556 .dependencies = &[_]*const Feature {
539 &feature_lpmx,
557 &feature_sram,
558 &feature_jmpcall,
559 &feature_mul,
540560 &feature_elpm,
541 &feature_spm,
542561 &feature_lpm,
562 &feature_lpmx,
563 &feature_spm,
564 &feature_addsubiw,
543565 &feature_ijmpcall,
544566 &feature_elpmx,
545 &feature_sram,
546567 &feature_break,
547 &feature_jmpcall,
548 &feature_mul,
549568 &feature_movw,
550 &feature_addsubiw,
551569 },
552570};
553571
......@@ -555,18 +573,18 @@ pub const cpu_at90usb1287 = Cpu{
555573 .name = "at90usb1287",
556574 .llvm_name = "at90usb1287",
557575 .dependencies = &[_]*const Feature {
558 &feature_lpmx,
576 &feature_sram,
577 &feature_jmpcall,
578 &feature_mul,
559579 &feature_elpm,
560 &feature_spm,
561580 &feature_lpm,
581 &feature_lpmx,
582 &feature_spm,
583 &feature_addsubiw,
562584 &feature_ijmpcall,
563585 &feature_elpmx,
564 &feature_sram,
565586 &feature_break,
566 &feature_jmpcall,
567 &feature_mul,
568587 &feature_movw,
569 &feature_addsubiw,
570588 },
571589};
572590
......@@ -574,15 +592,15 @@ pub const cpu_at90usb162 = Cpu{
574592 .name = "at90usb162",
575593 .llvm_name = "at90usb162",
576594 .dependencies = &[_]*const Feature {
577 &feature_lpmx,
595 &feature_sram,
596 &feature_jmpcall,
578597 &feature_lpm,
598 &feature_lpmx,
579599 &feature_spm,
600 &feature_addsubiw,
580601 &feature_ijmpcall,
581 &feature_sram,
582602 &feature_break,
583 &feature_jmpcall,
584603 &feature_movw,
585 &feature_addsubiw,
586604 },
587605};
588606
......@@ -590,16 +608,16 @@ pub const cpu_at90usb646 = Cpu{
590608 .name = "at90usb646",
591609 .llvm_name = "at90usb646",
592610 .dependencies = &[_]*const Feature {
593 &feature_lpmx,
611 &feature_sram,
612 &feature_jmpcall,
613 &feature_mul,
594614 &feature_lpm,
615 &feature_lpmx,
595616 &feature_spm,
617 &feature_addsubiw,
596618 &feature_ijmpcall,
597 &feature_sram,
598619 &feature_break,
599 &feature_jmpcall,
600 &feature_mul,
601620 &feature_movw,
602 &feature_addsubiw,
603621 },
604622};
605623
......@@ -607,16 +625,16 @@ pub const cpu_at90usb647 = Cpu{
607625 .name = "at90usb647",
608626 .llvm_name = "at90usb647",
609627 .dependencies = &[_]*const Feature {
610 &feature_lpmx,
628 &feature_sram,
629 &feature_jmpcall,
630 &feature_mul,
611631 &feature_lpm,
632 &feature_lpmx,
612633 &feature_spm,
634 &feature_addsubiw,
613635 &feature_ijmpcall,
614 &feature_sram,
615636 &feature_break,
616 &feature_jmpcall,
617 &feature_mul,
618637 &feature_movw,
619 &feature_addsubiw,
620638 },
621639};
622640
......@@ -624,15 +642,15 @@ pub const cpu_at90usb82 = Cpu{
624642 .name = "at90usb82",
625643 .llvm_name = "at90usb82",
626644 .dependencies = &[_]*const Feature {
627 &feature_lpmx,
645 &feature_sram,
646 &feature_jmpcall,
628647 &feature_lpm,
648 &feature_lpmx,
629649 &feature_spm,
650 &feature_addsubiw,
630651 &feature_ijmpcall,
631 &feature_sram,
632652 &feature_break,
633 &feature_jmpcall,
634653 &feature_movw,
635 &feature_addsubiw,
636654 },
637655};
638656
......@@ -640,11 +658,11 @@ pub const cpu_at94k = Cpu{
640658 .name = "at94k",
641659 .llvm_name = "at94k",
642660 .dependencies = &[_]*const Feature {
643 &feature_lpm,
644 &feature_ijmpcall,
645661 &feature_sram,
646662 &feature_jmpcall,
663 &feature_lpm,
647664 &feature_addsubiw,
665 &feature_ijmpcall,
648666 &feature_lpmx,
649667 &feature_movw,
650668 &feature_mul,
......@@ -655,14 +673,14 @@ pub const cpu_ata5272 = Cpu{
655673 .name = "ata5272",
656674 .llvm_name = "ata5272",
657675 .dependencies = &[_]*const Feature {
658 &feature_lpmx,
676 &feature_sram,
659677 &feature_lpm,
678 &feature_lpmx,
660679 &feature_spm,
680 &feature_addsubiw,
661681 &feature_ijmpcall,
662 &feature_sram,
663682 &feature_break,
664683 &feature_movw,
665 &feature_addsubiw,
666684 },
667685};
668686
......@@ -670,15 +688,15 @@ pub const cpu_ata5505 = Cpu{
670688 .name = "ata5505",
671689 .llvm_name = "ata5505",
672690 .dependencies = &[_]*const Feature {
673 &feature_lpmx,
691 &feature_sram,
692 &feature_jmpcall,
674693 &feature_lpm,
694 &feature_lpmx,
675695 &feature_spm,
696 &feature_addsubiw,
676697 &feature_ijmpcall,
677 &feature_sram,
678698 &feature_break,
679 &feature_jmpcall,
680699 &feature_movw,
681 &feature_addsubiw,
682700 },
683701};
684702
......@@ -686,16 +704,16 @@ pub const cpu_ata5790 = Cpu{
686704 .name = "ata5790",
687705 .llvm_name = "ata5790",
688706 .dependencies = &[_]*const Feature {
689 &feature_lpmx,
707 &feature_sram,
708 &feature_jmpcall,
709 &feature_mul,
690710 &feature_lpm,
711 &feature_lpmx,
691712 &feature_spm,
713 &feature_addsubiw,
692714 &feature_ijmpcall,
693 &feature_sram,
694715 &feature_break,
695 &feature_jmpcall,
696 &feature_mul,
697716 &feature_movw,
698 &feature_addsubiw,
699717 },
700718};
701719
......@@ -703,16 +721,16 @@ pub const cpu_ata5795 = Cpu{
703721 .name = "ata5795",
704722 .llvm_name = "ata5795",
705723 .dependencies = &[_]*const Feature {
706 &feature_lpmx,
724 &feature_sram,
725 &feature_jmpcall,
726 &feature_mul,
707727 &feature_lpm,
728 &feature_lpmx,
708729 &feature_spm,
730 &feature_addsubiw,
709731 &feature_ijmpcall,
710 &feature_sram,
711732 &feature_break,
712 &feature_jmpcall,
713 &feature_mul,
714733 &feature_movw,
715 &feature_addsubiw,
716734 },
717735};
718736
......@@ -720,15 +738,15 @@ pub const cpu_ata6285 = Cpu{
720738 .name = "ata6285",
721739 .llvm_name = "ata6285",
722740 .dependencies = &[_]*const Feature {
723 &feature_lpmx,
741 &feature_sram,
742 &feature_mul,
724743 &feature_lpm,
744 &feature_lpmx,
725745 &feature_spm,
746 &feature_addsubiw,
726747 &feature_ijmpcall,
727 &feature_sram,
728748 &feature_break,
729 &feature_mul,
730749 &feature_movw,
731 &feature_addsubiw,
732750 },
733751};
734752
......@@ -736,15 +754,15 @@ pub const cpu_ata6286 = Cpu{
736754 .name = "ata6286",
737755 .llvm_name = "ata6286",
738756 .dependencies = &[_]*const Feature {
739 &feature_lpmx,
757 &feature_sram,
758 &feature_mul,
740759 &feature_lpm,
760 &feature_lpmx,
741761 &feature_spm,
762 &feature_addsubiw,
742763 &feature_ijmpcall,
743 &feature_sram,
744764 &feature_break,
745 &feature_mul,
746765 &feature_movw,
747 &feature_addsubiw,
748766 },
749767};
750768
......@@ -752,15 +770,15 @@ pub const cpu_ata6289 = Cpu{
752770 .name = "ata6289",
753771 .llvm_name = "ata6289",
754772 .dependencies = &[_]*const Feature {
755 &feature_lpmx,
773 &feature_sram,
774 &feature_mul,
756775 &feature_lpm,
776 &feature_lpmx,
757777 &feature_spm,
778 &feature_addsubiw,
758779 &feature_ijmpcall,
759 &feature_sram,
760780 &feature_break,
761 &feature_mul,
762781 &feature_movw,
763 &feature_addsubiw,
764782 },
765783};
766784
......@@ -768,12 +786,12 @@ pub const cpu_atmega103 = Cpu{
768786 .name = "atmega103",
769787 .llvm_name = "atmega103",
770788 .dependencies = &[_]*const Feature {
771 &feature_elpm,
772 &feature_lpm,
773 &feature_ijmpcall,
774789 &feature_sram,
775790 &feature_jmpcall,
791 &feature_elpm,
792 &feature_lpm,
776793 &feature_addsubiw,
794 &feature_ijmpcall,
777795 },
778796};
779797
......@@ -781,18 +799,18 @@ pub const cpu_atmega128 = Cpu{
781799 .name = "atmega128",
782800 .llvm_name = "atmega128",
783801 .dependencies = &[_]*const Feature {
784 &feature_lpmx,
802 &feature_sram,
803 &feature_jmpcall,
804 &feature_mul,
785805 &feature_elpm,
786 &feature_spm,
787806 &feature_lpm,
807 &feature_lpmx,
808 &feature_spm,
809 &feature_addsubiw,
788810 &feature_ijmpcall,
789811 &feature_elpmx,
790 &feature_sram,
791812 &feature_break,
792 &feature_jmpcall,
793 &feature_mul,
794813 &feature_movw,
795 &feature_addsubiw,
796814 },
797815};
798816
......@@ -800,18 +818,18 @@ pub const cpu_atmega1280 = Cpu{
800818 .name = "atmega1280",
801819 .llvm_name = "atmega1280",
802820 .dependencies = &[_]*const Feature {
803 &feature_lpmx,
821 &feature_sram,
822 &feature_jmpcall,
823 &feature_mul,
804824 &feature_elpm,
805 &feature_spm,
806825 &feature_lpm,
826 &feature_lpmx,
827 &feature_spm,
828 &feature_addsubiw,
807829 &feature_ijmpcall,
808830 &feature_elpmx,
809 &feature_sram,
810831 &feature_break,
811 &feature_jmpcall,
812 &feature_mul,
813832 &feature_movw,
814 &feature_addsubiw,
815833 },
816834};
817835
......@@ -819,18 +837,18 @@ pub const cpu_atmega1281 = Cpu{
819837 .name = "atmega1281",
820838 .llvm_name = "atmega1281",
821839 .dependencies = &[_]*const Feature {
822 &feature_lpmx,
840 &feature_sram,
841 &feature_jmpcall,
842 &feature_mul,
823843 &feature_elpm,
824 &feature_spm,
825844 &feature_lpm,
845 &feature_lpmx,
846 &feature_spm,
847 &feature_addsubiw,
826848 &feature_ijmpcall,
827849 &feature_elpmx,
828 &feature_sram,
829850 &feature_break,
830 &feature_jmpcall,
831 &feature_mul,
832851 &feature_movw,
833 &feature_addsubiw,
834852 },
835853};
836854
......@@ -838,18 +856,18 @@ pub const cpu_atmega1284 = Cpu{
838856 .name = "atmega1284",
839857 .llvm_name = "atmega1284",
840858 .dependencies = &[_]*const Feature {
841 &feature_lpmx,
859 &feature_sram,
860 &feature_jmpcall,
861 &feature_mul,
842862 &feature_elpm,
843 &feature_spm,
844863 &feature_lpm,
864 &feature_lpmx,
865 &feature_spm,
866 &feature_addsubiw,
845867 &feature_ijmpcall,
846868 &feature_elpmx,
847 &feature_sram,
848869 &feature_break,
849 &feature_jmpcall,
850 &feature_mul,
851870 &feature_movw,
852 &feature_addsubiw,
853871 },
854872};
855873
......@@ -857,18 +875,18 @@ pub const cpu_atmega1284p = Cpu{
857875 .name = "atmega1284p",
858876 .llvm_name = "atmega1284p",
859877 .dependencies = &[_]*const Feature {
860 &feature_lpmx,
878 &feature_sram,
879 &feature_jmpcall,
880 &feature_mul,
861881 &feature_elpm,
862 &feature_spm,
863882 &feature_lpm,
883 &feature_lpmx,
884 &feature_spm,
885 &feature_addsubiw,
864886 &feature_ijmpcall,
865887 &feature_elpmx,
866 &feature_sram,
867888 &feature_break,
868 &feature_jmpcall,
869 &feature_mul,
870889 &feature_movw,
871 &feature_addsubiw,
872890 },
873891};
874892
......@@ -876,18 +894,18 @@ pub const cpu_atmega1284rfr2 = Cpu{
876894 .name = "atmega1284rfr2",
877895 .llvm_name = "atmega1284rfr2",
878896 .dependencies = &[_]*const Feature {
879 &feature_lpmx,
897 &feature_sram,
898 &feature_jmpcall,
899 &feature_mul,
880900 &feature_elpm,
881 &feature_spm,
882901 &feature_lpm,
902 &feature_lpmx,
903 &feature_spm,
904 &feature_addsubiw,
883905 &feature_ijmpcall,
884906 &feature_elpmx,
885 &feature_sram,
886907 &feature_break,
887 &feature_jmpcall,
888 &feature_mul,
889908 &feature_movw,
890 &feature_addsubiw,
891909 },
892910};
893911
......@@ -895,18 +913,18 @@ pub const cpu_atmega128a = Cpu{
895913 .name = "atmega128a",
896914 .llvm_name = "atmega128a",
897915 .dependencies = &[_]*const Feature {
898 &feature_lpmx,
916 &feature_sram,
917 &feature_jmpcall,
918 &feature_mul,
899919 &feature_elpm,
900 &feature_spm,
901920 &feature_lpm,
921 &feature_lpmx,
922 &feature_spm,
923 &feature_addsubiw,
902924 &feature_ijmpcall,
903925 &feature_elpmx,
904 &feature_sram,
905926 &feature_break,
906 &feature_jmpcall,
907 &feature_mul,
908927 &feature_movw,
909 &feature_addsubiw,
910928 },
911929};
912930
......@@ -914,18 +932,18 @@ pub const cpu_atmega128rfa1 = Cpu{
914932 .name = "atmega128rfa1",
915933 .llvm_name = "atmega128rfa1",
916934 .dependencies = &[_]*const Feature {
917 &feature_lpmx,
935 &feature_sram,
936 &feature_jmpcall,
937 &feature_mul,
918938 &feature_elpm,
919 &feature_spm,
920939 &feature_lpm,
940 &feature_lpmx,
941 &feature_spm,
942 &feature_addsubiw,
921943 &feature_ijmpcall,
922944 &feature_elpmx,
923 &feature_sram,
924945 &feature_break,
925 &feature_jmpcall,
926 &feature_mul,
927946 &feature_movw,
928 &feature_addsubiw,
929947 },
930948};
931949
......@@ -933,18 +951,18 @@ pub const cpu_atmega128rfr2 = Cpu{
933951 .name = "atmega128rfr2",
934952 .llvm_name = "atmega128rfr2",
935953 .dependencies = &[_]*const Feature {
936 &feature_lpmx,
954 &feature_sram,
955 &feature_jmpcall,
956 &feature_mul,
937957 &feature_elpm,
938 &feature_spm,
939958 &feature_lpm,
959 &feature_lpmx,
960 &feature_spm,
961 &feature_addsubiw,
940962 &feature_ijmpcall,
941963 &feature_elpmx,
942 &feature_sram,
943964 &feature_break,
944 &feature_jmpcall,
945 &feature_mul,
946965 &feature_movw,
947 &feature_addsubiw,
948966 },
949967};
950968
......@@ -952,16 +970,16 @@ pub const cpu_atmega16 = Cpu{
952970 .name = "atmega16",
953971 .llvm_name = "atmega16",
954972 .dependencies = &[_]*const Feature {
955 &feature_lpmx,
973 &feature_sram,
974 &feature_jmpcall,
975 &feature_mul,
956976 &feature_lpm,
977 &feature_lpmx,
957978 &feature_spm,
979 &feature_addsubiw,
958980 &feature_ijmpcall,
959 &feature_sram,
960981 &feature_break,
961 &feature_jmpcall,
962 &feature_mul,
963982 &feature_movw,
964 &feature_addsubiw,
965983 },
966984};
967985
......@@ -969,11 +987,11 @@ pub const cpu_atmega161 = Cpu{
969987 .name = "atmega161",
970988 .llvm_name = "atmega161",
971989 .dependencies = &[_]*const Feature {
972 &feature_lpm,
973 &feature_ijmpcall,
974990 &feature_sram,
975991 &feature_jmpcall,
992 &feature_lpm,
976993 &feature_addsubiw,
994 &feature_ijmpcall,
977995 &feature_lpmx,
978996 &feature_movw,
979997 &feature_mul,
......@@ -985,16 +1003,16 @@ pub const cpu_atmega162 = Cpu{
9851003 .name = "atmega162",
9861004 .llvm_name = "atmega162",
9871005 .dependencies = &[_]*const Feature {
988 &feature_lpmx,
1006 &feature_sram,
1007 &feature_jmpcall,
1008 &feature_mul,
9891009 &feature_lpm,
1010 &feature_lpmx,
9901011 &feature_spm,
1012 &feature_addsubiw,
9911013 &feature_ijmpcall,
992 &feature_sram,
9931014 &feature_break,
994 &feature_jmpcall,
995 &feature_mul,
9961015 &feature_movw,
997 &feature_addsubiw,
9981016 },
9991017};
10001018
......@@ -1002,11 +1020,11 @@ pub const cpu_atmega163 = Cpu{
10021020 .name = "atmega163",
10031021 .llvm_name = "atmega163",
10041022 .dependencies = &[_]*const Feature {
1005 &feature_lpm,
1006 &feature_ijmpcall,
10071023 &feature_sram,
10081024 &feature_jmpcall,
1025 &feature_lpm,
10091026 &feature_addsubiw,
1027 &feature_ijmpcall,
10101028 &feature_lpmx,
10111029 &feature_movw,
10121030 &feature_mul,
......@@ -1018,16 +1036,16 @@ pub const cpu_atmega164a = Cpu{
10181036 .name = "atmega164a",
10191037 .llvm_name = "atmega164a",
10201038 .dependencies = &[_]*const Feature {
1021 &feature_lpmx,
1039 &feature_sram,
1040 &feature_jmpcall,
1041 &feature_mul,
10221042 &feature_lpm,
1043 &feature_lpmx,
10231044 &feature_spm,
1045 &feature_addsubiw,
10241046 &feature_ijmpcall,
1025 &feature_sram,
10261047 &feature_break,
1027 &feature_jmpcall,
1028 &feature_mul,
10291048 &feature_movw,
1030 &feature_addsubiw,
10311049 },
10321050};
10331051
......@@ -1035,16 +1053,16 @@ pub const cpu_atmega164p = Cpu{
10351053 .name = "atmega164p",
10361054 .llvm_name = "atmega164p",
10371055 .dependencies = &[_]*const Feature {
1038 &feature_lpmx,
1056 &feature_sram,
1057 &feature_jmpcall,
1058 &feature_mul,
10391059 &feature_lpm,
1060 &feature_lpmx,
10401061 &feature_spm,
1062 &feature_addsubiw,
10411063 &feature_ijmpcall,
1042 &feature_sram,
10431064 &feature_break,
1044 &feature_jmpcall,
1045 &feature_mul,
10461065 &feature_movw,
1047 &feature_addsubiw,
10481066 },
10491067};
10501068
......@@ -1052,16 +1070,16 @@ pub const cpu_atmega164pa = Cpu{
10521070 .name = "atmega164pa",
10531071 .llvm_name = "atmega164pa",
10541072 .dependencies = &[_]*const Feature {
1055 &feature_lpmx,
1073 &feature_sram,
1074 &feature_jmpcall,
1075 &feature_mul,
10561076 &feature_lpm,
1077 &feature_lpmx,
10571078 &feature_spm,
1079 &feature_addsubiw,
10581080 &feature_ijmpcall,
1059 &feature_sram,
10601081 &feature_break,
1061 &feature_jmpcall,
1062 &feature_mul,
10631082 &feature_movw,
1064 &feature_addsubiw,
10651083 },
10661084};
10671085
......@@ -1069,16 +1087,16 @@ pub const cpu_atmega165 = Cpu{
10691087 .name = "atmega165",
10701088 .llvm_name = "atmega165",
10711089 .dependencies = &[_]*const Feature {
1072 &feature_lpmx,
1090 &feature_sram,
1091 &feature_jmpcall,
1092 &feature_mul,
10731093 &feature_lpm,
1094 &feature_lpmx,
10741095 &feature_spm,
1096 &feature_addsubiw,
10751097 &feature_ijmpcall,
1076 &feature_sram,
10771098 &feature_break,
1078 &feature_jmpcall,
1079 &feature_mul,
10801099 &feature_movw,
1081 &feature_addsubiw,
10821100 },
10831101};
10841102
......@@ -1086,16 +1104,16 @@ pub const cpu_atmega165a = Cpu{
10861104 .name = "atmega165a",
10871105 .llvm_name = "atmega165a",
10881106 .dependencies = &[_]*const Feature {
1089 &feature_lpmx,
1107 &feature_sram,
1108 &feature_jmpcall,
1109 &feature_mul,
10901110 &feature_lpm,
1111 &feature_lpmx,
10911112 &feature_spm,
1113 &feature_addsubiw,
10921114 &feature_ijmpcall,
1093 &feature_sram,
10941115 &feature_break,
1095 &feature_jmpcall,
1096 &feature_mul,
10971116 &feature_movw,
1098 &feature_addsubiw,
10991117 },
11001118};
11011119
......@@ -1103,16 +1121,16 @@ pub const cpu_atmega165p = Cpu{
11031121 .name = "atmega165p",
11041122 .llvm_name = "atmega165p",
11051123 .dependencies = &[_]*const Feature {
1106 &feature_lpmx,
1124 &feature_sram,
1125 &feature_jmpcall,
1126 &feature_mul,
11071127 &feature_lpm,
1128 &feature_lpmx,
11081129 &feature_spm,
1130 &feature_addsubiw,
11091131 &feature_ijmpcall,
1110 &feature_sram,
11111132 &feature_break,
1112 &feature_jmpcall,
1113 &feature_mul,
11141133 &feature_movw,
1115 &feature_addsubiw,
11161134 },
11171135};
11181136
......@@ -1120,16 +1138,16 @@ pub const cpu_atmega165pa = Cpu{
11201138 .name = "atmega165pa",
11211139 .llvm_name = "atmega165pa",
11221140 .dependencies = &[_]*const Feature {
1123 &feature_lpmx,
1141 &feature_sram,
1142 &feature_jmpcall,
1143 &feature_mul,
11241144 &feature_lpm,
1145 &feature_lpmx,
11251146 &feature_spm,
1147 &feature_addsubiw,
11261148 &feature_ijmpcall,
1127 &feature_sram,
11281149 &feature_break,
1129 &feature_jmpcall,
1130 &feature_mul,
11311150 &feature_movw,
1132 &feature_addsubiw,
11331151 },
11341152};
11351153
......@@ -1137,16 +1155,16 @@ pub const cpu_atmega168 = Cpu{
11371155 .name = "atmega168",
11381156 .llvm_name = "atmega168",
11391157 .dependencies = &[_]*const Feature {
1140 &feature_lpmx,
1158 &feature_sram,
1159 &feature_jmpcall,
1160 &feature_mul,
11411161 &feature_lpm,
1162 &feature_lpmx,
11421163 &feature_spm,
1164 &feature_addsubiw,
11431165 &feature_ijmpcall,
1144 &feature_sram,
11451166 &feature_break,
1146 &feature_jmpcall,
1147 &feature_mul,
11481167 &feature_movw,
1149 &feature_addsubiw,
11501168 },
11511169};
11521170
......@@ -1154,16 +1172,16 @@ pub const cpu_atmega168a = Cpu{
11541172 .name = "atmega168a",
11551173 .llvm_name = "atmega168a",
11561174 .dependencies = &[_]*const Feature {
1157 &feature_lpmx,
1175 &feature_sram,
1176 &feature_jmpcall,
1177 &feature_mul,
11581178 &feature_lpm,
1179 &feature_lpmx,
11591180 &feature_spm,
1181 &feature_addsubiw,
11601182 &feature_ijmpcall,
1161 &feature_sram,
11621183 &feature_break,
1163 &feature_jmpcall,
1164 &feature_mul,
11651184 &feature_movw,
1166 &feature_addsubiw,
11671185 },
11681186};
11691187
......@@ -1171,16 +1189,16 @@ pub const cpu_atmega168p = Cpu{
11711189 .name = "atmega168p",
11721190 .llvm_name = "atmega168p",
11731191 .dependencies = &[_]*const Feature {
1174 &feature_lpmx,
1192 &feature_sram,
1193 &feature_jmpcall,
1194 &feature_mul,
11751195 &feature_lpm,
1196 &feature_lpmx,
11761197 &feature_spm,
1198 &feature_addsubiw,
11771199 &feature_ijmpcall,
1178 &feature_sram,
11791200 &feature_break,
1180 &feature_jmpcall,
1181 &feature_mul,
11821201 &feature_movw,
1183 &feature_addsubiw,
11841202 },
11851203};
11861204
......@@ -1188,16 +1206,16 @@ pub const cpu_atmega168pa = Cpu{
11881206 .name = "atmega168pa",
11891207 .llvm_name = "atmega168pa",
11901208 .dependencies = &[_]*const Feature {
1191 &feature_lpmx,
1209 &feature_sram,
1210 &feature_jmpcall,
1211 &feature_mul,
11921212 &feature_lpm,
1213 &feature_lpmx,
11931214 &feature_spm,
1215 &feature_addsubiw,
11941216 &feature_ijmpcall,
1195 &feature_sram,
11961217 &feature_break,
1197 &feature_jmpcall,
1198 &feature_mul,
11991218 &feature_movw,
1200 &feature_addsubiw,
12011219 },
12021220};
12031221
......@@ -1205,16 +1223,16 @@ pub const cpu_atmega169 = Cpu{
12051223 .name = "atmega169",
12061224 .llvm_name = "atmega169",
12071225 .dependencies = &[_]*const Feature {
1208 &feature_lpmx,
1226 &feature_sram,
1227 &feature_jmpcall,
1228 &feature_mul,
12091229 &feature_lpm,
1230 &feature_lpmx,
12101231 &feature_spm,
1232 &feature_addsubiw,
12111233 &feature_ijmpcall,
1212 &feature_sram,
12131234 &feature_break,
1214 &feature_jmpcall,
1215 &feature_mul,
12161235 &feature_movw,
1217 &feature_addsubiw,
12181236 },
12191237};
12201238
......@@ -1222,16 +1240,16 @@ pub const cpu_atmega169a = Cpu{
12221240 .name = "atmega169a",
12231241 .llvm_name = "atmega169a",
12241242 .dependencies = &[_]*const Feature {
1225 &feature_lpmx,
1243 &feature_sram,
1244 &feature_jmpcall,
1245 &feature_mul,
12261246 &feature_lpm,
1247 &feature_lpmx,
12271248 &feature_spm,
1249 &feature_addsubiw,
12281250 &feature_ijmpcall,
1229 &feature_sram,
12301251 &feature_break,
1231 &feature_jmpcall,
1232 &feature_mul,
12331252 &feature_movw,
1234 &feature_addsubiw,
12351253 },
12361254};
12371255
......@@ -1239,16 +1257,16 @@ pub const cpu_atmega169p = Cpu{
12391257 .name = "atmega169p",
12401258 .llvm_name = "atmega169p",
12411259 .dependencies = &[_]*const Feature {
1242 &feature_lpmx,
1260 &feature_sram,
1261 &feature_jmpcall,
1262 &feature_mul,
12431263 &feature_lpm,
1264 &feature_lpmx,
12441265 &feature_spm,
1266 &feature_addsubiw,
12451267 &feature_ijmpcall,
1246 &feature_sram,
12471268 &feature_break,
1248 &feature_jmpcall,
1249 &feature_mul,
12501269 &feature_movw,
1251 &feature_addsubiw,
12521270 },
12531271};
12541272
......@@ -1256,16 +1274,16 @@ pub const cpu_atmega169pa = Cpu{
12561274 .name = "atmega169pa",
12571275 .llvm_name = "atmega169pa",
12581276 .dependencies = &[_]*const Feature {
1259 &feature_lpmx,
1277 &feature_sram,
1278 &feature_jmpcall,
1279 &feature_mul,
12601280 &feature_lpm,
1281 &feature_lpmx,
12611282 &feature_spm,
1283 &feature_addsubiw,
12621284 &feature_ijmpcall,
1263 &feature_sram,
12641285 &feature_break,
1265 &feature_jmpcall,
1266 &feature_mul,
12671286 &feature_movw,
1268 &feature_addsubiw,
12691287 },
12701288};
12711289
......@@ -1273,16 +1291,16 @@ pub const cpu_atmega16a = Cpu{
12731291 .name = "atmega16a",
12741292 .llvm_name = "atmega16a",
12751293 .dependencies = &[_]*const Feature {
1276 &feature_lpmx,
1294 &feature_sram,
1295 &feature_jmpcall,
1296 &feature_mul,
12771297 &feature_lpm,
1298 &feature_lpmx,
12781299 &feature_spm,
1300 &feature_addsubiw,
12791301 &feature_ijmpcall,
1280 &feature_sram,
12811302 &feature_break,
1282 &feature_jmpcall,
1283 &feature_mul,
12841303 &feature_movw,
1285 &feature_addsubiw,
12861304 },
12871305};
12881306
......@@ -1290,16 +1308,16 @@ pub const cpu_atmega16hva = Cpu{
12901308 .name = "atmega16hva",
12911309 .llvm_name = "atmega16hva",
12921310 .dependencies = &[_]*const Feature {
1293 &feature_lpmx,
1311 &feature_sram,
1312 &feature_jmpcall,
1313 &feature_mul,
12941314 &feature_lpm,
1315 &feature_lpmx,
12951316 &feature_spm,
1317 &feature_addsubiw,
12961318 &feature_ijmpcall,
1297 &feature_sram,
12981319 &feature_break,
1299 &feature_jmpcall,
1300 &feature_mul,
13011320 &feature_movw,
1302 &feature_addsubiw,
13031321 },
13041322};
13051323
......@@ -1307,16 +1325,16 @@ pub const cpu_atmega16hva2 = Cpu{
13071325 .name = "atmega16hva2",
13081326 .llvm_name = "atmega16hva2",
13091327 .dependencies = &[_]*const Feature {
1310 &feature_lpmx,
1328 &feature_sram,
1329 &feature_jmpcall,
1330 &feature_mul,
13111331 &feature_lpm,
1332 &feature_lpmx,
13121333 &feature_spm,
1334 &feature_addsubiw,
13131335 &feature_ijmpcall,
1314 &feature_sram,
13151336 &feature_break,
1316 &feature_jmpcall,
1317 &feature_mul,
13181337 &feature_movw,
1319 &feature_addsubiw,
13201338 },
13211339};
13221340
......@@ -1324,16 +1342,16 @@ pub const cpu_atmega16hvb = Cpu{
13241342 .name = "atmega16hvb",
13251343 .llvm_name = "atmega16hvb",
13261344 .dependencies = &[_]*const Feature {
1327 &feature_lpmx,
1345 &feature_sram,
1346 &feature_jmpcall,
1347 &feature_mul,
13281348 &feature_lpm,
1349 &feature_lpmx,
13291350 &feature_spm,
1351 &feature_addsubiw,
13301352 &feature_ijmpcall,
1331 &feature_sram,
13321353 &feature_break,
1333 &feature_jmpcall,
1334 &feature_mul,
13351354 &feature_movw,
1336 &feature_addsubiw,
13371355 },
13381356};
13391357
......@@ -1341,16 +1359,16 @@ pub const cpu_atmega16hvbrevb = Cpu{
13411359 .name = "atmega16hvbrevb",
13421360 .llvm_name = "atmega16hvbrevb",
13431361 .dependencies = &[_]*const Feature {
1344 &feature_lpmx,
1362 &feature_sram,
1363 &feature_jmpcall,
1364 &feature_mul,
13451365 &feature_lpm,
1366 &feature_lpmx,
13461367 &feature_spm,
1368 &feature_addsubiw,
13471369 &feature_ijmpcall,
1348 &feature_sram,
13491370 &feature_break,
1350 &feature_jmpcall,
1351 &feature_mul,
13521371 &feature_movw,
1353 &feature_addsubiw,
13541372 },
13551373};
13561374
......@@ -1358,16 +1376,16 @@ pub const cpu_atmega16m1 = Cpu{
13581376 .name = "atmega16m1",
13591377 .llvm_name = "atmega16m1",
13601378 .dependencies = &[_]*const Feature {
1361 &feature_lpmx,
1379 &feature_sram,
1380 &feature_jmpcall,
1381 &feature_mul,
13621382 &feature_lpm,
1383 &feature_lpmx,
13631384 &feature_spm,
1385 &feature_addsubiw,
13641386 &feature_ijmpcall,
1365 &feature_sram,
13661387 &feature_break,
1367 &feature_jmpcall,
1368 &feature_mul,
13691388 &feature_movw,
1370 &feature_addsubiw,
13711389 },
13721390};
13731391
......@@ -1375,15 +1393,15 @@ pub const cpu_atmega16u2 = Cpu{
13751393 .name = "atmega16u2",
13761394 .llvm_name = "atmega16u2",
13771395 .dependencies = &[_]*const Feature {
1378 &feature_lpmx,
1396 &feature_sram,
1397 &feature_jmpcall,
13791398 &feature_lpm,
1399 &feature_lpmx,
13801400 &feature_spm,
1401 &feature_addsubiw,
13811402 &feature_ijmpcall,
1382 &feature_sram,
13831403 &feature_break,
1384 &feature_jmpcall,
13851404 &feature_movw,
1386 &feature_addsubiw,
13871405 },
13881406};
13891407
......@@ -1391,16 +1409,16 @@ pub const cpu_atmega16u4 = Cpu{
13911409 .name = "atmega16u4",
13921410 .llvm_name = "atmega16u4",
13931411 .dependencies = &[_]*const Feature {
1394 &feature_lpmx,
1412 &feature_sram,
1413 &feature_jmpcall,
1414 &feature_mul,
13951415 &feature_lpm,
1416 &feature_lpmx,
13961417 &feature_spm,
1418 &feature_addsubiw,
13971419 &feature_ijmpcall,
1398 &feature_sram,
13991420 &feature_break,
1400 &feature_jmpcall,
1401 &feature_mul,
14021421 &feature_movw,
1403 &feature_addsubiw,
14041422 },
14051423};
14061424
......@@ -1408,18 +1426,18 @@ pub const cpu_atmega2560 = Cpu{
14081426 .name = "atmega2560",
14091427 .llvm_name = "atmega2560",
14101428 .dependencies = &[_]*const Feature {
1411 &feature_lpmx,
1429 &feature_sram,
1430 &feature_jmpcall,
1431 &feature_mul,
14121432 &feature_elpm,
14131433 &feature_lpm,
1434 &feature_lpmx,
14141435 &feature_spm,
1436 &feature_addsubiw,
14151437 &feature_ijmpcall,
1416 &feature_movw,
1417 &feature_sram,
1418 &feature_break,
1419 &feature_jmpcall,
1420 &feature_mul,
14211438 &feature_elpmx,
1422 &feature_addsubiw,
1439 &feature_break,
1440 &feature_movw,
14231441 },
14241442};
14251443
......@@ -1427,18 +1445,18 @@ pub const cpu_atmega2561 = Cpu{
14271445 .name = "atmega2561",
14281446 .llvm_name = "atmega2561",
14291447 .dependencies = &[_]*const Feature {
1430 &feature_lpmx,
1448 &feature_sram,
1449 &feature_jmpcall,
1450 &feature_mul,
14311451 &feature_elpm,
14321452 &feature_lpm,
1453 &feature_lpmx,
14331454 &feature_spm,
1455 &feature_addsubiw,
14341456 &feature_ijmpcall,
1435 &feature_movw,
1436 &feature_sram,
1437 &feature_break,
1438 &feature_jmpcall,
1439 &feature_mul,
14401457 &feature_elpmx,
1441 &feature_addsubiw,
1458 &feature_break,
1459 &feature_movw,
14421460 },
14431461};
14441462
......@@ -1446,18 +1464,18 @@ pub const cpu_atmega2564rfr2 = Cpu{
14461464 .name = "atmega2564rfr2",
14471465 .llvm_name = "atmega2564rfr2",
14481466 .dependencies = &[_]*const Feature {
1449 &feature_lpmx,
1467 &feature_sram,
1468 &feature_jmpcall,
1469 &feature_mul,
14501470 &feature_elpm,
14511471 &feature_lpm,
1472 &feature_lpmx,
14521473 &feature_spm,
1474 &feature_addsubiw,
14531475 &feature_ijmpcall,
1454 &feature_movw,
1455 &feature_sram,
1456 &feature_break,
1457 &feature_jmpcall,
1458 &feature_mul,
14591476 &feature_elpmx,
1460 &feature_addsubiw,
1477 &feature_break,
1478 &feature_movw,
14611479 },
14621480};
14631481
......@@ -1465,18 +1483,18 @@ pub const cpu_atmega256rfr2 = Cpu{
14651483 .name = "atmega256rfr2",
14661484 .llvm_name = "atmega256rfr2",
14671485 .dependencies = &[_]*const Feature {
1468 &feature_lpmx,
1486 &feature_sram,
1487 &feature_jmpcall,
1488 &feature_mul,
14691489 &feature_elpm,
14701490 &feature_lpm,
1491 &feature_lpmx,
14711492 &feature_spm,
1493 &feature_addsubiw,
14721494 &feature_ijmpcall,
1473 &feature_movw,
1474 &feature_sram,
1475 &feature_break,
1476 &feature_jmpcall,
1477 &feature_mul,
14781495 &feature_elpmx,
1479 &feature_addsubiw,
1496 &feature_break,
1497 &feature_movw,
14801498 },
14811499};
14821500
......@@ -1484,16 +1502,16 @@ pub const cpu_atmega32 = Cpu{
14841502 .name = "atmega32",
14851503 .llvm_name = "atmega32",
14861504 .dependencies = &[_]*const Feature {
1487 &feature_lpmx,
1505 &feature_sram,
1506 &feature_jmpcall,
1507 &feature_mul,
14881508 &feature_lpm,
1509 &feature_lpmx,
14891510 &feature_spm,
1511 &feature_addsubiw,
14901512 &feature_ijmpcall,
1491 &feature_sram,
14921513 &feature_break,
1493 &feature_jmpcall,
1494 &feature_mul,
14951514 &feature_movw,
1496 &feature_addsubiw,
14971515 },
14981516};
14991517
......@@ -1501,16 +1519,16 @@ pub const cpu_atmega323 = Cpu{
15011519 .name = "atmega323",
15021520 .llvm_name = "atmega323",
15031521 .dependencies = &[_]*const Feature {
1504 &feature_lpmx,
1522 &feature_sram,
1523 &feature_jmpcall,
1524 &feature_mul,
15051525 &feature_lpm,
1526 &feature_lpmx,
15061527 &feature_spm,
1528 &feature_addsubiw,
15071529 &feature_ijmpcall,
1508 &feature_sram,
15091530 &feature_break,
1510 &feature_jmpcall,
1511 &feature_mul,
15121531 &feature_movw,
1513 &feature_addsubiw,
15141532 },
15151533};
15161534
......@@ -1518,16 +1536,16 @@ pub const cpu_atmega324a = Cpu{
15181536 .name = "atmega324a",
15191537 .llvm_name = "atmega324a",
15201538 .dependencies = &[_]*const Feature {
1521 &feature_lpmx,
1539 &feature_sram,
1540 &feature_jmpcall,
1541 &feature_mul,
15221542 &feature_lpm,
1543 &feature_lpmx,
15231544 &feature_spm,
1545 &feature_addsubiw,
15241546 &feature_ijmpcall,
1525 &feature_sram,
15261547 &feature_break,
1527 &feature_jmpcall,
1528 &feature_mul,
15291548 &feature_movw,
1530 &feature_addsubiw,
15311549 },
15321550};
15331551
......@@ -1535,16 +1553,16 @@ pub const cpu_atmega324p = Cpu{
15351553 .name = "atmega324p",
15361554 .llvm_name = "atmega324p",
15371555 .dependencies = &[_]*const Feature {
1538 &feature_lpmx,
1556 &feature_sram,
1557 &feature_jmpcall,
1558 &feature_mul,
15391559 &feature_lpm,
1560 &feature_lpmx,
15401561 &feature_spm,
1562 &feature_addsubiw,
15411563 &feature_ijmpcall,
1542 &feature_sram,
15431564 &feature_break,
1544 &feature_jmpcall,
1545 &feature_mul,
15461565 &feature_movw,
1547 &feature_addsubiw,
15481566 },
15491567};
15501568
......@@ -1552,16 +1570,16 @@ pub const cpu_atmega324pa = Cpu{
15521570 .name = "atmega324pa",
15531571 .llvm_name = "atmega324pa",
15541572 .dependencies = &[_]*const Feature {
1555 &feature_lpmx,
1556 &feature_lpm,
1557 &feature_spm,
1558 &feature_ijmpcall,
15591573 &feature_sram,
1560 &feature_break,
15611574 &feature_jmpcall,
15621575 &feature_mul,
1563 &feature_movw,
1576 &feature_lpm,
1577 &feature_lpmx,
1578 &feature_spm,
15641579 &feature_addsubiw,
1580 &feature_ijmpcall,
1581 &feature_break,
1582 &feature_movw,
15651583 },
15661584};
15671585
......@@ -1569,16 +1587,16 @@ pub const cpu_atmega325 = Cpu{
15691587 .name = "atmega325",
15701588 .llvm_name = "atmega325",
15711589 .dependencies = &[_]*const Feature {
1572 &feature_lpmx,
1590 &feature_sram,
1591 &feature_jmpcall,
1592 &feature_mul,
15731593 &feature_lpm,
1594 &feature_lpmx,
15741595 &feature_spm,
1596 &feature_addsubiw,
15751597 &feature_ijmpcall,
1576 &feature_sram,
15771598 &feature_break,
1578 &feature_jmpcall,
1579 &feature_mul,
15801599 &feature_movw,
1581 &feature_addsubiw,
15821600 },
15831601};
15841602
......@@ -1586,16 +1604,16 @@ pub const cpu_atmega3250 = Cpu{
15861604 .name = "atmega3250",
15871605 .llvm_name = "atmega3250",
15881606 .dependencies = &[_]*const Feature {
1589 &feature_lpmx,
1607 &feature_sram,
1608 &feature_jmpcall,
1609 &feature_mul,
15901610 &feature_lpm,
1611 &feature_lpmx,
15911612 &feature_spm,
1613 &feature_addsubiw,
15921614 &feature_ijmpcall,
1593 &feature_sram,
15941615 &feature_break,
1595 &feature_jmpcall,
1596 &feature_mul,
15971616 &feature_movw,
1598 &feature_addsubiw,
15991617 },
16001618};
16011619
......@@ -1603,16 +1621,16 @@ pub const cpu_atmega3250a = Cpu{
16031621 .name = "atmega3250a",
16041622 .llvm_name = "atmega3250a",
16051623 .dependencies = &[_]*const Feature {
1606 &feature_lpmx,
1624 &feature_sram,
1625 &feature_jmpcall,
1626 &feature_mul,
16071627 &feature_lpm,
1628 &feature_lpmx,
16081629 &feature_spm,
1630 &feature_addsubiw,
16091631 &feature_ijmpcall,
1610 &feature_sram,
16111632 &feature_break,
1612 &feature_jmpcall,
1613 &feature_mul,
16141633 &feature_movw,
1615 &feature_addsubiw,
16161634 },
16171635};
16181636
......@@ -1620,16 +1638,16 @@ pub const cpu_atmega3250p = Cpu{
16201638 .name = "atmega3250p",
16211639 .llvm_name = "atmega3250p",
16221640 .dependencies = &[_]*const Feature {
1623 &feature_lpmx,
1641 &feature_sram,
1642 &feature_jmpcall,
1643 &feature_mul,
16241644 &feature_lpm,
1645 &feature_lpmx,
16251646 &feature_spm,
1647 &feature_addsubiw,
16261648 &feature_ijmpcall,
1627 &feature_sram,
16281649 &feature_break,
1629 &feature_jmpcall,
1630 &feature_mul,
16311650 &feature_movw,
1632 &feature_addsubiw,
16331651 },
16341652};
16351653
......@@ -1637,16 +1655,16 @@ pub const cpu_atmega3250pa = Cpu{
16371655 .name = "atmega3250pa",
16381656 .llvm_name = "atmega3250pa",
16391657 .dependencies = &[_]*const Feature {
1640 &feature_lpmx,
1658 &feature_sram,
1659 &feature_jmpcall,
1660 &feature_mul,
16411661 &feature_lpm,
1662 &feature_lpmx,
16421663 &feature_spm,
1664 &feature_addsubiw,
16431665 &feature_ijmpcall,
1644 &feature_sram,
16451666 &feature_break,
1646 &feature_jmpcall,
1647 &feature_mul,
16481667 &feature_movw,
1649 &feature_addsubiw,
16501668 },
16511669};
16521670
......@@ -1654,16 +1672,16 @@ pub const cpu_atmega325a = Cpu{
16541672 .name = "atmega325a",
16551673 .llvm_name = "atmega325a",
16561674 .dependencies = &[_]*const Feature {
1657 &feature_lpmx,
1675 &feature_sram,
1676 &feature_jmpcall,
1677 &feature_mul,
16581678 &feature_lpm,
1679 &feature_lpmx,
16591680 &feature_spm,
1681 &feature_addsubiw,
16601682 &feature_ijmpcall,
1661 &feature_sram,
16621683 &feature_break,
1663 &feature_jmpcall,
1664 &feature_mul,
16651684 &feature_movw,
1666 &feature_addsubiw,
16671685 },
16681686};
16691687
......@@ -1671,16 +1689,16 @@ pub const cpu_atmega325p = Cpu{
16711689 .name = "atmega325p",
16721690 .llvm_name = "atmega325p",
16731691 .dependencies = &[_]*const Feature {
1674 &feature_lpmx,
1692 &feature_sram,
1693 &feature_jmpcall,
1694 &feature_mul,
16751695 &feature_lpm,
1696 &feature_lpmx,
16761697 &feature_spm,
1698 &feature_addsubiw,
16771699 &feature_ijmpcall,
1678 &feature_sram,
16791700 &feature_break,
1680 &feature_jmpcall,
1681 &feature_mul,
16821701 &feature_movw,
1683 &feature_addsubiw,
16841702 },
16851703};
16861704
......@@ -1688,16 +1706,16 @@ pub const cpu_atmega325pa = Cpu{
16881706 .name = "atmega325pa",
16891707 .llvm_name = "atmega325pa",
16901708 .dependencies = &[_]*const Feature {
1691 &feature_lpmx,
1709 &feature_sram,
1710 &feature_jmpcall,
1711 &feature_mul,
16921712 &feature_lpm,
1713 &feature_lpmx,
16931714 &feature_spm,
1715 &feature_addsubiw,
16941716 &feature_ijmpcall,
1695 &feature_sram,
16961717 &feature_break,
1697 &feature_jmpcall,
1698 &feature_mul,
16991718 &feature_movw,
1700 &feature_addsubiw,
17011719 },
17021720};
17031721
......@@ -1705,16 +1723,16 @@ pub const cpu_atmega328 = Cpu{
17051723 .name = "atmega328",
17061724 .llvm_name = "atmega328",
17071725 .dependencies = &[_]*const Feature {
1708 &feature_lpmx,
1726 &feature_sram,
1727 &feature_jmpcall,
1728 &feature_mul,
17091729 &feature_lpm,
1730 &feature_lpmx,
17101731 &feature_spm,
1732 &feature_addsubiw,
17111733 &feature_ijmpcall,
1712 &feature_sram,
17131734 &feature_break,
1714 &feature_jmpcall,
1715 &feature_mul,
17161735 &feature_movw,
1717 &feature_addsubiw,
17181736 },
17191737};
17201738
......@@ -1722,16 +1740,16 @@ pub const cpu_atmega328p = Cpu{
17221740 .name = "atmega328p",
17231741 .llvm_name = "atmega328p",
17241742 .dependencies = &[_]*const Feature {
1725 &feature_lpmx,
1743 &feature_sram,
1744 &feature_jmpcall,
1745 &feature_mul,
17261746 &feature_lpm,
1747 &feature_lpmx,
17271748 &feature_spm,
1749 &feature_addsubiw,
17281750 &feature_ijmpcall,
1729 &feature_sram,
17301751 &feature_break,
1731 &feature_jmpcall,
1732 &feature_mul,
17331752 &feature_movw,
1734 &feature_addsubiw,
17351753 },
17361754};
17371755
......@@ -1739,16 +1757,16 @@ pub const cpu_atmega329 = Cpu{
17391757 .name = "atmega329",
17401758 .llvm_name = "atmega329",
17411759 .dependencies = &[_]*const Feature {
1742 &feature_lpmx,
1760 &feature_sram,
1761 &feature_jmpcall,
1762 &feature_mul,
17431763 &feature_lpm,
1764 &feature_lpmx,
17441765 &feature_spm,
1766 &feature_addsubiw,
17451767 &feature_ijmpcall,
1746 &feature_sram,
17471768 &feature_break,
1748 &feature_jmpcall,
1749 &feature_mul,
17501769 &feature_movw,
1751 &feature_addsubiw,
17521770 },
17531771};
17541772
......@@ -1756,16 +1774,16 @@ pub const cpu_atmega3290 = Cpu{
17561774 .name = "atmega3290",
17571775 .llvm_name = "atmega3290",
17581776 .dependencies = &[_]*const Feature {
1759 &feature_lpmx,
1777 &feature_sram,
1778 &feature_jmpcall,
1779 &feature_mul,
17601780 &feature_lpm,
1781 &feature_lpmx,
17611782 &feature_spm,
1783 &feature_addsubiw,
17621784 &feature_ijmpcall,
1763 &feature_sram,
17641785 &feature_break,
1765 &feature_jmpcall,
1766 &feature_mul,
17671786 &feature_movw,
1768 &feature_addsubiw,
17691787 },
17701788};
17711789
......@@ -1773,16 +1791,16 @@ pub const cpu_atmega3290a = Cpu{
17731791 .name = "atmega3290a",
17741792 .llvm_name = "atmega3290a",
17751793 .dependencies = &[_]*const Feature {
1776 &feature_lpmx,
1794 &feature_sram,
1795 &feature_jmpcall,
1796 &feature_mul,
17771797 &feature_lpm,
1798 &feature_lpmx,
17781799 &feature_spm,
1800 &feature_addsubiw,
17791801 &feature_ijmpcall,
1780 &feature_sram,
17811802 &feature_break,
1782 &feature_jmpcall,
1783 &feature_mul,
17841803 &feature_movw,
1785 &feature_addsubiw,
17861804 },
17871805};
17881806
......@@ -1790,16 +1808,16 @@ pub const cpu_atmega3290p = Cpu{
17901808 .name = "atmega3290p",
17911809 .llvm_name = "atmega3290p",
17921810 .dependencies = &[_]*const Feature {
1793 &feature_lpmx,
1811 &feature_sram,
1812 &feature_jmpcall,
1813 &feature_mul,
17941814 &feature_lpm,
1815 &feature_lpmx,
17951816 &feature_spm,
1817 &feature_addsubiw,
17961818 &feature_ijmpcall,
1797 &feature_sram,
17981819 &feature_break,
1799 &feature_jmpcall,
1800 &feature_mul,
18011820 &feature_movw,
1802 &feature_addsubiw,
18031821 },
18041822};
18051823
......@@ -1807,16 +1825,16 @@ pub const cpu_atmega3290pa = Cpu{
18071825 .name = "atmega3290pa",
18081826 .llvm_name = "atmega3290pa",
18091827 .dependencies = &[_]*const Feature {
1810 &feature_lpmx,
1828 &feature_sram,
1829 &feature_jmpcall,
1830 &feature_mul,
18111831 &feature_lpm,
1832 &feature_lpmx,
18121833 &feature_spm,
1834 &feature_addsubiw,
18131835 &feature_ijmpcall,
1814 &feature_sram,
18151836 &feature_break,
1816 &feature_jmpcall,
1817 &feature_mul,
18181837 &feature_movw,
1819 &feature_addsubiw,
18201838 },
18211839};
18221840
......@@ -1824,16 +1842,16 @@ pub const cpu_atmega329a = Cpu{
18241842 .name = "atmega329a",
18251843 .llvm_name = "atmega329a",
18261844 .dependencies = &[_]*const Feature {
1827 &feature_lpmx,
1845 &feature_sram,
1846 &feature_jmpcall,
1847 &feature_mul,
18281848 &feature_lpm,
1849 &feature_lpmx,
18291850 &feature_spm,
1851 &feature_addsubiw,
18301852 &feature_ijmpcall,
1831 &feature_sram,
18321853 &feature_break,
1833 &feature_jmpcall,
1834 &feature_mul,
18351854 &feature_movw,
1836 &feature_addsubiw,
18371855 },
18381856};
18391857
......@@ -1841,16 +1859,16 @@ pub const cpu_atmega329p = Cpu{
18411859 .name = "atmega329p",
18421860 .llvm_name = "atmega329p",
18431861 .dependencies = &[_]*const Feature {
1844 &feature_lpmx,
1862 &feature_sram,
1863 &feature_jmpcall,
1864 &feature_mul,
18451865 &feature_lpm,
1866 &feature_lpmx,
18461867 &feature_spm,
1868 &feature_addsubiw,
18471869 &feature_ijmpcall,
1848 &feature_sram,
18491870 &feature_break,
1850 &feature_jmpcall,
1851 &feature_mul,
18521871 &feature_movw,
1853 &feature_addsubiw,
18541872 },
18551873};
18561874
......@@ -1858,16 +1876,16 @@ pub const cpu_atmega329pa = Cpu{
18581876 .name = "atmega329pa",
18591877 .llvm_name = "atmega329pa",
18601878 .dependencies = &[_]*const Feature {
1861 &feature_lpmx,
1879 &feature_sram,
1880 &feature_jmpcall,
1881 &feature_mul,
18621882 &feature_lpm,
1883 &feature_lpmx,
18631884 &feature_spm,
1885 &feature_addsubiw,
18641886 &feature_ijmpcall,
1865 &feature_sram,
18661887 &feature_break,
1867 &feature_jmpcall,
1868 &feature_mul,
18691888 &feature_movw,
1870 &feature_addsubiw,
18711889 },
18721890};
18731891
......@@ -1875,16 +1893,16 @@ pub const cpu_atmega32a = Cpu{
18751893 .name = "atmega32a",
18761894 .llvm_name = "atmega32a",
18771895 .dependencies = &[_]*const Feature {
1878 &feature_lpmx,
1896 &feature_sram,
1897 &feature_jmpcall,
1898 &feature_mul,
18791899 &feature_lpm,
1900 &feature_lpmx,
18801901 &feature_spm,
1902 &feature_addsubiw,
18811903 &feature_ijmpcall,
1882 &feature_sram,
18831904 &feature_break,
1884 &feature_jmpcall,
1885 &feature_mul,
18861905 &feature_movw,
1887 &feature_addsubiw,
18881906 },
18891907};
18901908
......@@ -1892,16 +1910,16 @@ pub const cpu_atmega32c1 = Cpu{
18921910 .name = "atmega32c1",
18931911 .llvm_name = "atmega32c1",
18941912 .dependencies = &[_]*const Feature {
1895 &feature_lpmx,
1913 &feature_sram,
1914 &feature_jmpcall,
1915 &feature_mul,
18961916 &feature_lpm,
1917 &feature_lpmx,
18971918 &feature_spm,
1919 &feature_addsubiw,
18981920 &feature_ijmpcall,
1899 &feature_sram,
19001921 &feature_break,
1901 &feature_jmpcall,
1902 &feature_mul,
19031922 &feature_movw,
1904 &feature_addsubiw,
19051923 },
19061924};
19071925
......@@ -1909,16 +1927,16 @@ pub const cpu_atmega32hvb = Cpu{
19091927 .name = "atmega32hvb",
19101928 .llvm_name = "atmega32hvb",
19111929 .dependencies = &[_]*const Feature {
1912 &feature_lpmx,
1930 &feature_sram,
1931 &feature_jmpcall,
1932 &feature_mul,
19131933 &feature_lpm,
1934 &feature_lpmx,
19141935 &feature_spm,
1936 &feature_addsubiw,
19151937 &feature_ijmpcall,
1916 &feature_sram,
19171938 &feature_break,
1918 &feature_jmpcall,
1919 &feature_mul,
19201939 &feature_movw,
1921 &feature_addsubiw,
19221940 },
19231941};
19241942
......@@ -1926,16 +1944,16 @@ pub const cpu_atmega32hvbrevb = Cpu{
19261944 .name = "atmega32hvbrevb",
19271945 .llvm_name = "atmega32hvbrevb",
19281946 .dependencies = &[_]*const Feature {
1929 &feature_lpmx,
1947 &feature_sram,
1948 &feature_jmpcall,
1949 &feature_mul,
19301950 &feature_lpm,
1951 &feature_lpmx,
19311952 &feature_spm,
1953 &feature_addsubiw,
19321954 &feature_ijmpcall,
1933 &feature_sram,
19341955 &feature_break,
1935 &feature_jmpcall,
1936 &feature_mul,
19371956 &feature_movw,
1938 &feature_addsubiw,
19391957 },
19401958};
19411959
......@@ -1943,16 +1961,16 @@ pub const cpu_atmega32m1 = Cpu{
19431961 .name = "atmega32m1",
19441962 .llvm_name = "atmega32m1",
19451963 .dependencies = &[_]*const Feature {
1946 &feature_lpmx,
1964 &feature_sram,
1965 &feature_jmpcall,
1966 &feature_mul,
19471967 &feature_lpm,
1968 &feature_lpmx,
19481969 &feature_spm,
1970 &feature_addsubiw,
19491971 &feature_ijmpcall,
1950 &feature_sram,
19511972 &feature_break,
1952 &feature_jmpcall,
1953 &feature_mul,
19541973 &feature_movw,
1955 &feature_addsubiw,
19561974 },
19571975};
19581976
......@@ -1960,15 +1978,15 @@ pub const cpu_atmega32u2 = Cpu{
19601978 .name = "atmega32u2",
19611979 .llvm_name = "atmega32u2",
19621980 .dependencies = &[_]*const Feature {
1963 &feature_lpmx,
1981 &feature_sram,
1982 &feature_jmpcall,
19641983 &feature_lpm,
1984 &feature_lpmx,
19651985 &feature_spm,
1986 &feature_addsubiw,
19661987 &feature_ijmpcall,
1967 &feature_sram,
19681988 &feature_break,
1969 &feature_jmpcall,
19701989 &feature_movw,
1971 &feature_addsubiw,
19721990 },
19731991};
19741992
......@@ -1976,16 +1994,16 @@ pub const cpu_atmega32u4 = Cpu{
19761994 .name = "atmega32u4",
19771995 .llvm_name = "atmega32u4",
19781996 .dependencies = &[_]*const Feature {
1979 &feature_lpmx,
1997 &feature_sram,
1998 &feature_jmpcall,
1999 &feature_mul,
19802000 &feature_lpm,
2001 &feature_lpmx,
19812002 &feature_spm,
2003 &feature_addsubiw,
19822004 &feature_ijmpcall,
1983 &feature_sram,
19842005 &feature_break,
1985 &feature_jmpcall,
1986 &feature_mul,
19872006 &feature_movw,
1988 &feature_addsubiw,
19892007 },
19902008};
19912009
......@@ -1993,16 +2011,16 @@ pub const cpu_atmega32u6 = Cpu{
19932011 .name = "atmega32u6",
19942012 .llvm_name = "atmega32u6",
19952013 .dependencies = &[_]*const Feature {
1996 &feature_lpmx,
2014 &feature_sram,
2015 &feature_jmpcall,
2016 &feature_mul,
19972017 &feature_lpm,
2018 &feature_lpmx,
19982019 &feature_spm,
2020 &feature_addsubiw,
19992021 &feature_ijmpcall,
2000 &feature_sram,
20012022 &feature_break,
2002 &feature_jmpcall,
2003 &feature_mul,
20042023 &feature_movw,
2005 &feature_addsubiw,
20062024 },
20072025};
20082026
......@@ -2010,16 +2028,16 @@ pub const cpu_atmega406 = Cpu{
20102028 .name = "atmega406",
20112029 .llvm_name = "atmega406",
20122030 .dependencies = &[_]*const Feature {
2013 &feature_lpmx,
2031 &feature_sram,
2032 &feature_jmpcall,
2033 &feature_mul,
20142034 &feature_lpm,
2035 &feature_lpmx,
20152036 &feature_spm,
2037 &feature_addsubiw,
20162038 &feature_ijmpcall,
2017 &feature_sram,
20182039 &feature_break,
2019 &feature_jmpcall,
2020 &feature_mul,
20212040 &feature_movw,
2022 &feature_addsubiw,
20232041 },
20242042};
20252043
......@@ -2027,15 +2045,15 @@ pub const cpu_atmega48 = Cpu{
20272045 .name = "atmega48",
20282046 .llvm_name = "atmega48",
20292047 .dependencies = &[_]*const Feature {
2030 &feature_lpmx,
2048 &feature_sram,
2049 &feature_mul,
20312050 &feature_lpm,
2051 &feature_lpmx,
20322052 &feature_spm,
2053 &feature_addsubiw,
20332054 &feature_ijmpcall,
2034 &feature_sram,
20352055 &feature_break,
2036 &feature_mul,
20372056 &feature_movw,
2038 &feature_addsubiw,
20392057 },
20402058};
20412059
......@@ -2043,15 +2061,15 @@ pub const cpu_atmega48a = Cpu{
20432061 .name = "atmega48a",
20442062 .llvm_name = "atmega48a",
20452063 .dependencies = &[_]*const Feature {
2046 &feature_lpmx,
2064 &feature_sram,
2065 &feature_mul,
20472066 &feature_lpm,
2067 &feature_lpmx,
20482068 &feature_spm,
2069 &feature_addsubiw,
20492070 &feature_ijmpcall,
2050 &feature_sram,
20512071 &feature_break,
2052 &feature_mul,
20532072 &feature_movw,
2054 &feature_addsubiw,
20552073 },
20562074};
20572075
......@@ -2059,15 +2077,15 @@ pub const cpu_atmega48p = Cpu{
20592077 .name = "atmega48p",
20602078 .llvm_name = "atmega48p",
20612079 .dependencies = &[_]*const Feature {
2062 &feature_lpmx,
2080 &feature_sram,
2081 &feature_mul,
20632082 &feature_lpm,
2083 &feature_lpmx,
20642084 &feature_spm,
2085 &feature_addsubiw,
20652086 &feature_ijmpcall,
2066 &feature_sram,
20672087 &feature_break,
2068 &feature_mul,
20692088 &feature_movw,
2070 &feature_addsubiw,
20712089 },
20722090};
20732091
......@@ -2075,15 +2093,15 @@ pub const cpu_atmega48pa = Cpu{
20752093 .name = "atmega48pa",
20762094 .llvm_name = "atmega48pa",
20772095 .dependencies = &[_]*const Feature {
2078 &feature_lpmx,
2096 &feature_sram,
2097 &feature_mul,
20792098 &feature_lpm,
2099 &feature_lpmx,
20802100 &feature_spm,
2101 &feature_addsubiw,
20812102 &feature_ijmpcall,
2082 &feature_sram,
20832103 &feature_break,
2084 &feature_mul,
20852104 &feature_movw,
2086 &feature_addsubiw,
20872105 },
20882106};
20892107
......@@ -2091,16 +2109,16 @@ pub const cpu_atmega64 = Cpu{
20912109 .name = "atmega64",
20922110 .llvm_name = "atmega64",
20932111 .dependencies = &[_]*const Feature {
2094 &feature_lpmx,
2112 &feature_sram,
2113 &feature_jmpcall,
2114 &feature_mul,
20952115 &feature_lpm,
2116 &feature_lpmx,
20962117 &feature_spm,
2118 &feature_addsubiw,
20972119 &feature_ijmpcall,
2098 &feature_sram,
20992120 &feature_break,
2100 &feature_jmpcall,
2101 &feature_mul,
21022121 &feature_movw,
2103 &feature_addsubiw,
21042122 },
21052123};
21062124
......@@ -2108,16 +2126,16 @@ pub const cpu_atmega640 = Cpu{
21082126 .name = "atmega640",
21092127 .llvm_name = "atmega640",
21102128 .dependencies = &[_]*const Feature {
2111 &feature_lpmx,
2129 &feature_sram,
2130 &feature_jmpcall,
2131 &feature_mul,
21122132 &feature_lpm,
2133 &feature_lpmx,
21132134 &feature_spm,
2135 &feature_addsubiw,
21142136 &feature_ijmpcall,
2115 &feature_sram,
21162137 &feature_break,
2117 &feature_jmpcall,
2118 &feature_mul,
21192138 &feature_movw,
2120 &feature_addsubiw,
21212139 },
21222140};
21232141
......@@ -2125,16 +2143,16 @@ pub const cpu_atmega644 = Cpu{
21252143 .name = "atmega644",
21262144 .llvm_name = "atmega644",
21272145 .dependencies = &[_]*const Feature {
2128 &feature_lpmx,
2146 &feature_sram,
2147 &feature_jmpcall,
2148 &feature_mul,
21292149 &feature_lpm,
2150 &feature_lpmx,
21302151 &feature_spm,
2152 &feature_addsubiw,
21312153 &feature_ijmpcall,
2132 &feature_sram,
21332154 &feature_break,
2134 &feature_jmpcall,
2135 &feature_mul,
21362155 &feature_movw,
2137 &feature_addsubiw,
21382156 },
21392157};
21402158
......@@ -2142,16 +2160,16 @@ pub const cpu_atmega644a = Cpu{
21422160 .name = "atmega644a",
21432161 .llvm_name = "atmega644a",
21442162 .dependencies = &[_]*const Feature {
2145 &feature_lpmx,
2163 &feature_sram,
2164 &feature_jmpcall,
2165 &feature_mul,
21462166 &feature_lpm,
2167 &feature_lpmx,
21472168 &feature_spm,
2169 &feature_addsubiw,
21482170 &feature_ijmpcall,
2149 &feature_sram,
21502171 &feature_break,
2151 &feature_jmpcall,
2152 &feature_mul,
21532172 &feature_movw,
2154 &feature_addsubiw,
21552173 },
21562174};
21572175
......@@ -2159,16 +2177,16 @@ pub const cpu_atmega644p = Cpu{
21592177 .name = "atmega644p",
21602178 .llvm_name = "atmega644p",
21612179 .dependencies = &[_]*const Feature {
2162 &feature_lpmx,
2180 &feature_sram,
2181 &feature_jmpcall,
2182 &feature_mul,
21632183 &feature_lpm,
2184 &feature_lpmx,
21642185 &feature_spm,
2186 &feature_addsubiw,
21652187 &feature_ijmpcall,
2166 &feature_sram,
21672188 &feature_break,
2168 &feature_jmpcall,
2169 &feature_mul,
21702189 &feature_movw,
2171 &feature_addsubiw,
21722190 },
21732191};
21742192
......@@ -2176,16 +2194,16 @@ pub const cpu_atmega644pa = Cpu{
21762194 .name = "atmega644pa",
21772195 .llvm_name = "atmega644pa",
21782196 .dependencies = &[_]*const Feature {
2179 &feature_lpmx,
2197 &feature_sram,
2198 &feature_jmpcall,
2199 &feature_mul,
21802200 &feature_lpm,
2201 &feature_lpmx,
21812202 &feature_spm,
2203 &feature_addsubiw,
21822204 &feature_ijmpcall,
2183 &feature_sram,
21842205 &feature_break,
2185 &feature_jmpcall,
2186 &feature_mul,
21872206 &feature_movw,
2188 &feature_addsubiw,
21892207 },
21902208};
21912209
......@@ -2193,16 +2211,16 @@ pub const cpu_atmega644rfr2 = Cpu{
21932211 .name = "atmega644rfr2",
21942212 .llvm_name = "atmega644rfr2",
21952213 .dependencies = &[_]*const Feature {
2196 &feature_lpmx,
2214 &feature_sram,
2215 &feature_jmpcall,
2216 &feature_mul,
21972217 &feature_lpm,
2218 &feature_lpmx,
21982219 &feature_spm,
2220 &feature_addsubiw,
21992221 &feature_ijmpcall,
2200 &feature_sram,
22012222 &feature_break,
2202 &feature_jmpcall,
2203 &feature_mul,
22042223 &feature_movw,
2205 &feature_addsubiw,
22062224 },
22072225};
22082226
......@@ -2210,16 +2228,16 @@ pub const cpu_atmega645 = Cpu{
22102228 .name = "atmega645",
22112229 .llvm_name = "atmega645",
22122230 .dependencies = &[_]*const Feature {
2213 &feature_lpmx,
2231 &feature_sram,
2232 &feature_jmpcall,
2233 &feature_mul,
22142234 &feature_lpm,
2235 &feature_lpmx,
22152236 &feature_spm,
2237 &feature_addsubiw,
22162238 &feature_ijmpcall,
2217 &feature_sram,
22182239 &feature_break,
2219 &feature_jmpcall,
2220 &feature_mul,
22212240 &feature_movw,
2222 &feature_addsubiw,
22232241 },
22242242};
22252243
......@@ -2227,16 +2245,16 @@ pub const cpu_atmega6450 = Cpu{
22272245 .name = "atmega6450",
22282246 .llvm_name = "atmega6450",
22292247 .dependencies = &[_]*const Feature {
2230 &feature_lpmx,
2248 &feature_sram,
2249 &feature_jmpcall,
2250 &feature_mul,
22312251 &feature_lpm,
2252 &feature_lpmx,
22322253 &feature_spm,
2254 &feature_addsubiw,
22332255 &feature_ijmpcall,
2234 &feature_sram,
22352256 &feature_break,
2236 &feature_jmpcall,
2237 &feature_mul,
22382257 &feature_movw,
2239 &feature_addsubiw,
22402258 },
22412259};
22422260
......@@ -2244,16 +2262,16 @@ pub const cpu_atmega6450a = Cpu{
22442262 .name = "atmega6450a",
22452263 .llvm_name = "atmega6450a",
22462264 .dependencies = &[_]*const Feature {
2247 &feature_lpmx,
2265 &feature_sram,
2266 &feature_jmpcall,
2267 &feature_mul,
22482268 &feature_lpm,
2269 &feature_lpmx,
22492270 &feature_spm,
2271 &feature_addsubiw,
22502272 &feature_ijmpcall,
2251 &feature_sram,
22522273 &feature_break,
2253 &feature_jmpcall,
2254 &feature_mul,
22552274 &feature_movw,
2256 &feature_addsubiw,
22572275 },
22582276};
22592277
......@@ -2261,16 +2279,16 @@ pub const cpu_atmega6450p = Cpu{
22612279 .name = "atmega6450p",
22622280 .llvm_name = "atmega6450p",
22632281 .dependencies = &[_]*const Feature {
2264 &feature_lpmx,
2282 &feature_sram,
2283 &feature_jmpcall,
2284 &feature_mul,
22652285 &feature_lpm,
2286 &feature_lpmx,
22662287 &feature_spm,
2288 &feature_addsubiw,
22672289 &feature_ijmpcall,
2268 &feature_sram,
22692290 &feature_break,
2270 &feature_jmpcall,
2271 &feature_mul,
22722291 &feature_movw,
2273 &feature_addsubiw,
22742292 },
22752293};
22762294
......@@ -2278,16 +2296,16 @@ pub const cpu_atmega645a = Cpu{
22782296 .name = "atmega645a",
22792297 .llvm_name = "atmega645a",
22802298 .dependencies = &[_]*const Feature {
2281 &feature_lpmx,
2299 &feature_sram,
2300 &feature_jmpcall,
2301 &feature_mul,
22822302 &feature_lpm,
2303 &feature_lpmx,
22832304 &feature_spm,
2305 &feature_addsubiw,
22842306 &feature_ijmpcall,
2285 &feature_sram,
22862307 &feature_break,
2287 &feature_jmpcall,
2288 &feature_mul,
22892308 &feature_movw,
2290 &feature_addsubiw,
22912309 },
22922310};
22932311
......@@ -2295,16 +2313,16 @@ pub const cpu_atmega645p = Cpu{
22952313 .name = "atmega645p",
22962314 .llvm_name = "atmega645p",
22972315 .dependencies = &[_]*const Feature {
2298 &feature_lpmx,
2316 &feature_sram,
2317 &feature_jmpcall,
2318 &feature_mul,
22992319 &feature_lpm,
2320 &feature_lpmx,
23002321 &feature_spm,
2322 &feature_addsubiw,
23012323 &feature_ijmpcall,
2302 &feature_sram,
23032324 &feature_break,
2304 &feature_jmpcall,
2305 &feature_mul,
23062325 &feature_movw,
2307 &feature_addsubiw,
23082326 },
23092327};
23102328
......@@ -2312,16 +2330,16 @@ pub const cpu_atmega649 = Cpu{
23122330 .name = "atmega649",
23132331 .llvm_name = "atmega649",
23142332 .dependencies = &[_]*const Feature {
2315 &feature_lpmx,
2333 &feature_sram,
2334 &feature_jmpcall,
2335 &feature_mul,
23162336 &feature_lpm,
2337 &feature_lpmx,
23172338 &feature_spm,
2339 &feature_addsubiw,
23182340 &feature_ijmpcall,
2319 &feature_sram,
23202341 &feature_break,
2321 &feature_jmpcall,
2322 &feature_mul,
23232342 &feature_movw,
2324 &feature_addsubiw,
23252343 },
23262344};
23272345
......@@ -2329,16 +2347,16 @@ pub const cpu_atmega6490 = Cpu{
23292347 .name = "atmega6490",
23302348 .llvm_name = "atmega6490",
23312349 .dependencies = &[_]*const Feature {
2332 &feature_lpmx,
2350 &feature_sram,
2351 &feature_jmpcall,
2352 &feature_mul,
23332353 &feature_lpm,
2354 &feature_lpmx,
23342355 &feature_spm,
2356 &feature_addsubiw,
23352357 &feature_ijmpcall,
2336 &feature_sram,
23372358 &feature_break,
2338 &feature_jmpcall,
2339 &feature_mul,
23402359 &feature_movw,
2341 &feature_addsubiw,
23422360 },
23432361};
23442362
......@@ -2346,16 +2364,16 @@ pub const cpu_atmega6490a = Cpu{
23462364 .name = "atmega6490a",
23472365 .llvm_name = "atmega6490a",
23482366 .dependencies = &[_]*const Feature {
2349 &feature_lpmx,
2367 &feature_sram,
2368 &feature_jmpcall,
2369 &feature_mul,
23502370 &feature_lpm,
2371 &feature_lpmx,
23512372 &feature_spm,
2373 &feature_addsubiw,
23522374 &feature_ijmpcall,
2353 &feature_sram,
23542375 &feature_break,
2355 &feature_jmpcall,
2356 &feature_mul,
23572376 &feature_movw,
2358 &feature_addsubiw,
23592377 },
23602378};
23612379
......@@ -2363,16 +2381,16 @@ pub const cpu_atmega6490p = Cpu{
23632381 .name = "atmega6490p",
23642382 .llvm_name = "atmega6490p",
23652383 .dependencies = &[_]*const Feature {
2366 &feature_lpmx,
2384 &feature_sram,
2385 &feature_jmpcall,
2386 &feature_mul,
23672387 &feature_lpm,
2388 &feature_lpmx,
23682389 &feature_spm,
2390 &feature_addsubiw,
23692391 &feature_ijmpcall,
2370 &feature_sram,
23712392 &feature_break,
2372 &feature_jmpcall,
2373 &feature_mul,
23742393 &feature_movw,
2375 &feature_addsubiw,
23762394 },
23772395};
23782396
......@@ -2380,16 +2398,16 @@ pub const cpu_atmega649a = Cpu{
23802398 .name = "atmega649a",
23812399 .llvm_name = "atmega649a",
23822400 .dependencies = &[_]*const Feature {
2383 &feature_lpmx,
2401 &feature_sram,
2402 &feature_jmpcall,
2403 &feature_mul,
23842404 &feature_lpm,
2405 &feature_lpmx,
23852406 &feature_spm,
2407 &feature_addsubiw,
23862408 &feature_ijmpcall,
2387 &feature_sram,
23882409 &feature_break,
2389 &feature_jmpcall,
2390 &feature_mul,
23912410 &feature_movw,
2392 &feature_addsubiw,
23932411 },
23942412};
23952413
......@@ -2397,16 +2415,16 @@ pub const cpu_atmega649p = Cpu{
23972415 .name = "atmega649p",
23982416 .llvm_name = "atmega649p",
23992417 .dependencies = &[_]*const Feature {
2400 &feature_lpmx,
2418 &feature_sram,
2419 &feature_jmpcall,
2420 &feature_mul,
24012421 &feature_lpm,
2422 &feature_lpmx,
24022423 &feature_spm,
2424 &feature_addsubiw,
24032425 &feature_ijmpcall,
2404 &feature_sram,
24052426 &feature_break,
2406 &feature_jmpcall,
2407 &feature_mul,
24082427 &feature_movw,
2409 &feature_addsubiw,
24102428 },
24112429};
24122430
......@@ -2414,16 +2432,16 @@ pub const cpu_atmega64a = Cpu{
24142432 .name = "atmega64a",
24152433 .llvm_name = "atmega64a",
24162434 .dependencies = &[_]*const Feature {
2417 &feature_lpmx,
2435 &feature_sram,
2436 &feature_jmpcall,
2437 &feature_mul,
24182438 &feature_lpm,
2439 &feature_lpmx,
24192440 &feature_spm,
2441 &feature_addsubiw,
24202442 &feature_ijmpcall,
2421 &feature_sram,
24222443 &feature_break,
2423 &feature_jmpcall,
2424 &feature_mul,
24252444 &feature_movw,
2426 &feature_addsubiw,
24272445 },
24282446};
24292447
......@@ -2431,16 +2449,16 @@ pub const cpu_atmega64c1 = Cpu{
24312449 .name = "atmega64c1",
24322450 .llvm_name = "atmega64c1",
24332451 .dependencies = &[_]*const Feature {
2434 &feature_lpmx,
2435 &feature_lpm,
2436 &feature_spm,
2437 &feature_ijmpcall,
24382452 &feature_sram,
2439 &feature_break,
24402453 &feature_jmpcall,
24412454 &feature_mul,
2442 &feature_movw,
2455 &feature_lpm,
2456 &feature_lpmx,
2457 &feature_spm,
24432458 &feature_addsubiw,
2459 &feature_ijmpcall,
2460 &feature_break,
2461 &feature_movw,
24442462 },
24452463};
24462464
......@@ -2448,16 +2466,16 @@ pub const cpu_atmega64hve = Cpu{
24482466 .name = "atmega64hve",
24492467 .llvm_name = "atmega64hve",
24502468 .dependencies = &[_]*const Feature {
2451 &feature_lpmx,
2469 &feature_sram,
2470 &feature_jmpcall,
2471 &feature_mul,
24522472 &feature_lpm,
2473 &feature_lpmx,
24532474 &feature_spm,
2475 &feature_addsubiw,
24542476 &feature_ijmpcall,
2455 &feature_sram,
24562477 &feature_break,
2457 &feature_jmpcall,
2458 &feature_mul,
24592478 &feature_movw,
2460 &feature_addsubiw,
24612479 },
24622480};
24632481
......@@ -2465,16 +2483,16 @@ pub const cpu_atmega64m1 = Cpu{
24652483 .name = "atmega64m1",
24662484 .llvm_name = "atmega64m1",
24672485 .dependencies = &[_]*const Feature {
2468 &feature_lpmx,
2486 &feature_sram,
2487 &feature_jmpcall,
2488 &feature_mul,
24692489 &feature_lpm,
2490 &feature_lpmx,
24702491 &feature_spm,
2492 &feature_addsubiw,
24712493 &feature_ijmpcall,
2472 &feature_sram,
24732494 &feature_break,
2474 &feature_jmpcall,
2475 &feature_mul,
24762495 &feature_movw,
2477 &feature_addsubiw,
24782496 },
24792497};
24802498
......@@ -2482,16 +2500,16 @@ pub const cpu_atmega64rfr2 = Cpu{
24822500 .name = "atmega64rfr2",
24832501 .llvm_name = "atmega64rfr2",
24842502 .dependencies = &[_]*const Feature {
2485 &feature_lpmx,
2503 &feature_sram,
2504 &feature_jmpcall,
2505 &feature_mul,
24862506 &feature_lpm,
2507 &feature_lpmx,
24872508 &feature_spm,
2509 &feature_addsubiw,
24882510 &feature_ijmpcall,
2489 &feature_sram,
24902511 &feature_break,
2491 &feature_jmpcall,
2492 &feature_mul,
24932512 &feature_movw,
2494 &feature_addsubiw,
24952513 },
24962514};
24972515
......@@ -2499,15 +2517,15 @@ pub const cpu_atmega8 = Cpu{
24992517 .name = "atmega8",
25002518 .llvm_name = "atmega8",
25012519 .dependencies = &[_]*const Feature {
2502 &feature_lpmx,
2520 &feature_sram,
2521 &feature_mul,
25032522 &feature_lpm,
2523 &feature_lpmx,
25042524 &feature_spm,
2525 &feature_addsubiw,
25052526 &feature_ijmpcall,
2506 &feature_sram,
25072527 &feature_break,
2508 &feature_mul,
25092528 &feature_movw,
2510 &feature_addsubiw,
25112529 },
25122530};
25132531
......@@ -2515,10 +2533,10 @@ pub const cpu_atmega8515 = Cpu{
25152533 .name = "atmega8515",
25162534 .llvm_name = "atmega8515",
25172535 .dependencies = &[_]*const Feature {
2518 &feature_lpm,
2519 &feature_ijmpcall,
25202536 &feature_sram,
2537 &feature_lpm,
25212538 &feature_addsubiw,
2539 &feature_ijmpcall,
25222540 &feature_lpmx,
25232541 &feature_movw,
25242542 &feature_mul,
......@@ -2530,10 +2548,10 @@ pub const cpu_atmega8535 = Cpu{
25302548 .name = "atmega8535",
25312549 .llvm_name = "atmega8535",
25322550 .dependencies = &[_]*const Feature {
2533 &feature_lpm,
2534 &feature_ijmpcall,
25352551 &feature_sram,
2552 &feature_lpm,
25362553 &feature_addsubiw,
2554 &feature_ijmpcall,
25372555 &feature_lpmx,
25382556 &feature_movw,
25392557 &feature_mul,
......@@ -2545,15 +2563,15 @@ pub const cpu_atmega88 = Cpu{
25452563 .name = "atmega88",
25462564 .llvm_name = "atmega88",
25472565 .dependencies = &[_]*const Feature {
2548 &feature_lpmx,
2566 &feature_sram,
2567 &feature_mul,
25492568 &feature_lpm,
2569 &feature_lpmx,
25502570 &feature_spm,
2571 &feature_addsubiw,
25512572 &feature_ijmpcall,
2552 &feature_sram,
25532573 &feature_break,
2554 &feature_mul,
25552574 &feature_movw,
2556 &feature_addsubiw,
25572575 },
25582576};
25592577
......@@ -2561,15 +2579,15 @@ pub const cpu_atmega88a = Cpu{
25612579 .name = "atmega88a",
25622580 .llvm_name = "atmega88a",
25632581 .dependencies = &[_]*const Feature {
2564 &feature_lpmx,
2582 &feature_sram,
2583 &feature_mul,
25652584 &feature_lpm,
2585 &feature_lpmx,
25662586 &feature_spm,
2587 &feature_addsubiw,
25672588 &feature_ijmpcall,
2568 &feature_sram,
25692589 &feature_break,
2570 &feature_mul,
25712590 &feature_movw,
2572 &feature_addsubiw,
25732591 },
25742592};
25752593
......@@ -2577,15 +2595,15 @@ pub const cpu_atmega88p = Cpu{
25772595 .name = "atmega88p",
25782596 .llvm_name = "atmega88p",
25792597 .dependencies = &[_]*const Feature {
2580 &feature_lpmx,
2598 &feature_sram,
2599 &feature_mul,
25812600 &feature_lpm,
2601 &feature_lpmx,
25822602 &feature_spm,
2603 &feature_addsubiw,
25832604 &feature_ijmpcall,
2584 &feature_sram,
25852605 &feature_break,
2586 &feature_mul,
25872606 &feature_movw,
2588 &feature_addsubiw,
25892607 },
25902608};
25912609
......@@ -2593,15 +2611,15 @@ pub const cpu_atmega88pa = Cpu{
25932611 .name = "atmega88pa",
25942612 .llvm_name = "atmega88pa",
25952613 .dependencies = &[_]*const Feature {
2596 &feature_lpmx,
2614 &feature_sram,
2615 &feature_mul,
25972616 &feature_lpm,
2617 &feature_lpmx,
25982618 &feature_spm,
2619 &feature_addsubiw,
25992620 &feature_ijmpcall,
2600 &feature_sram,
26012621 &feature_break,
2602 &feature_mul,
26032622 &feature_movw,
2604 &feature_addsubiw,
26052623 },
26062624};
26072625
......@@ -2609,15 +2627,15 @@ pub const cpu_atmega8a = Cpu{
26092627 .name = "atmega8a",
26102628 .llvm_name = "atmega8a",
26112629 .dependencies = &[_]*const Feature {
2612 &feature_lpmx,
2630 &feature_sram,
2631 &feature_mul,
26132632 &feature_lpm,
2633 &feature_lpmx,
26142634 &feature_spm,
2635 &feature_addsubiw,
26152636 &feature_ijmpcall,
2616 &feature_sram,
26172637 &feature_break,
2618 &feature_mul,
26192638 &feature_movw,
2620 &feature_addsubiw,
26212639 },
26222640};
26232641
......@@ -2625,15 +2643,15 @@ pub const cpu_atmega8hva = Cpu{
26252643 .name = "atmega8hva",
26262644 .llvm_name = "atmega8hva",
26272645 .dependencies = &[_]*const Feature {
2628 &feature_lpmx,
2646 &feature_sram,
2647 &feature_mul,
26292648 &feature_lpm,
2649 &feature_lpmx,
26302650 &feature_spm,
2651 &feature_addsubiw,
26312652 &feature_ijmpcall,
2632 &feature_sram,
26332653 &feature_break,
2634 &feature_mul,
26352654 &feature_movw,
2636 &feature_addsubiw,
26372655 },
26382656};
26392657
......@@ -2641,15 +2659,15 @@ pub const cpu_atmega8u2 = Cpu{
26412659 .name = "atmega8u2",
26422660 .llvm_name = "atmega8u2",
26432661 .dependencies = &[_]*const Feature {
2644 &feature_lpmx,
2662 &feature_sram,
2663 &feature_jmpcall,
26452664 &feature_lpm,
2665 &feature_lpmx,
26462666 &feature_spm,
2667 &feature_addsubiw,
26472668 &feature_ijmpcall,
2648 &feature_sram,
26492669 &feature_break,
2650 &feature_jmpcall,
26512670 &feature_movw,
2652 &feature_addsubiw,
26532671 },
26542672};
26552673
......@@ -2657,9 +2675,9 @@ pub const cpu_attiny10 = Cpu{
26572675 .name = "attiny10",
26582676 .llvm_name = "attiny10",
26592677 .dependencies = &[_]*const Feature {
2660 &feature_break,
2661 &feature_tinyencoding,
26622678 &feature_sram,
2679 &feature_tinyencoding,
2680 &feature_break,
26632681 },
26642682};
26652683
......@@ -2667,9 +2685,9 @@ pub const cpu_attiny102 = Cpu{
26672685 .name = "attiny102",
26682686 .llvm_name = "attiny102",
26692687 .dependencies = &[_]*const Feature {
2670 &feature_break,
2671 &feature_tinyencoding,
26722688 &feature_sram,
2689 &feature_tinyencoding,
2690 &feature_break,
26732691 },
26742692};
26752693
......@@ -2677,9 +2695,9 @@ pub const cpu_attiny104 = Cpu{
26772695 .name = "attiny104",
26782696 .llvm_name = "attiny104",
26792697 .dependencies = &[_]*const Feature {
2680 &feature_break,
2681 &feature_tinyencoding,
26822698 &feature_sram,
2699 &feature_tinyencoding,
2700 &feature_break,
26832701 },
26842702};
26852703
......@@ -2703,14 +2721,14 @@ pub const cpu_attiny13 = Cpu{
27032721 .name = "attiny13",
27042722 .llvm_name = "attiny13",
27052723 .dependencies = &[_]*const Feature {
2706 &feature_lpmx,
2724 &feature_sram,
27072725 &feature_lpm,
2726 &feature_lpmx,
27082727 &feature_spm,
2728 &feature_addsubiw,
27092729 &feature_ijmpcall,
2710 &feature_sram,
27112730 &feature_break,
27122731 &feature_movw,
2713 &feature_addsubiw,
27142732 },
27152733};
27162734
......@@ -2718,14 +2736,14 @@ pub const cpu_attiny13a = Cpu{
27182736 .name = "attiny13a",
27192737 .llvm_name = "attiny13a",
27202738 .dependencies = &[_]*const Feature {
2721 &feature_lpmx,
2739 &feature_sram,
27222740 &feature_lpm,
2741 &feature_lpmx,
27232742 &feature_spm,
2743 &feature_addsubiw,
27242744 &feature_ijmpcall,
2725 &feature_sram,
27262745 &feature_break,
27272746 &feature_movw,
2728 &feature_addsubiw,
27292747 },
27302748};
27312749
......@@ -2741,15 +2759,15 @@ pub const cpu_attiny1634 = Cpu{
27412759 .name = "attiny1634",
27422760 .llvm_name = "attiny1634",
27432761 .dependencies = &[_]*const Feature {
2744 &feature_lpmx,
2762 &feature_sram,
2763 &feature_jmpcall,
27452764 &feature_lpm,
2765 &feature_lpmx,
27462766 &feature_spm,
2767 &feature_addsubiw,
27472768 &feature_ijmpcall,
2748 &feature_sram,
27492769 &feature_break,
2750 &feature_jmpcall,
27512770 &feature_movw,
2752 &feature_addsubiw,
27532771 },
27542772};
27552773
......@@ -2757,15 +2775,15 @@ pub const cpu_attiny167 = Cpu{
27572775 .name = "attiny167",
27582776 .llvm_name = "attiny167",
27592777 .dependencies = &[_]*const Feature {
2760 &feature_lpmx,
2778 &feature_sram,
2779 &feature_jmpcall,
27612780 &feature_lpm,
2781 &feature_lpmx,
27622782 &feature_spm,
2783 &feature_addsubiw,
27632784 &feature_ijmpcall,
2764 &feature_sram,
27652785 &feature_break,
2766 &feature_jmpcall,
27672786 &feature_movw,
2768 &feature_addsubiw,
27692787 },
27702788};
27712789
......@@ -2773,9 +2791,9 @@ pub const cpu_attiny20 = Cpu{
27732791 .name = "attiny20",
27742792 .llvm_name = "attiny20",
27752793 .dependencies = &[_]*const Feature {
2776 &feature_break,
2777 &feature_tinyencoding,
27782794 &feature_sram,
2795 &feature_tinyencoding,
2796 &feature_break,
27792797 },
27802798};
27812799
......@@ -2783,10 +2801,10 @@ pub const cpu_attiny22 = Cpu{
27832801 .name = "attiny22",
27842802 .llvm_name = "attiny22",
27852803 .dependencies = &[_]*const Feature {
2786 &feature_lpm,
2787 &feature_ijmpcall,
27882804 &feature_sram,
2805 &feature_lpm,
27892806 &feature_addsubiw,
2807 &feature_ijmpcall,
27902808 },
27912809};
27922810
......@@ -2794,14 +2812,14 @@ pub const cpu_attiny2313 = Cpu{
27942812 .name = "attiny2313",
27952813 .llvm_name = "attiny2313",
27962814 .dependencies = &[_]*const Feature {
2797 &feature_lpmx,
2815 &feature_sram,
27982816 &feature_lpm,
2817 &feature_lpmx,
27992818 &feature_spm,
2819 &feature_addsubiw,
28002820 &feature_ijmpcall,
2801 &feature_sram,
28022821 &feature_break,
28032822 &feature_movw,
2804 &feature_addsubiw,
28052823 },
28062824};
28072825
......@@ -2809,14 +2827,14 @@ pub const cpu_attiny2313a = Cpu{
28092827 .name = "attiny2313a",
28102828 .llvm_name = "attiny2313a",
28112829 .dependencies = &[_]*const Feature {
2812 &feature_lpmx,
2830 &feature_sram,
28132831 &feature_lpm,
2832 &feature_lpmx,
28142833 &feature_spm,
2834 &feature_addsubiw,
28152835 &feature_ijmpcall,
2816 &feature_sram,
28172836 &feature_break,
28182837 &feature_movw,
2819 &feature_addsubiw,
28202838 },
28212839};
28222840
......@@ -2824,14 +2842,14 @@ pub const cpu_attiny24 = Cpu{
28242842 .name = "attiny24",
28252843 .llvm_name = "attiny24",
28262844 .dependencies = &[_]*const Feature {
2827 &feature_lpmx,
2845 &feature_sram,
28282846 &feature_lpm,
2847 &feature_lpmx,
28292848 &feature_spm,
2849 &feature_addsubiw,
28302850 &feature_ijmpcall,
2831 &feature_sram,
28322851 &feature_break,
28332852 &feature_movw,
2834 &feature_addsubiw,
28352853 },
28362854};
28372855
......@@ -2839,14 +2857,14 @@ pub const cpu_attiny24a = Cpu{
28392857 .name = "attiny24a",
28402858 .llvm_name = "attiny24a",
28412859 .dependencies = &[_]*const Feature {
2842 &feature_lpmx,
2860 &feature_sram,
28432861 &feature_lpm,
2862 &feature_lpmx,
28442863 &feature_spm,
2864 &feature_addsubiw,
28452865 &feature_ijmpcall,
2846 &feature_sram,
28472866 &feature_break,
28482867 &feature_movw,
2849 &feature_addsubiw,
28502868 },
28512869};
28522870
......@@ -2854,14 +2872,14 @@ pub const cpu_attiny25 = Cpu{
28542872 .name = "attiny25",
28552873 .llvm_name = "attiny25",
28562874 .dependencies = &[_]*const Feature {
2857 &feature_lpmx,
2875 &feature_sram,
28582876 &feature_lpm,
2877 &feature_lpmx,
28592878 &feature_spm,
2879 &feature_addsubiw,
28602880 &feature_ijmpcall,
2861 &feature_sram,
28622881 &feature_break,
28632882 &feature_movw,
2864 &feature_addsubiw,
28652883 },
28662884};
28672885
......@@ -2869,10 +2887,10 @@ pub const cpu_attiny26 = Cpu{
28692887 .name = "attiny26",
28702888 .llvm_name = "attiny26",
28712889 .dependencies = &[_]*const Feature {
2872 &feature_lpm,
2873 &feature_ijmpcall,
28742890 &feature_sram,
2891 &feature_lpm,
28752892 &feature_addsubiw,
2893 &feature_ijmpcall,
28762894 &feature_lpmx,
28772895 },
28782896};
......@@ -2881,14 +2899,14 @@ pub const cpu_attiny261 = Cpu{
28812899 .name = "attiny261",
28822900 .llvm_name = "attiny261",
28832901 .dependencies = &[_]*const Feature {
2884 &feature_lpmx,
2902 &feature_sram,
28852903 &feature_lpm,
2904 &feature_lpmx,
28862905 &feature_spm,
2906 &feature_addsubiw,
28872907 &feature_ijmpcall,
2888 &feature_sram,
28892908 &feature_break,
28902909 &feature_movw,
2891 &feature_addsubiw,
28922910 },
28932911};
28942912
......@@ -2896,14 +2914,14 @@ pub const cpu_attiny261a = Cpu{
28962914 .name = "attiny261a",
28972915 .llvm_name = "attiny261a",
28982916 .dependencies = &[_]*const Feature {
2899 &feature_lpmx,
2917 &feature_sram,
29002918 &feature_lpm,
2919 &feature_lpmx,
29012920 &feature_spm,
2921 &feature_addsubiw,
29022922 &feature_ijmpcall,
2903 &feature_sram,
29042923 &feature_break,
29052924 &feature_movw,
2906 &feature_addsubiw,
29072925 },
29082926};
29092927
......@@ -2919,9 +2937,9 @@ pub const cpu_attiny4 = Cpu{
29192937 .name = "attiny4",
29202938 .llvm_name = "attiny4",
29212939 .dependencies = &[_]*const Feature {
2922 &feature_break,
2923 &feature_tinyencoding,
29242940 &feature_sram,
2941 &feature_tinyencoding,
2942 &feature_break,
29252943 },
29262944};
29272945
......@@ -2929,9 +2947,9 @@ pub const cpu_attiny40 = Cpu{
29292947 .name = "attiny40",
29302948 .llvm_name = "attiny40",
29312949 .dependencies = &[_]*const Feature {
2932 &feature_break,
2933 &feature_tinyencoding,
29342950 &feature_sram,
2951 &feature_tinyencoding,
2952 &feature_break,
29352953 },
29362954};
29372955
......@@ -2939,14 +2957,14 @@ pub const cpu_attiny4313 = Cpu{
29392957 .name = "attiny4313",
29402958 .llvm_name = "attiny4313",
29412959 .dependencies = &[_]*const Feature {
2942 &feature_lpmx,
2960 &feature_sram,
29432961 &feature_lpm,
2962 &feature_lpmx,
29442963 &feature_spm,
2964 &feature_addsubiw,
29452965 &feature_ijmpcall,
2946 &feature_sram,
29472966 &feature_break,
29482967 &feature_movw,
2949 &feature_addsubiw,
29502968 },
29512969};
29522970
......@@ -2954,14 +2972,14 @@ pub const cpu_attiny43u = Cpu{
29542972 .name = "attiny43u",
29552973 .llvm_name = "attiny43u",
29562974 .dependencies = &[_]*const Feature {
2957 &feature_lpmx,
2975 &feature_sram,
29582976 &feature_lpm,
2977 &feature_lpmx,
29592978 &feature_spm,
2979 &feature_addsubiw,
29602980 &feature_ijmpcall,
2961 &feature_sram,
29622981 &feature_break,
29632982 &feature_movw,
2964 &feature_addsubiw,
29652983 },
29662984};
29672985
......@@ -2969,14 +2987,14 @@ pub const cpu_attiny44 = Cpu{
29692987 .name = "attiny44",
29702988 .llvm_name = "attiny44",
29712989 .dependencies = &[_]*const Feature {
2972 &feature_lpmx,
2990 &feature_sram,
29732991 &feature_lpm,
2992 &feature_lpmx,
29742993 &feature_spm,
2994 &feature_addsubiw,
29752995 &feature_ijmpcall,
2976 &feature_sram,
29772996 &feature_break,
29782997 &feature_movw,
2979 &feature_addsubiw,
29802998 },
29812999};
29823000
......@@ -2984,14 +3002,14 @@ pub const cpu_attiny44a = Cpu{
29843002 .name = "attiny44a",
29853003 .llvm_name = "attiny44a",
29863004 .dependencies = &[_]*const Feature {
2987 &feature_lpmx,
3005 &feature_sram,
29883006 &feature_lpm,
3007 &feature_lpmx,
29893008 &feature_spm,
3009 &feature_addsubiw,
29903010 &feature_ijmpcall,
2991 &feature_sram,
29923011 &feature_break,
29933012 &feature_movw,
2994 &feature_addsubiw,
29953013 },
29963014};
29973015
......@@ -2999,14 +3017,14 @@ pub const cpu_attiny45 = Cpu{
29993017 .name = "attiny45",
30003018 .llvm_name = "attiny45",
30013019 .dependencies = &[_]*const Feature {
3002 &feature_lpmx,
3020 &feature_sram,
30033021 &feature_lpm,
3022 &feature_lpmx,
30043023 &feature_spm,
3024 &feature_addsubiw,
30053025 &feature_ijmpcall,
3006 &feature_sram,
30073026 &feature_break,
30083027 &feature_movw,
3009 &feature_addsubiw,
30103028 },
30113029};
30123030
......@@ -3014,14 +3032,14 @@ pub const cpu_attiny461 = Cpu{
30143032 .name = "attiny461",
30153033 .llvm_name = "attiny461",
30163034 .dependencies = &[_]*const Feature {
3017 &feature_lpmx,
3035 &feature_sram,
30183036 &feature_lpm,
3037 &feature_lpmx,
30193038 &feature_spm,
3039 &feature_addsubiw,
30203040 &feature_ijmpcall,
3021 &feature_sram,
30223041 &feature_break,
30233042 &feature_movw,
3024 &feature_addsubiw,
30253043 },
30263044};
30273045
......@@ -3029,14 +3047,14 @@ pub const cpu_attiny461a = Cpu{
30293047 .name = "attiny461a",
30303048 .llvm_name = "attiny461a",
30313049 .dependencies = &[_]*const Feature {
3032 &feature_lpmx,
3050 &feature_sram,
30333051 &feature_lpm,
3052 &feature_lpmx,
30343053 &feature_spm,
3054 &feature_addsubiw,
30353055 &feature_ijmpcall,
3036 &feature_sram,
30373056 &feature_break,
30383057 &feature_movw,
3039 &feature_addsubiw,
30403058 },
30413059};
30423060
......@@ -3044,14 +3062,14 @@ pub const cpu_attiny48 = Cpu{
30443062 .name = "attiny48",
30453063 .llvm_name = "attiny48",
30463064 .dependencies = &[_]*const Feature {
3047 &feature_lpmx,
3065 &feature_sram,
30483066 &feature_lpm,
3067 &feature_lpmx,
30493068 &feature_spm,
3069 &feature_addsubiw,
30503070 &feature_ijmpcall,
3051 &feature_sram,
30523071 &feature_break,
30533072 &feature_movw,
3054 &feature_addsubiw,
30553073 },
30563074};
30573075
......@@ -3059,9 +3077,9 @@ pub const cpu_attiny5 = Cpu{
30593077 .name = "attiny5",
30603078 .llvm_name = "attiny5",
30613079 .dependencies = &[_]*const Feature {
3062 &feature_break,
3063 &feature_tinyencoding,
30643080 &feature_sram,
3081 &feature_tinyencoding,
3082 &feature_break,
30653083 },
30663084};
30673085
......@@ -3069,14 +3087,14 @@ pub const cpu_attiny828 = Cpu{
30693087 .name = "attiny828",
30703088 .llvm_name = "attiny828",
30713089 .dependencies = &[_]*const Feature {
3072 &feature_lpmx,
3090 &feature_sram,
30733091 &feature_lpm,
3092 &feature_lpmx,
30743093 &feature_spm,
3094 &feature_addsubiw,
30753095 &feature_ijmpcall,
3076 &feature_sram,
30773096 &feature_break,
30783097 &feature_movw,
3079 &feature_addsubiw,
30803098 },
30813099};
30823100
......@@ -3084,14 +3102,14 @@ pub const cpu_attiny84 = Cpu{
30843102 .name = "attiny84",
30853103 .llvm_name = "attiny84",
30863104 .dependencies = &[_]*const Feature {
3087 &feature_lpmx,
3105 &feature_sram,
30883106 &feature_lpm,
3107 &feature_lpmx,
30893108 &feature_spm,
3109 &feature_addsubiw,
30903110 &feature_ijmpcall,
3091 &feature_sram,
30923111 &feature_break,
30933112 &feature_movw,
3094 &feature_addsubiw,
30953113 },
30963114};
30973115
......@@ -3099,14 +3117,14 @@ pub const cpu_attiny84a = Cpu{
30993117 .name = "attiny84a",
31003118 .llvm_name = "attiny84a",
31013119 .dependencies = &[_]*const Feature {
3102 &feature_lpmx,
3120 &feature_sram,
31033121 &feature_lpm,
3122 &feature_lpmx,
31043123 &feature_spm,
3124 &feature_addsubiw,
31053125 &feature_ijmpcall,
3106 &feature_sram,
31073126 &feature_break,
31083127 &feature_movw,
3109 &feature_addsubiw,
31103128 },
31113129};
31123130
......@@ -3114,14 +3132,14 @@ pub const cpu_attiny85 = Cpu{
31143132 .name = "attiny85",
31153133 .llvm_name = "attiny85",
31163134 .dependencies = &[_]*const Feature {
3117 &feature_lpmx,
3135 &feature_sram,
31183136 &feature_lpm,
3137 &feature_lpmx,
31193138 &feature_spm,
3139 &feature_addsubiw,
31203140 &feature_ijmpcall,
3121 &feature_sram,
31223141 &feature_break,
31233142 &feature_movw,
3124 &feature_addsubiw,
31253143 },
31263144};
31273145
......@@ -3129,14 +3147,14 @@ pub const cpu_attiny861 = Cpu{
31293147 .name = "attiny861",
31303148 .llvm_name = "attiny861",
31313149 .dependencies = &[_]*const Feature {
3132 &feature_lpmx,
3150 &feature_sram,
31333151 &feature_lpm,
3152 &feature_lpmx,
31343153 &feature_spm,
3154 &feature_addsubiw,
31353155 &feature_ijmpcall,
3136 &feature_sram,
31373156 &feature_break,
31383157 &feature_movw,
3139 &feature_addsubiw,
31403158 },
31413159};
31423160
......@@ -3144,14 +3162,14 @@ pub const cpu_attiny861a = Cpu{
31443162 .name = "attiny861a",
31453163 .llvm_name = "attiny861a",
31463164 .dependencies = &[_]*const Feature {
3147 &feature_lpmx,
3165 &feature_sram,
31483166 &feature_lpm,
3167 &feature_lpmx,
31493168 &feature_spm,
3169 &feature_addsubiw,
31503170 &feature_ijmpcall,
3151 &feature_sram,
31523171 &feature_break,
31533172 &feature_movw,
3154 &feature_addsubiw,
31553173 },
31563174};
31573175
......@@ -3159,14 +3177,14 @@ pub const cpu_attiny87 = Cpu{
31593177 .name = "attiny87",
31603178 .llvm_name = "attiny87",
31613179 .dependencies = &[_]*const Feature {
3162 &feature_lpmx,
3180 &feature_sram,
31633181 &feature_lpm,
3182 &feature_lpmx,
31643183 &feature_spm,
3184 &feature_addsubiw,
31653185 &feature_ijmpcall,
3166 &feature_sram,
31673186 &feature_break,
31683187 &feature_movw,
3169 &feature_addsubiw,
31703188 },
31713189};
31723190
......@@ -3174,14 +3192,14 @@ pub const cpu_attiny88 = Cpu{
31743192 .name = "attiny88",
31753193 .llvm_name = "attiny88",
31763194 .dependencies = &[_]*const Feature {
3177 &feature_lpmx,
3195 &feature_sram,
31783196 &feature_lpm,
3197 &feature_lpmx,
31793198 &feature_spm,
3199 &feature_addsubiw,
31803200 &feature_ijmpcall,
3181 &feature_sram,
31823201 &feature_break,
31833202 &feature_movw,
3184 &feature_addsubiw,
31853203 },
31863204};
31873205
......@@ -3189,9 +3207,9 @@ pub const cpu_attiny9 = Cpu{
31893207 .name = "attiny9",
31903208 .llvm_name = "attiny9",
31913209 .dependencies = &[_]*const Feature {
3192 &feature_break,
3193 &feature_tinyencoding,
31943210 &feature_sram,
3211 &feature_tinyencoding,
3212 &feature_break,
31953213 },
31963214};
31973215
......@@ -3199,21 +3217,21 @@ pub const cpu_atxmega128a1 = Cpu{
31993217 .name = "atxmega128a1",
32003218 .llvm_name = "atxmega128a1",
32013219 .dependencies = &[_]*const Feature {
3202 &feature_lpmx,
3220 &feature_des,
3221 &feature_sram,
3222 &feature_eijmpcall,
3223 &feature_jmpcall,
3224 &feature_mul,
32033225 &feature_elpm,
3226 &feature_spmx,
32043227 &feature_lpm,
3228 &feature_lpmx,
32053229 &feature_spm,
3230 &feature_addsubiw,
32063231 &feature_ijmpcall,
3207 &feature_movw,
3208 &feature_sram,
3209 &feature_spmx,
3210 &feature_break,
3211 &feature_jmpcall,
3212 &feature_des,
3213 &feature_mul,
3214 &feature_eijmpcall,
32153232 &feature_elpmx,
3216 &feature_addsubiw,
3233 &feature_break,
3234 &feature_movw,
32173235 },
32183236};
32193237
......@@ -3221,22 +3239,22 @@ pub const cpu_atxmega128a1u = Cpu{
32213239 .name = "atxmega128a1u",
32223240 .llvm_name = "atxmega128a1u",
32233241 .dependencies = &[_]*const Feature {
3224 &feature_lpmx,
3225 &feature_elpm,
3226 &feature_spm,
3227 &feature_lpm,
3228 &feature_ijmpcall,
3229 &feature_elpmx,
3242 &feature_des,
32303243 &feature_sram,
3231 &feature_spmx,
3232 &feature_break,
3244 &feature_movw,
32333245 &feature_jmpcall,
3234 &feature_des,
3235 &feature_rmw,
32363246 &feature_mul,
3237 &feature_eijmpcall,
3238 &feature_movw,
3247 &feature_elpm,
3248 &feature_spmx,
3249 &feature_lpm,
3250 &feature_lpmx,
3251 &feature_spm,
32393252 &feature_addsubiw,
3253 &feature_rmw,
3254 &feature_ijmpcall,
3255 &feature_eijmpcall,
3256 &feature_break,
3257 &feature_elpmx,
32403258 },
32413259};
32423260
......@@ -3244,21 +3262,21 @@ pub const cpu_atxmega128a3 = Cpu{
32443262 .name = "atxmega128a3",
32453263 .llvm_name = "atxmega128a3",
32463264 .dependencies = &[_]*const Feature {
3247 &feature_lpmx,
3265 &feature_des,
3266 &feature_sram,
3267 &feature_eijmpcall,
3268 &feature_jmpcall,
3269 &feature_mul,
32483270 &feature_elpm,
3271 &feature_spmx,
32493272 &feature_lpm,
3273 &feature_lpmx,
32503274 &feature_spm,
3275 &feature_addsubiw,
32513276 &feature_ijmpcall,
3252 &feature_movw,
3253 &feature_sram,
3254 &feature_spmx,
3255 &feature_break,
3256 &feature_jmpcall,
3257 &feature_des,
3258 &feature_mul,
3259 &feature_eijmpcall,
32603277 &feature_elpmx,
3261 &feature_addsubiw,
3278 &feature_break,
3279 &feature_movw,
32623280 },
32633281};
32643282
......@@ -3266,22 +3284,22 @@ pub const cpu_atxmega128a3u = Cpu{
32663284 .name = "atxmega128a3u",
32673285 .llvm_name = "atxmega128a3u",
32683286 .dependencies = &[_]*const Feature {
3269 &feature_lpmx,
3270 &feature_elpm,
3271 &feature_spm,
3272 &feature_lpm,
3273 &feature_ijmpcall,
3274 &feature_elpmx,
3287 &feature_des,
32753288 &feature_sram,
3276 &feature_spmx,
3277 &feature_break,
3289 &feature_movw,
32783290 &feature_jmpcall,
3279 &feature_des,
3280 &feature_rmw,
32813291 &feature_mul,
3282 &feature_eijmpcall,
3283 &feature_movw,
3292 &feature_elpm,
3293 &feature_spmx,
3294 &feature_lpm,
3295 &feature_lpmx,
3296 &feature_spm,
32843297 &feature_addsubiw,
3298 &feature_rmw,
3299 &feature_ijmpcall,
3300 &feature_eijmpcall,
3301 &feature_break,
3302 &feature_elpmx,
32853303 },
32863304};
32873305
......@@ -3289,22 +3307,22 @@ pub const cpu_atxmega128a4u = Cpu{
32893307 .name = "atxmega128a4u",
32903308 .llvm_name = "atxmega128a4u",
32913309 .dependencies = &[_]*const Feature {
3292 &feature_lpmx,
3293 &feature_elpm,
3294 &feature_spm,
3295 &feature_lpm,
3296 &feature_ijmpcall,
3297 &feature_elpmx,
3310 &feature_des,
32983311 &feature_sram,
3299 &feature_spmx,
3300 &feature_break,
3312 &feature_movw,
33013313 &feature_jmpcall,
3302 &feature_des,
3303 &feature_rmw,
33043314 &feature_mul,
3305 &feature_eijmpcall,
3306 &feature_movw,
3315 &feature_elpm,
3316 &feature_spmx,
3317 &feature_lpm,
3318 &feature_lpmx,
3319 &feature_spm,
33073320 &feature_addsubiw,
3321 &feature_rmw,
3322 &feature_ijmpcall,
3323 &feature_eijmpcall,
3324 &feature_break,
3325 &feature_elpmx,
33083326 },
33093327};
33103328
......@@ -3312,22 +3330,22 @@ pub const cpu_atxmega128b1 = Cpu{
33123330 .name = "atxmega128b1",
33133331 .llvm_name = "atxmega128b1",
33143332 .dependencies = &[_]*const Feature {
3315 &feature_lpmx,
3316 &feature_elpm,
3317 &feature_spm,
3318 &feature_lpm,
3319 &feature_ijmpcall,
3320 &feature_elpmx,
3333 &feature_des,
33213334 &feature_sram,
3322 &feature_spmx,
3323 &feature_break,
3335 &feature_movw,
33243336 &feature_jmpcall,
3325 &feature_des,
3326 &feature_rmw,
33273337 &feature_mul,
3328 &feature_eijmpcall,
3329 &feature_movw,
3338 &feature_elpm,
3339 &feature_spmx,
3340 &feature_lpm,
3341 &feature_lpmx,
3342 &feature_spm,
33303343 &feature_addsubiw,
3344 &feature_rmw,
3345 &feature_ijmpcall,
3346 &feature_eijmpcall,
3347 &feature_break,
3348 &feature_elpmx,
33313349 },
33323350};
33333351
......@@ -3335,22 +3353,22 @@ pub const cpu_atxmega128b3 = Cpu{
33353353 .name = "atxmega128b3",
33363354 .llvm_name = "atxmega128b3",
33373355 .dependencies = &[_]*const Feature {
3338 &feature_lpmx,
3339 &feature_elpm,
3340 &feature_spm,
3341 &feature_lpm,
3342 &feature_ijmpcall,
3343 &feature_elpmx,
3356 &feature_des,
33443357 &feature_sram,
3345 &feature_spmx,
3346 &feature_break,
3358 &feature_movw,
33473359 &feature_jmpcall,
3348 &feature_des,
3349 &feature_rmw,
33503360 &feature_mul,
3351 &feature_eijmpcall,
3352 &feature_movw,
3361 &feature_elpm,
3362 &feature_spmx,
3363 &feature_lpm,
3364 &feature_lpmx,
3365 &feature_spm,
33533366 &feature_addsubiw,
3367 &feature_rmw,
3368 &feature_ijmpcall,
3369 &feature_eijmpcall,
3370 &feature_break,
3371 &feature_elpmx,
33543372 },
33553373};
33563374
......@@ -3358,22 +3376,22 @@ pub const cpu_atxmega128c3 = Cpu{
33583376 .name = "atxmega128c3",
33593377 .llvm_name = "atxmega128c3",
33603378 .dependencies = &[_]*const Feature {
3361 &feature_lpmx,
3362 &feature_elpm,
3363 &feature_spm,
3364 &feature_lpm,
3365 &feature_ijmpcall,
3366 &feature_elpmx,
3379 &feature_des,
33673380 &feature_sram,
3368 &feature_spmx,
3369 &feature_break,
3381 &feature_movw,
33703382 &feature_jmpcall,
3371 &feature_des,
3372 &feature_rmw,
33733383 &feature_mul,
3374 &feature_eijmpcall,
3375 &feature_movw,
3384 &feature_elpm,
3385 &feature_spmx,
3386 &feature_lpm,
3387 &feature_lpmx,
3388 &feature_spm,
33763389 &feature_addsubiw,
3390 &feature_rmw,
3391 &feature_ijmpcall,
3392 &feature_eijmpcall,
3393 &feature_break,
3394 &feature_elpmx,
33773395 },
33783396};
33793397
......@@ -3381,21 +3399,21 @@ pub const cpu_atxmega128d3 = Cpu{
33813399 .name = "atxmega128d3",
33823400 .llvm_name = "atxmega128d3",
33833401 .dependencies = &[_]*const Feature {
3384 &feature_lpmx,
3402 &feature_des,
3403 &feature_sram,
3404 &feature_eijmpcall,
3405 &feature_jmpcall,
3406 &feature_mul,
33853407 &feature_elpm,
3408 &feature_spmx,
33863409 &feature_lpm,
3410 &feature_lpmx,
33873411 &feature_spm,
3412 &feature_addsubiw,
33883413 &feature_ijmpcall,
3389 &feature_movw,
3390 &feature_sram,
3391 &feature_spmx,
3392 &feature_break,
3393 &feature_jmpcall,
3394 &feature_des,
3395 &feature_mul,
3396 &feature_eijmpcall,
33973414 &feature_elpmx,
3398 &feature_addsubiw,
3415 &feature_break,
3416 &feature_movw,
33993417 },
34003418};
34013419
......@@ -3403,21 +3421,21 @@ pub const cpu_atxmega128d4 = Cpu{
34033421 .name = "atxmega128d4",
34043422 .llvm_name = "atxmega128d4",
34053423 .dependencies = &[_]*const Feature {
3406 &feature_lpmx,
3424 &feature_des,
3425 &feature_sram,
3426 &feature_eijmpcall,
3427 &feature_jmpcall,
3428 &feature_mul,
34073429 &feature_elpm,
3430 &feature_spmx,
34083431 &feature_lpm,
3432 &feature_lpmx,
34093433 &feature_spm,
3434 &feature_addsubiw,
34103435 &feature_ijmpcall,
3411 &feature_movw,
3412 &feature_sram,
3413 &feature_spmx,
3414 &feature_break,
3415 &feature_jmpcall,
3416 &feature_des,
3417 &feature_mul,
3418 &feature_eijmpcall,
34193436 &feature_elpmx,
3420 &feature_addsubiw,
3437 &feature_break,
3438 &feature_movw,
34213439 },
34223440};
34233441
......@@ -3425,21 +3443,21 @@ pub const cpu_atxmega16a4 = Cpu{
34253443 .name = "atxmega16a4",
34263444 .llvm_name = "atxmega16a4",
34273445 .dependencies = &[_]*const Feature {
3428 &feature_lpmx,
3446 &feature_des,
3447 &feature_sram,
3448 &feature_eijmpcall,
3449 &feature_jmpcall,
3450 &feature_mul,
34293451 &feature_elpm,
3452 &feature_spmx,
34303453 &feature_lpm,
3454 &feature_lpmx,
34313455 &feature_spm,
3456 &feature_addsubiw,
34323457 &feature_ijmpcall,
3433 &feature_movw,
3434 &feature_sram,
3435 &feature_spmx,
3436 &feature_break,
3437 &feature_jmpcall,
3438 &feature_des,
3439 &feature_mul,
3440 &feature_eijmpcall,
34413458 &feature_elpmx,
3442 &feature_addsubiw,
3459 &feature_break,
3460 &feature_movw,
34433461 },
34443462};
34453463
......@@ -3447,22 +3465,22 @@ pub const cpu_atxmega16a4u = Cpu{
34473465 .name = "atxmega16a4u",
34483466 .llvm_name = "atxmega16a4u",
34493467 .dependencies = &[_]*const Feature {
3450 &feature_lpmx,
3451 &feature_elpm,
3452 &feature_spm,
3453 &feature_lpm,
3454 &feature_ijmpcall,
3455 &feature_elpmx,
3468 &feature_des,
34563469 &feature_sram,
3457 &feature_spmx,
3458 &feature_break,
3470 &feature_movw,
34593471 &feature_jmpcall,
3460 &feature_des,
3461 &feature_rmw,
34623472 &feature_mul,
3463 &feature_eijmpcall,
3464 &feature_movw,
3473 &feature_elpm,
3474 &feature_spmx,
3475 &feature_lpm,
3476 &feature_lpmx,
3477 &feature_spm,
34653478 &feature_addsubiw,
3479 &feature_rmw,
3480 &feature_ijmpcall,
3481 &feature_eijmpcall,
3482 &feature_break,
3483 &feature_elpmx,
34663484 },
34673485};
34683486
......@@ -3470,22 +3488,22 @@ pub const cpu_atxmega16c4 = Cpu{
34703488 .name = "atxmega16c4",
34713489 .llvm_name = "atxmega16c4",
34723490 .dependencies = &[_]*const Feature {
3473 &feature_lpmx,
3474 &feature_elpm,
3475 &feature_spm,
3476 &feature_lpm,
3477 &feature_ijmpcall,
3478 &feature_elpmx,
3491 &feature_des,
34793492 &feature_sram,
3480 &feature_spmx,
3481 &feature_break,
3493 &feature_movw,
34823494 &feature_jmpcall,
3483 &feature_des,
3484 &feature_rmw,
34853495 &feature_mul,
3486 &feature_eijmpcall,
3487 &feature_movw,
3496 &feature_elpm,
3497 &feature_spmx,
3498 &feature_lpm,
3499 &feature_lpmx,
3500 &feature_spm,
34883501 &feature_addsubiw,
3502 &feature_rmw,
3503 &feature_ijmpcall,
3504 &feature_eijmpcall,
3505 &feature_break,
3506 &feature_elpmx,
34893507 },
34903508};
34913509
......@@ -3493,21 +3511,21 @@ pub const cpu_atxmega16d4 = Cpu{
34933511 .name = "atxmega16d4",
34943512 .llvm_name = "atxmega16d4",
34953513 .dependencies = &[_]*const Feature {
3496 &feature_lpmx,
3514 &feature_des,
3515 &feature_sram,
3516 &feature_eijmpcall,
3517 &feature_jmpcall,
3518 &feature_mul,
34973519 &feature_elpm,
3520 &feature_spmx,
34983521 &feature_lpm,
3522 &feature_lpmx,
34993523 &feature_spm,
3524 &feature_addsubiw,
35003525 &feature_ijmpcall,
3501 &feature_movw,
3502 &feature_sram,
3503 &feature_spmx,
3504 &feature_break,
3505 &feature_jmpcall,
3506 &feature_des,
3507 &feature_mul,
3508 &feature_eijmpcall,
35093526 &feature_elpmx,
3510 &feature_addsubiw,
3527 &feature_break,
3528 &feature_movw,
35113529 },
35123530};
35133531
......@@ -3515,21 +3533,21 @@ pub const cpu_atxmega16e5 = Cpu{
35153533 .name = "atxmega16e5",
35163534 .llvm_name = "atxmega16e5",
35173535 .dependencies = &[_]*const Feature {
3518 &feature_lpmx,
3536 &feature_des,
3537 &feature_sram,
3538 &feature_eijmpcall,
3539 &feature_jmpcall,
3540 &feature_mul,
35193541 &feature_elpm,
3542 &feature_spmx,
35203543 &feature_lpm,
3544 &feature_lpmx,
35213545 &feature_spm,
3546 &feature_addsubiw,
35223547 &feature_ijmpcall,
3523 &feature_movw,
3524 &feature_sram,
3525 &feature_spmx,
3526 &feature_break,
3527 &feature_jmpcall,
3528 &feature_des,
3529 &feature_mul,
3530 &feature_eijmpcall,
35313548 &feature_elpmx,
3532 &feature_addsubiw,
3549 &feature_break,
3550 &feature_movw,
35333551 },
35343552};
35353553
......@@ -3537,21 +3555,21 @@ pub const cpu_atxmega192a3 = Cpu{
35373555 .name = "atxmega192a3",
35383556 .llvm_name = "atxmega192a3",
35393557 .dependencies = &[_]*const Feature {
3540 &feature_lpmx,
3558 &feature_des,
3559 &feature_sram,
3560 &feature_eijmpcall,
3561 &feature_jmpcall,
3562 &feature_mul,
35413563 &feature_elpm,
3564 &feature_spmx,
35423565 &feature_lpm,
3566 &feature_lpmx,
35433567 &feature_spm,
3568 &feature_addsubiw,
35443569 &feature_ijmpcall,
3545 &feature_movw,
3546 &feature_sram,
3547 &feature_spmx,
3548 &feature_break,
3549 &feature_jmpcall,
3550 &feature_des,
3551 &feature_mul,
3552 &feature_eijmpcall,
35533570 &feature_elpmx,
3554 &feature_addsubiw,
3571 &feature_break,
3572 &feature_movw,
35553573 },
35563574};
35573575
......@@ -3559,22 +3577,22 @@ pub const cpu_atxmega192a3u = Cpu{
35593577 .name = "atxmega192a3u",
35603578 .llvm_name = "atxmega192a3u",
35613579 .dependencies = &[_]*const Feature {
3562 &feature_lpmx,
3563 &feature_elpm,
3564 &feature_spm,
3565 &feature_lpm,
3566 &feature_ijmpcall,
3567 &feature_elpmx,
3580 &feature_des,
35683581 &feature_sram,
3569 &feature_spmx,
3570 &feature_break,
3582 &feature_movw,
35713583 &feature_jmpcall,
3572 &feature_des,
3573 &feature_rmw,
35743584 &feature_mul,
3575 &feature_eijmpcall,
3576 &feature_movw,
3585 &feature_elpm,
3586 &feature_spmx,
3587 &feature_lpm,
3588 &feature_lpmx,
3589 &feature_spm,
35773590 &feature_addsubiw,
3591 &feature_rmw,
3592 &feature_ijmpcall,
3593 &feature_eijmpcall,
3594 &feature_break,
3595 &feature_elpmx,
35783596 },
35793597};
35803598
......@@ -3582,22 +3600,22 @@ pub const cpu_atxmega192c3 = Cpu{
35823600 .name = "atxmega192c3",
35833601 .llvm_name = "atxmega192c3",
35843602 .dependencies = &[_]*const Feature {
3585 &feature_lpmx,
3586 &feature_elpm,
3587 &feature_spm,
3588 &feature_lpm,
3589 &feature_ijmpcall,
3590 &feature_elpmx,
3603 &feature_des,
35913604 &feature_sram,
3592 &feature_spmx,
3593 &feature_break,
3605 &feature_movw,
35943606 &feature_jmpcall,
3595 &feature_des,
3596 &feature_rmw,
35973607 &feature_mul,
3598 &feature_eijmpcall,
3599 &feature_movw,
3608 &feature_elpm,
3609 &feature_spmx,
3610 &feature_lpm,
3611 &feature_lpmx,
3612 &feature_spm,
36003613 &feature_addsubiw,
3614 &feature_rmw,
3615 &feature_ijmpcall,
3616 &feature_eijmpcall,
3617 &feature_break,
3618 &feature_elpmx,
36013619 },
36023620};
36033621
......@@ -3605,21 +3623,21 @@ pub const cpu_atxmega192d3 = Cpu{
36053623 .name = "atxmega192d3",
36063624 .llvm_name = "atxmega192d3",
36073625 .dependencies = &[_]*const Feature {
3608 &feature_lpmx,
3626 &feature_des,
3627 &feature_sram,
3628 &feature_eijmpcall,
3629 &feature_jmpcall,
3630 &feature_mul,
36093631 &feature_elpm,
3632 &feature_spmx,
36103633 &feature_lpm,
3634 &feature_lpmx,
36113635 &feature_spm,
3636 &feature_addsubiw,
36123637 &feature_ijmpcall,
3613 &feature_movw,
3614 &feature_sram,
3615 &feature_spmx,
3616 &feature_break,
3617 &feature_jmpcall,
3618 &feature_des,
3619 &feature_mul,
3620 &feature_eijmpcall,
36213638 &feature_elpmx,
3622 &feature_addsubiw,
3639 &feature_break,
3640 &feature_movw,
36233641 },
36243642};
36253643
......@@ -3627,21 +3645,21 @@ pub const cpu_atxmega256a3 = Cpu{
36273645 .name = "atxmega256a3",
36283646 .llvm_name = "atxmega256a3",
36293647 .dependencies = &[_]*const Feature {
3630 &feature_lpmx,
3648 &feature_des,
3649 &feature_sram,
3650 &feature_eijmpcall,
3651 &feature_jmpcall,
3652 &feature_mul,
36313653 &feature_elpm,
3654 &feature_spmx,
36323655 &feature_lpm,
3656 &feature_lpmx,
36333657 &feature_spm,
3658 &feature_addsubiw,
36343659 &feature_ijmpcall,
3635 &feature_movw,
3636 &feature_sram,
3637 &feature_spmx,
3638 &feature_break,
3639 &feature_jmpcall,
3640 &feature_des,
3641 &feature_mul,
3642 &feature_eijmpcall,
36433660 &feature_elpmx,
3644 &feature_addsubiw,
3661 &feature_break,
3662 &feature_movw,
36453663 },
36463664};
36473665
......@@ -3649,21 +3667,21 @@ pub const cpu_atxmega256a3b = Cpu{
36493667 .name = "atxmega256a3b",
36503668 .llvm_name = "atxmega256a3b",
36513669 .dependencies = &[_]*const Feature {
3652 &feature_lpmx,
3670 &feature_des,
3671 &feature_sram,
3672 &feature_eijmpcall,
3673 &feature_jmpcall,
3674 &feature_mul,
36533675 &feature_elpm,
3676 &feature_spmx,
36543677 &feature_lpm,
3678 &feature_lpmx,
36553679 &feature_spm,
3680 &feature_addsubiw,
36563681 &feature_ijmpcall,
3657 &feature_movw,
3658 &feature_sram,
3659 &feature_spmx,
3660 &feature_break,
3661 &feature_jmpcall,
3662 &feature_des,
3663 &feature_mul,
3664 &feature_eijmpcall,
36653682 &feature_elpmx,
3666 &feature_addsubiw,
3683 &feature_break,
3684 &feature_movw,
36673685 },
36683686};
36693687
......@@ -3671,22 +3689,22 @@ pub const cpu_atxmega256a3bu = Cpu{
36713689 .name = "atxmega256a3bu",
36723690 .llvm_name = "atxmega256a3bu",
36733691 .dependencies = &[_]*const Feature {
3674 &feature_lpmx,
3675 &feature_elpm,
3676 &feature_spm,
3677 &feature_lpm,
3678 &feature_ijmpcall,
3679 &feature_elpmx,
3692 &feature_des,
36803693 &feature_sram,
3681 &feature_spmx,
3682 &feature_break,
3694 &feature_movw,
36833695 &feature_jmpcall,
3684 &feature_des,
3685 &feature_rmw,
36863696 &feature_mul,
3687 &feature_eijmpcall,
3688 &feature_movw,
3697 &feature_elpm,
3698 &feature_spmx,
3699 &feature_lpm,
3700 &feature_lpmx,
3701 &feature_spm,
36893702 &feature_addsubiw,
3703 &feature_rmw,
3704 &feature_ijmpcall,
3705 &feature_eijmpcall,
3706 &feature_break,
3707 &feature_elpmx,
36903708 },
36913709};
36923710
......@@ -3694,22 +3712,22 @@ pub const cpu_atxmega256a3u = Cpu{
36943712 .name = "atxmega256a3u",
36953713 .llvm_name = "atxmega256a3u",
36963714 .dependencies = &[_]*const Feature {
3697 &feature_lpmx,
3698 &feature_elpm,
3699 &feature_spm,
3700 &feature_lpm,
3701 &feature_ijmpcall,
3702 &feature_elpmx,
3715 &feature_des,
37033716 &feature_sram,
3704 &feature_spmx,
3705 &feature_break,
3717 &feature_movw,
37063718 &feature_jmpcall,
3707 &feature_des,
3708 &feature_rmw,
37093719 &feature_mul,
3710 &feature_eijmpcall,
3711 &feature_movw,
3720 &feature_elpm,
3721 &feature_spmx,
3722 &feature_lpm,
3723 &feature_lpmx,
3724 &feature_spm,
37123725 &feature_addsubiw,
3726 &feature_rmw,
3727 &feature_ijmpcall,
3728 &feature_eijmpcall,
3729 &feature_break,
3730 &feature_elpmx,
37133731 },
37143732};
37153733
......@@ -3717,22 +3735,22 @@ pub const cpu_atxmega256c3 = Cpu{
37173735 .name = "atxmega256c3",
37183736 .llvm_name = "atxmega256c3",
37193737 .dependencies = &[_]*const Feature {
3720 &feature_lpmx,
3721 &feature_elpm,
3722 &feature_spm,
3723 &feature_lpm,
3724 &feature_ijmpcall,
3725 &feature_elpmx,
3738 &feature_des,
37263739 &feature_sram,
3727 &feature_spmx,
3728 &feature_break,
3740 &feature_movw,
37293741 &feature_jmpcall,
3730 &feature_des,
3731 &feature_rmw,
37323742 &feature_mul,
3733 &feature_eijmpcall,
3734 &feature_movw,
3743 &feature_elpm,
3744 &feature_spmx,
3745 &feature_lpm,
3746 &feature_lpmx,
3747 &feature_spm,
37353748 &feature_addsubiw,
3749 &feature_rmw,
3750 &feature_ijmpcall,
3751 &feature_eijmpcall,
3752 &feature_break,
3753 &feature_elpmx,
37363754 },
37373755};
37383756
......@@ -3740,21 +3758,21 @@ pub const cpu_atxmega256d3 = Cpu{
37403758 .name = "atxmega256d3",
37413759 .llvm_name = "atxmega256d3",
37423760 .dependencies = &[_]*const Feature {
3743 &feature_lpmx,
3761 &feature_des,
3762 &feature_sram,
3763 &feature_eijmpcall,
3764 &feature_jmpcall,
3765 &feature_mul,
37443766 &feature_elpm,
3767 &feature_spmx,
37453768 &feature_lpm,
3769 &feature_lpmx,
37463770 &feature_spm,
3771 &feature_addsubiw,
37473772 &feature_ijmpcall,
3748 &feature_movw,
3749 &feature_sram,
3750 &feature_spmx,
3751 &feature_break,
3752 &feature_jmpcall,
3753 &feature_des,
3754 &feature_mul,
3755 &feature_eijmpcall,
37563773 &feature_elpmx,
3757 &feature_addsubiw,
3774 &feature_break,
3775 &feature_movw,
37583776 },
37593777};
37603778
......@@ -3762,21 +3780,21 @@ pub const cpu_atxmega32a4 = Cpu{
37623780 .name = "atxmega32a4",
37633781 .llvm_name = "atxmega32a4",
37643782 .dependencies = &[_]*const Feature {
3765 &feature_lpmx,
3783 &feature_des,
3784 &feature_sram,
3785 &feature_eijmpcall,
3786 &feature_jmpcall,
3787 &feature_mul,
37663788 &feature_elpm,
3789 &feature_spmx,
37673790 &feature_lpm,
3791 &feature_lpmx,
37683792 &feature_spm,
3793 &feature_addsubiw,
37693794 &feature_ijmpcall,
3770 &feature_movw,
3771 &feature_sram,
3772 &feature_spmx,
3773 &feature_break,
3774 &feature_jmpcall,
3775 &feature_des,
3776 &feature_mul,
3777 &feature_eijmpcall,
37783795 &feature_elpmx,
3779 &feature_addsubiw,
3796 &feature_break,
3797 &feature_movw,
37803798 },
37813799};
37823800
......@@ -3784,22 +3802,22 @@ pub const cpu_atxmega32a4u = Cpu{
37843802 .name = "atxmega32a4u",
37853803 .llvm_name = "atxmega32a4u",
37863804 .dependencies = &[_]*const Feature {
3787 &feature_lpmx,
3788 &feature_elpm,
3789 &feature_spm,
3790 &feature_lpm,
3791 &feature_ijmpcall,
3792 &feature_elpmx,
3805 &feature_des,
37933806 &feature_sram,
3794 &feature_spmx,
3795 &feature_break,
3807 &feature_movw,
37963808 &feature_jmpcall,
3797 &feature_des,
3798 &feature_rmw,
37993809 &feature_mul,
3800 &feature_eijmpcall,
3801 &feature_movw,
3810 &feature_elpm,
3811 &feature_spmx,
3812 &feature_lpm,
3813 &feature_lpmx,
3814 &feature_spm,
38023815 &feature_addsubiw,
3816 &feature_rmw,
3817 &feature_ijmpcall,
3818 &feature_eijmpcall,
3819 &feature_break,
3820 &feature_elpmx,
38033821 },
38043822};
38053823
......@@ -3807,22 +3825,22 @@ pub const cpu_atxmega32c4 = Cpu{
38073825 .name = "atxmega32c4",
38083826 .llvm_name = "atxmega32c4",
38093827 .dependencies = &[_]*const Feature {
3810 &feature_lpmx,
3811 &feature_elpm,
3812 &feature_spm,
3813 &feature_lpm,
3814 &feature_ijmpcall,
3815 &feature_elpmx,
3828 &feature_des,
38163829 &feature_sram,
3817 &feature_spmx,
3818 &feature_break,
3830 &feature_movw,
38193831 &feature_jmpcall,
3820 &feature_des,
3821 &feature_rmw,
38223832 &feature_mul,
3823 &feature_eijmpcall,
3824 &feature_movw,
3833 &feature_elpm,
3834 &feature_spmx,
3835 &feature_lpm,
3836 &feature_lpmx,
3837 &feature_spm,
38253838 &feature_addsubiw,
3839 &feature_rmw,
3840 &feature_ijmpcall,
3841 &feature_eijmpcall,
3842 &feature_break,
3843 &feature_elpmx,
38263844 },
38273845};
38283846
......@@ -3830,21 +3848,21 @@ pub const cpu_atxmega32d4 = Cpu{
38303848 .name = "atxmega32d4",
38313849 .llvm_name = "atxmega32d4",
38323850 .dependencies = &[_]*const Feature {
3833 &feature_lpmx,
3851 &feature_des,
3852 &feature_sram,
3853 &feature_eijmpcall,
3854 &feature_jmpcall,
3855 &feature_mul,
38343856 &feature_elpm,
3857 &feature_spmx,
38353858 &feature_lpm,
3859 &feature_lpmx,
38363860 &feature_spm,
3861 &feature_addsubiw,
38373862 &feature_ijmpcall,
3838 &feature_movw,
3839 &feature_sram,
3840 &feature_spmx,
3841 &feature_break,
3842 &feature_jmpcall,
3843 &feature_des,
3844 &feature_mul,
3845 &feature_eijmpcall,
38463863 &feature_elpmx,
3847 &feature_addsubiw,
3864 &feature_break,
3865 &feature_movw,
38483866 },
38493867};
38503868
......@@ -3852,21 +3870,21 @@ pub const cpu_atxmega32e5 = Cpu{
38523870 .name = "atxmega32e5",
38533871 .llvm_name = "atxmega32e5",
38543872 .dependencies = &[_]*const Feature {
3855 &feature_lpmx,
3873 &feature_des,
3874 &feature_sram,
3875 &feature_eijmpcall,
3876 &feature_jmpcall,
3877 &feature_mul,
38563878 &feature_elpm,
3879 &feature_spmx,
38573880 &feature_lpm,
3881 &feature_lpmx,
38583882 &feature_spm,
3883 &feature_addsubiw,
38593884 &feature_ijmpcall,
3860 &feature_movw,
3861 &feature_sram,
3862 &feature_spmx,
3863 &feature_break,
3864 &feature_jmpcall,
3865 &feature_des,
3866 &feature_mul,
3867 &feature_eijmpcall,
38683885 &feature_elpmx,
3869 &feature_addsubiw,
3886 &feature_break,
3887 &feature_movw,
38703888 },
38713889};
38723890
......@@ -3874,21 +3892,21 @@ pub const cpu_atxmega32x1 = Cpu{
38743892 .name = "atxmega32x1",
38753893 .llvm_name = "atxmega32x1",
38763894 .dependencies = &[_]*const Feature {
3877 &feature_lpmx,
3895 &feature_des,
3896 &feature_sram,
3897 &feature_eijmpcall,
3898 &feature_jmpcall,
3899 &feature_mul,
38783900 &feature_elpm,
3901 &feature_spmx,
38793902 &feature_lpm,
3903 &feature_lpmx,
38803904 &feature_spm,
3905 &feature_addsubiw,
38813906 &feature_ijmpcall,
3882 &feature_movw,
3883 &feature_sram,
3884 &feature_spmx,
3885 &feature_break,
3886 &feature_jmpcall,
3887 &feature_des,
3888 &feature_mul,
3889 &feature_eijmpcall,
38903907 &feature_elpmx,
3891 &feature_addsubiw,
3908 &feature_break,
3909 &feature_movw,
38923910 },
38933911};
38943912
......@@ -3896,22 +3914,22 @@ pub const cpu_atxmega384c3 = Cpu{
38963914 .name = "atxmega384c3",
38973915 .llvm_name = "atxmega384c3",
38983916 .dependencies = &[_]*const Feature {
3899 &feature_lpmx,
3900 &feature_elpm,
3901 &feature_spm,
3902 &feature_lpm,
3903 &feature_ijmpcall,
3904 &feature_elpmx,
3917 &feature_des,
39053918 &feature_sram,
3906 &feature_spmx,
3907 &feature_break,
3919 &feature_movw,
39083920 &feature_jmpcall,
3909 &feature_des,
3910 &feature_rmw,
39113921 &feature_mul,
3912 &feature_eijmpcall,
3913 &feature_movw,
3922 &feature_elpm,
3923 &feature_spmx,
3924 &feature_lpm,
3925 &feature_lpmx,
3926 &feature_spm,
39143927 &feature_addsubiw,
3928 &feature_rmw,
3929 &feature_ijmpcall,
3930 &feature_eijmpcall,
3931 &feature_break,
3932 &feature_elpmx,
39153933 },
39163934};
39173935
......@@ -3919,21 +3937,21 @@ pub const cpu_atxmega384d3 = Cpu{
39193937 .name = "atxmega384d3",
39203938 .llvm_name = "atxmega384d3",
39213939 .dependencies = &[_]*const Feature {
3922 &feature_lpmx,
3940 &feature_des,
3941 &feature_sram,
3942 &feature_eijmpcall,
3943 &feature_jmpcall,
3944 &feature_mul,
39233945 &feature_elpm,
3946 &feature_spmx,
39243947 &feature_lpm,
3948 &feature_lpmx,
39253949 &feature_spm,
3950 &feature_addsubiw,
39263951 &feature_ijmpcall,
3927 &feature_movw,
3928 &feature_sram,
3929 &feature_spmx,
3930 &feature_break,
3931 &feature_jmpcall,
3932 &feature_des,
3933 &feature_mul,
3934 &feature_eijmpcall,
39353952 &feature_elpmx,
3936 &feature_addsubiw,
3953 &feature_break,
3954 &feature_movw,
39373955 },
39383956};
39393957
......@@ -3941,21 +3959,21 @@ pub const cpu_atxmega64a1 = Cpu{
39413959 .name = "atxmega64a1",
39423960 .llvm_name = "atxmega64a1",
39433961 .dependencies = &[_]*const Feature {
3944 &feature_lpmx,
3962 &feature_des,
3963 &feature_sram,
3964 &feature_eijmpcall,
3965 &feature_jmpcall,
3966 &feature_mul,
39453967 &feature_elpm,
3968 &feature_spmx,
39463969 &feature_lpm,
3970 &feature_lpmx,
39473971 &feature_spm,
3972 &feature_addsubiw,
39483973 &feature_ijmpcall,
3949 &feature_movw,
3950 &feature_sram,
3951 &feature_spmx,
3952 &feature_break,
3953 &feature_jmpcall,
3954 &feature_des,
3955 &feature_mul,
3956 &feature_eijmpcall,
39573974 &feature_elpmx,
3958 &feature_addsubiw,
3975 &feature_break,
3976 &feature_movw,
39593977 },
39603978};
39613979
......@@ -3963,22 +3981,22 @@ pub const cpu_atxmega64a1u = Cpu{
39633981 .name = "atxmega64a1u",
39643982 .llvm_name = "atxmega64a1u",
39653983 .dependencies = &[_]*const Feature {
3966 &feature_lpmx,
3967 &feature_elpm,
3968 &feature_spm,
3969 &feature_lpm,
3970 &feature_ijmpcall,
3971 &feature_elpmx,
3984 &feature_des,
39723985 &feature_sram,
3973 &feature_spmx,
3974 &feature_break,
3986 &feature_movw,
39753987 &feature_jmpcall,
3976 &feature_des,
3977 &feature_rmw,
39783988 &feature_mul,
3979 &feature_eijmpcall,
3980 &feature_movw,
3989 &feature_elpm,
3990 &feature_spmx,
3991 &feature_lpm,
3992 &feature_lpmx,
3993 &feature_spm,
39813994 &feature_addsubiw,
3995 &feature_rmw,
3996 &feature_ijmpcall,
3997 &feature_eijmpcall,
3998 &feature_break,
3999 &feature_elpmx,
39824000 },
39834001};
39844002
......@@ -3986,21 +4004,21 @@ pub const cpu_atxmega64a3 = Cpu{
39864004 .name = "atxmega64a3",
39874005 .llvm_name = "atxmega64a3",
39884006 .dependencies = &[_]*const Feature {
3989 &feature_lpmx,
4007 &feature_des,
4008 &feature_sram,
4009 &feature_eijmpcall,
4010 &feature_jmpcall,
4011 &feature_mul,
39904012 &feature_elpm,
4013 &feature_spmx,
39914014 &feature_lpm,
4015 &feature_lpmx,
39924016 &feature_spm,
4017 &feature_addsubiw,
39934018 &feature_ijmpcall,
3994 &feature_movw,
3995 &feature_sram,
3996 &feature_spmx,
3997 &feature_break,
3998 &feature_jmpcall,
3999 &feature_des,
4000 &feature_mul,
4001 &feature_eijmpcall,
40024019 &feature_elpmx,
4003 &feature_addsubiw,
4020 &feature_break,
4021 &feature_movw,
40044022 },
40054023};
40064024
......@@ -4008,22 +4026,22 @@ pub const cpu_atxmega64a3u = Cpu{
40084026 .name = "atxmega64a3u",
40094027 .llvm_name = "atxmega64a3u",
40104028 .dependencies = &[_]*const Feature {
4011 &feature_lpmx,
4012 &feature_elpm,
4013 &feature_spm,
4014 &feature_lpm,
4015 &feature_ijmpcall,
4016 &feature_elpmx,
4029 &feature_des,
40174030 &feature_sram,
4018 &feature_spmx,
4019 &feature_break,
4031 &feature_movw,
40204032 &feature_jmpcall,
4021 &feature_des,
4022 &feature_rmw,
40234033 &feature_mul,
4024 &feature_eijmpcall,
4025 &feature_movw,
4034 &feature_elpm,
4035 &feature_spmx,
4036 &feature_lpm,
4037 &feature_lpmx,
4038 &feature_spm,
40264039 &feature_addsubiw,
4040 &feature_rmw,
4041 &feature_ijmpcall,
4042 &feature_eijmpcall,
4043 &feature_break,
4044 &feature_elpmx,
40274045 },
40284046};
40294047
......@@ -4031,22 +4049,22 @@ pub const cpu_atxmega64a4u = Cpu{
40314049 .name = "atxmega64a4u",
40324050 .llvm_name = "atxmega64a4u",
40334051 .dependencies = &[_]*const Feature {
4034 &feature_lpmx,
4035 &feature_elpm,
4036 &feature_spm,
4037 &feature_lpm,
4038 &feature_ijmpcall,
4039 &feature_elpmx,
4052 &feature_des,
40404053 &feature_sram,
4041 &feature_spmx,
4042 &feature_break,
4054 &feature_movw,
40434055 &feature_jmpcall,
4044 &feature_des,
4045 &feature_rmw,
40464056 &feature_mul,
4047 &feature_eijmpcall,
4048 &feature_movw,
4057 &feature_elpm,
4058 &feature_spmx,
4059 &feature_lpm,
4060 &feature_lpmx,
4061 &feature_spm,
40494062 &feature_addsubiw,
4063 &feature_rmw,
4064 &feature_ijmpcall,
4065 &feature_eijmpcall,
4066 &feature_break,
4067 &feature_elpmx,
40504068 },
40514069};
40524070
......@@ -4054,22 +4072,22 @@ pub const cpu_atxmega64b1 = Cpu{
40544072 .name = "atxmega64b1",
40554073 .llvm_name = "atxmega64b1",
40564074 .dependencies = &[_]*const Feature {
4057 &feature_lpmx,
4058 &feature_elpm,
4059 &feature_spm,
4060 &feature_lpm,
4061 &feature_ijmpcall,
4062 &feature_elpmx,
4075 &feature_des,
40634076 &feature_sram,
4064 &feature_spmx,
4065 &feature_break,
4077 &feature_movw,
40664078 &feature_jmpcall,
4067 &feature_des,
4068 &feature_rmw,
40694079 &feature_mul,
4070 &feature_eijmpcall,
4071 &feature_movw,
4080 &feature_elpm,
4081 &feature_spmx,
4082 &feature_lpm,
4083 &feature_lpmx,
4084 &feature_spm,
40724085 &feature_addsubiw,
4086 &feature_rmw,
4087 &feature_ijmpcall,
4088 &feature_eijmpcall,
4089 &feature_break,
4090 &feature_elpmx,
40734091 },
40744092};
40754093
......@@ -4077,22 +4095,22 @@ pub const cpu_atxmega64b3 = Cpu{
40774095 .name = "atxmega64b3",
40784096 .llvm_name = "atxmega64b3",
40794097 .dependencies = &[_]*const Feature {
4080 &feature_lpmx,
4081 &feature_elpm,
4082 &feature_spm,
4083 &feature_lpm,
4084 &feature_ijmpcall,
4085 &feature_elpmx,
4098 &feature_des,
40864099 &feature_sram,
4087 &feature_spmx,
4088 &feature_break,
4100 &feature_movw,
40894101 &feature_jmpcall,
4090 &feature_des,
4091 &feature_rmw,
40924102 &feature_mul,
4093 &feature_eijmpcall,
4094 &feature_movw,
4103 &feature_elpm,
4104 &feature_spmx,
4105 &feature_lpm,
4106 &feature_lpmx,
4107 &feature_spm,
40954108 &feature_addsubiw,
4109 &feature_rmw,
4110 &feature_ijmpcall,
4111 &feature_eijmpcall,
4112 &feature_break,
4113 &feature_elpmx,
40964114 },
40974115};
40984116
......@@ -4100,22 +4118,22 @@ pub const cpu_atxmega64c3 = Cpu{
41004118 .name = "atxmega64c3",
41014119 .llvm_name = "atxmega64c3",
41024120 .dependencies = &[_]*const Feature {
4103 &feature_lpmx,
4104 &feature_elpm,
4105 &feature_spm,
4106 &feature_lpm,
4107 &feature_ijmpcall,
4108 &feature_elpmx,
4121 &feature_des,
41094122 &feature_sram,
4110 &feature_spmx,
4111 &feature_break,
4123 &feature_movw,
41124124 &feature_jmpcall,
4113 &feature_des,
4114 &feature_rmw,
41154125 &feature_mul,
4116 &feature_eijmpcall,
4117 &feature_movw,
4126 &feature_elpm,
4127 &feature_spmx,
4128 &feature_lpm,
4129 &feature_lpmx,
4130 &feature_spm,
41184131 &feature_addsubiw,
4132 &feature_rmw,
4133 &feature_ijmpcall,
4134 &feature_eijmpcall,
4135 &feature_break,
4136 &feature_elpmx,
41194137 },
41204138};
41214139
......@@ -4123,21 +4141,21 @@ pub const cpu_atxmega64d3 = Cpu{
41234141 .name = "atxmega64d3",
41244142 .llvm_name = "atxmega64d3",
41254143 .dependencies = &[_]*const Feature {
4126 &feature_lpmx,
4144 &feature_des,
4145 &feature_sram,
4146 &feature_eijmpcall,
4147 &feature_jmpcall,
4148 &feature_mul,
41274149 &feature_elpm,
4150 &feature_spmx,
41284151 &feature_lpm,
4152 &feature_lpmx,
41294153 &feature_spm,
4154 &feature_addsubiw,
41304155 &feature_ijmpcall,
4131 &feature_movw,
4132 &feature_sram,
4133 &feature_spmx,
4134 &feature_break,
4135 &feature_jmpcall,
4136 &feature_des,
4137 &feature_mul,
4138 &feature_eijmpcall,
41394156 &feature_elpmx,
4140 &feature_addsubiw,
4157 &feature_break,
4158 &feature_movw,
41414159 },
41424160};
41434161
......@@ -4145,21 +4163,21 @@ pub const cpu_atxmega64d4 = Cpu{
41454163 .name = "atxmega64d4",
41464164 .llvm_name = "atxmega64d4",
41474165 .dependencies = &[_]*const Feature {
4148 &feature_lpmx,
4149 &feature_elpm,
4150 &feature_lpm,
4151 &feature_spm,
4152 &feature_ijmpcall,
4153 &feature_movw,
4154 &feature_sram,
4155 &feature_spmx,
4156 &feature_break,
4157 &feature_jmpcall,
41584166 &feature_des,
4159 &feature_mul,
4167 &feature_sram,
41604168 &feature_eijmpcall,
4161 &feature_elpmx,
4169 &feature_jmpcall,
4170 &feature_mul,
4171 &feature_elpm,
4172 &feature_spmx,
4173 &feature_lpm,
4174 &feature_lpmx,
4175 &feature_spm,
41624176 &feature_addsubiw,
4177 &feature_ijmpcall,
4178 &feature_elpmx,
4179 &feature_break,
4180 &feature_movw,
41634181 },
41644182};
41654183
......@@ -4167,21 +4185,21 @@ pub const cpu_atxmega8e5 = Cpu{
41674185 .name = "atxmega8e5",
41684186 .llvm_name = "atxmega8e5",
41694187 .dependencies = &[_]*const Feature {
4170 &feature_lpmx,
4188 &feature_des,
4189 &feature_sram,
4190 &feature_eijmpcall,
4191 &feature_jmpcall,
4192 &feature_mul,
41714193 &feature_elpm,
4194 &feature_spmx,
41724195 &feature_lpm,
4196 &feature_lpmx,
41734197 &feature_spm,
4198 &feature_addsubiw,
41744199 &feature_ijmpcall,
4175 &feature_movw,
4176 &feature_sram,
4177 &feature_spmx,
4178 &feature_break,
4179 &feature_jmpcall,
4180 &feature_des,
4181 &feature_mul,
4182 &feature_eijmpcall,
41834200 &feature_elpmx,
4184 &feature_addsubiw,
4201 &feature_break,
4202 &feature_movw,
41854203 },
41864204};
41874205
......@@ -4197,10 +4215,10 @@ pub const cpu_avr2 = Cpu{
41974215 .name = "avr2",
41984216 .llvm_name = "avr2",
41994217 .dependencies = &[_]*const Feature {
4200 &feature_lpm,
4201 &feature_ijmpcall,
42024218 &feature_sram,
4219 &feature_lpm,
42034220 &feature_addsubiw,
4221 &feature_ijmpcall,
42044222 },
42054223};
42064224
......@@ -4208,14 +4226,14 @@ pub const cpu_avr25 = Cpu{
42084226 .name = "avr25",
42094227 .llvm_name = "avr25",
42104228 .dependencies = &[_]*const Feature {
4211 &feature_lpmx,
4229 &feature_sram,
42124230 &feature_lpm,
4231 &feature_lpmx,
42134232 &feature_spm,
4233 &feature_addsubiw,
42144234 &feature_ijmpcall,
4215 &feature_sram,
42164235 &feature_break,
42174236 &feature_movw,
4218 &feature_addsubiw,
42194237 },
42204238};
42214239
......@@ -4223,11 +4241,11 @@ pub const cpu_avr3 = Cpu{
42234241 .name = "avr3",
42244242 .llvm_name = "avr3",
42254243 .dependencies = &[_]*const Feature {
4226 &feature_lpm,
4227 &feature_ijmpcall,
42284244 &feature_sram,
42294245 &feature_jmpcall,
4246 &feature_lpm,
42304247 &feature_addsubiw,
4248 &feature_ijmpcall,
42314249 },
42324250};
42334251
......@@ -4235,12 +4253,12 @@ pub const cpu_avr31 = Cpu{
42354253 .name = "avr31",
42364254 .llvm_name = "avr31",
42374255 .dependencies = &[_]*const Feature {
4238 &feature_elpm,
4239 &feature_lpm,
4240 &feature_ijmpcall,
42414256 &feature_sram,
42424257 &feature_jmpcall,
4258 &feature_elpm,
4259 &feature_lpm,
42434260 &feature_addsubiw,
4261 &feature_ijmpcall,
42444262 },
42454263};
42464264
......@@ -4248,15 +4266,15 @@ pub const cpu_avr35 = Cpu{
42484266 .name = "avr35",
42494267 .llvm_name = "avr35",
42504268 .dependencies = &[_]*const Feature {
4251 &feature_lpmx,
4269 &feature_sram,
4270 &feature_jmpcall,
42524271 &feature_lpm,
4272 &feature_lpmx,
42534273 &feature_spm,
4274 &feature_addsubiw,
42544275 &feature_ijmpcall,
4255 &feature_sram,
42564276 &feature_break,
4257 &feature_jmpcall,
42584277 &feature_movw,
4259 &feature_addsubiw,
42604278 },
42614279};
42624280
......@@ -4264,15 +4282,15 @@ pub const cpu_avr4 = Cpu{
42644282 .name = "avr4",
42654283 .llvm_name = "avr4",
42664284 .dependencies = &[_]*const Feature {
4267 &feature_lpmx,
4285 &feature_sram,
4286 &feature_mul,
42684287 &feature_lpm,
4288 &feature_lpmx,
42694289 &feature_spm,
4290 &feature_addsubiw,
42704291 &feature_ijmpcall,
4271 &feature_sram,
42724292 &feature_break,
4273 &feature_mul,
42744293 &feature_movw,
4275 &feature_addsubiw,
42764294 },
42774295};
42784296
......@@ -4280,16 +4298,16 @@ pub const cpu_avr5 = Cpu{
42804298 .name = "avr5",
42814299 .llvm_name = "avr5",
42824300 .dependencies = &[_]*const Feature {
4283 &feature_lpmx,
4301 &feature_sram,
4302 &feature_jmpcall,
4303 &feature_mul,
42844304 &feature_lpm,
4305 &feature_lpmx,
42854306 &feature_spm,
4307 &feature_addsubiw,
42864308 &feature_ijmpcall,
4287 &feature_sram,
42884309 &feature_break,
4289 &feature_jmpcall,
4290 &feature_mul,
42914310 &feature_movw,
4292 &feature_addsubiw,
42934311 },
42944312};
42954313
......@@ -4297,18 +4315,18 @@ pub const cpu_avr51 = Cpu{
42974315 .name = "avr51",
42984316 .llvm_name = "avr51",
42994317 .dependencies = &[_]*const Feature {
4300 &feature_lpmx,
4318 &feature_sram,
4319 &feature_jmpcall,
4320 &feature_mul,
43014321 &feature_elpm,
4302 &feature_spm,
43034322 &feature_lpm,
4323 &feature_lpmx,
4324 &feature_spm,
4325 &feature_addsubiw,
43044326 &feature_ijmpcall,
43054327 &feature_elpmx,
4306 &feature_sram,
43074328 &feature_break,
4308 &feature_jmpcall,
4309 &feature_mul,
43104329 &feature_movw,
4311 &feature_addsubiw,
43124330 },
43134331};
43144332
......@@ -4316,18 +4334,18 @@ pub const cpu_avr6 = Cpu{
43164334 .name = "avr6",
43174335 .llvm_name = "avr6",
43184336 .dependencies = &[_]*const Feature {
4319 &feature_lpmx,
4337 &feature_sram,
4338 &feature_jmpcall,
4339 &feature_mul,
43204340 &feature_elpm,
43214341 &feature_lpm,
4342 &feature_lpmx,
43224343 &feature_spm,
4344 &feature_addsubiw,
43234345 &feature_ijmpcall,
4324 &feature_movw,
4325 &feature_sram,
4326 &feature_break,
4327 &feature_jmpcall,
4328 &feature_mul,
43294346 &feature_elpmx,
4330 &feature_addsubiw,
4347 &feature_break,
4348 &feature_movw,
43314349 },
43324350};
43334351
......@@ -4335,9 +4353,9 @@ pub const cpu_avrtiny = Cpu{
43354353 .name = "avrtiny",
43364354 .llvm_name = "avrtiny",
43374355 .dependencies = &[_]*const Feature {
4338 &feature_break,
4339 &feature_tinyencoding,
43404356 &feature_sram,
4357 &feature_tinyencoding,
4358 &feature_break,
43414359 },
43424360};
43434361
......@@ -4345,21 +4363,21 @@ pub const cpu_avrxmega1 = Cpu{
43454363 .name = "avrxmega1",
43464364 .llvm_name = "avrxmega1",
43474365 .dependencies = &[_]*const Feature {
4348 &feature_lpmx,
4366 &feature_des,
4367 &feature_sram,
4368 &feature_eijmpcall,
4369 &feature_jmpcall,
4370 &feature_mul,
43494371 &feature_elpm,
4372 &feature_spmx,
43504373 &feature_lpm,
4374 &feature_lpmx,
43514375 &feature_spm,
4376 &feature_addsubiw,
43524377 &feature_ijmpcall,
4353 &feature_movw,
4354 &feature_sram,
4355 &feature_spmx,
4356 &feature_break,
4357 &feature_jmpcall,
4358 &feature_des,
4359 &feature_mul,
4360 &feature_eijmpcall,
43614378 &feature_elpmx,
4362 &feature_addsubiw,
4379 &feature_break,
4380 &feature_movw,
43634381 },
43644382};
43654383
......@@ -4367,21 +4385,21 @@ pub const cpu_avrxmega2 = Cpu{
43674385 .name = "avrxmega2",
43684386 .llvm_name = "avrxmega2",
43694387 .dependencies = &[_]*const Feature {
4370 &feature_lpmx,
4388 &feature_des,
4389 &feature_sram,
4390 &feature_eijmpcall,
4391 &feature_jmpcall,
4392 &feature_mul,
43714393 &feature_elpm,
4394 &feature_spmx,
43724395 &feature_lpm,
4396 &feature_lpmx,
43734397 &feature_spm,
4398 &feature_addsubiw,
43744399 &feature_ijmpcall,
4375 &feature_movw,
4376 &feature_sram,
4377 &feature_spmx,
4378 &feature_break,
4379 &feature_jmpcall,
4380 &feature_des,
4381 &feature_mul,
4382 &feature_eijmpcall,
43834400 &feature_elpmx,
4384 &feature_addsubiw,
4401 &feature_break,
4402 &feature_movw,
43854403 },
43864404};
43874405
......@@ -4389,21 +4407,21 @@ pub const cpu_avrxmega3 = Cpu{
43894407 .name = "avrxmega3",
43904408 .llvm_name = "avrxmega3",
43914409 .dependencies = &[_]*const Feature {
4392 &feature_lpmx,
4410 &feature_des,
4411 &feature_sram,
4412 &feature_eijmpcall,
4413 &feature_jmpcall,
4414 &feature_mul,
43934415 &feature_elpm,
4416 &feature_spmx,
43944417 &feature_lpm,
4418 &feature_lpmx,
43954419 &feature_spm,
4420 &feature_addsubiw,
43964421 &feature_ijmpcall,
4397 &feature_movw,
4398 &feature_sram,
4399 &feature_spmx,
4400 &feature_break,
4401 &feature_jmpcall,
4402 &feature_des,
4403 &feature_mul,
4404 &feature_eijmpcall,
44054422 &feature_elpmx,
4406 &feature_addsubiw,
4423 &feature_break,
4424 &feature_movw,
44074425 },
44084426};
44094427
......@@ -4411,21 +4429,21 @@ pub const cpu_avrxmega4 = Cpu{
44114429 .name = "avrxmega4",
44124430 .llvm_name = "avrxmega4",
44134431 .dependencies = &[_]*const Feature {
4414 &feature_lpmx,
4432 &feature_des,
4433 &feature_sram,
4434 &feature_eijmpcall,
4435 &feature_jmpcall,
4436 &feature_mul,
44154437 &feature_elpm,
4438 &feature_spmx,
44164439 &feature_lpm,
4440 &feature_lpmx,
44174441 &feature_spm,
4442 &feature_addsubiw,
44184443 &feature_ijmpcall,
4419 &feature_movw,
4420 &feature_sram,
4421 &feature_spmx,
4422 &feature_break,
4423 &feature_jmpcall,
4424 &feature_des,
4425 &feature_mul,
4426 &feature_eijmpcall,
44274444 &feature_elpmx,
4428 &feature_addsubiw,
4445 &feature_break,
4446 &feature_movw,
44294447 },
44304448};
44314449
......@@ -4433,21 +4451,21 @@ pub const cpu_avrxmega5 = Cpu{
44334451 .name = "avrxmega5",
44344452 .llvm_name = "avrxmega5",
44354453 .dependencies = &[_]*const Feature {
4436 &feature_lpmx,
4454 &feature_des,
4455 &feature_sram,
4456 &feature_eijmpcall,
4457 &feature_jmpcall,
4458 &feature_mul,
44374459 &feature_elpm,
4460 &feature_spmx,
44384461 &feature_lpm,
4462 &feature_lpmx,
44394463 &feature_spm,
4464 &feature_addsubiw,
44404465 &feature_ijmpcall,
4441 &feature_movw,
4442 &feature_sram,
4443 &feature_spmx,
4444 &feature_break,
4445 &feature_jmpcall,
4446 &feature_des,
4447 &feature_mul,
4448 &feature_eijmpcall,
44494466 &feature_elpmx,
4450 &feature_addsubiw,
4467 &feature_break,
4468 &feature_movw,
44514469 },
44524470};
44534471
......@@ -4455,21 +4473,21 @@ pub const cpu_avrxmega6 = Cpu{
44554473 .name = "avrxmega6",
44564474 .llvm_name = "avrxmega6",
44574475 .dependencies = &[_]*const Feature {
4458 &feature_lpmx,
4476 &feature_des,
4477 &feature_sram,
4478 &feature_eijmpcall,
4479 &feature_jmpcall,
4480 &feature_mul,
44594481 &feature_elpm,
4482 &feature_spmx,
44604483 &feature_lpm,
4484 &feature_lpmx,
44614485 &feature_spm,
4486 &feature_addsubiw,
44624487 &feature_ijmpcall,
4463 &feature_movw,
4464 &feature_sram,
4465 &feature_spmx,
4466 &feature_break,
4467 &feature_jmpcall,
4468 &feature_des,
4469 &feature_mul,
4470 &feature_eijmpcall,
44714488 &feature_elpmx,
4472 &feature_addsubiw,
4489 &feature_break,
4490 &feature_movw,
44734491 },
44744492};
44754493
......@@ -4477,21 +4495,21 @@ pub const cpu_avrxmega7 = Cpu{
44774495 .name = "avrxmega7",
44784496 .llvm_name = "avrxmega7",
44794497 .dependencies = &[_]*const Feature {
4480 &feature_lpmx,
4498 &feature_des,
4499 &feature_sram,
4500 &feature_eijmpcall,
4501 &feature_jmpcall,
4502 &feature_mul,
44814503 &feature_elpm,
4504 &feature_spmx,
44824505 &feature_lpm,
4506 &feature_lpmx,
44834507 &feature_spm,
4508 &feature_addsubiw,
44844509 &feature_ijmpcall,
4485 &feature_movw,
4486 &feature_sram,
4487 &feature_spmx,
4488 &feature_break,
4489 &feature_jmpcall,
4490 &feature_des,
4491 &feature_mul,
4492 &feature_eijmpcall,
44934510 &feature_elpmx,
4494 &feature_addsubiw,
4511 &feature_break,
4512 &feature_movw,
44954513 },
44964514};
44974515
......@@ -4499,16 +4517,16 @@ pub const cpu_m3000 = Cpu{
44994517 .name = "m3000",
45004518 .llvm_name = "m3000",
45014519 .dependencies = &[_]*const Feature {
4502 &feature_lpmx,
4520 &feature_sram,
4521 &feature_jmpcall,
4522 &feature_mul,
45034523 &feature_lpm,
4524 &feature_lpmx,
45044525 &feature_spm,
4526 &feature_addsubiw,
45054527 &feature_ijmpcall,
4506 &feature_sram,
45074528 &feature_break,
4508 &feature_jmpcall,
4509 &feature_mul,
45104529 &feature_movw,
4511 &feature_addsubiw,
45124530 },
45134531};
45144532
lib/std/target/bpf.zig+3
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_alu32 = Feature{
55 .name = "alu32",
6 .llvm_name = "alu32",
67 .description = "Enable ALU32 instructions",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_alu32 = Feature{
1011
1112pub const feature_dummy = Feature{
1213 .name = "dummy",
14 .llvm_name = "dummy",
1315 .description = "unused feature",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_dummy = Feature{
1719
1820pub const feature_dwarfris = Feature{
1921 .name = "dwarfris",
22 .llvm_name = "dwarfris",
2023 .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",
2124 .dependencies = &[_]*const Feature {
2225 },
lib/std/target/hexagon.zig+10
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_duplex = Feature{
55 .name = "duplex",
6 .llvm_name = "duplex",
67 .description = "Enable generation of duplex instruction",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_duplex = Feature{
1011
1112pub const feature_longCalls = Feature{
1213 .name = "long-calls",
14 .llvm_name = "long-calls",
1315 .description = "Use constant-extended calls",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_longCalls = Feature{
1719
1820pub const feature_mem_noshuf = Feature{
1921 .name = "mem_noshuf",
22 .llvm_name = "mem_noshuf",
2023 .description = "Supports mem_noshuf feature",
2124 .dependencies = &[_]*const Feature {
2225 },
......@@ -24,6 +27,7 @@ pub const feature_mem_noshuf = Feature{
2427
2528pub const feature_memops = Feature{
2629 .name = "memops",
30 .llvm_name = "memops",
2731 .description = "Use memop instructions",
2832 .dependencies = &[_]*const Feature {
2933 },
......@@ -31,6 +35,7 @@ pub const feature_memops = Feature{
3135
3236pub const feature_nvj = Feature{
3337 .name = "nvj",
38 .llvm_name = "nvj",
3439 .description = "Support for new-value jumps",
3540 .dependencies = &[_]*const Feature {
3641 &feature_packets,
......@@ -39,6 +44,7 @@ pub const feature_nvj = Feature{
3944
4045pub const feature_nvs = Feature{
4146 .name = "nvs",
47 .llvm_name = "nvs",
4248 .description = "Support for new-value stores",
4349 .dependencies = &[_]*const Feature {
4450 &feature_packets,
......@@ -47,6 +53,7 @@ pub const feature_nvs = Feature{
4753
4854pub const feature_noreturnStackElim = Feature{
4955 .name = "noreturn-stack-elim",
56 .llvm_name = "noreturn-stack-elim",
5057 .description = "Eliminate stack allocation in a noreturn function when possible",
5158 .dependencies = &[_]*const Feature {
5259 },
......@@ -54,6 +61,7 @@ pub const feature_noreturnStackElim = Feature{
5461
5562pub const feature_packets = Feature{
5663 .name = "packets",
64 .llvm_name = "packets",
5765 .description = "Support for instruction packets",
5866 .dependencies = &[_]*const Feature {
5967 },
......@@ -61,6 +69,7 @@ pub const feature_packets = Feature{
6169
6270pub const feature_reservedR19 = Feature{
6371 .name = "reserved-r19",
72 .llvm_name = "reserved-r19",
6473 .description = "Reserve register R19",
6574 .dependencies = &[_]*const Feature {
6675 },
......@@ -68,6 +77,7 @@ pub const feature_reservedR19 = Feature{
6877
6978pub const feature_smallData = Feature{
7079 .name = "small-data",
80 .llvm_name = "small-data",
7181 .description = "Allow GP-relative addressing of global variables",
7282 .dependencies = &[_]*const Feature {
7383 },
lib/std/target/mips.zig+146-96
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_abs2008 = Feature{
55 .name = "abs2008",
6 .llvm_name = "abs2008",
67 .description = "Disable IEEE 754-2008 abs.fmt mode",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_abs2008 = Feature{
1011
1112pub const feature_crc = Feature{
1213 .name = "crc",
14 .llvm_name = "crc",
1315 .description = "Mips R6 CRC ASE",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,21 +19,23 @@ pub const feature_crc = Feature{
1719
1820pub const feature_cnmips = Feature{
1921 .name = "cnmips",
22 .llvm_name = "cnmips",
2023 .description = "Octeon cnMIPS Support",
2124 .dependencies = &[_]*const Feature {
22 &feature_mips4_32,
23 &feature_mips4_32r2,
2425 &feature_mips1,
2526 &feature_mips3_32r2,
27 &feature_mips4_32,
2628 &feature_mips5_32r2,
27 &feature_mips3_32,
28 &feature_gp64,
2929 &feature_fp64,
30 &feature_gp64,
31 &feature_mips4_32r2,
32 &feature_mips3_32,
3033 },
3134};
3235
3336pub const feature_dsp = Feature{
3437 .name = "dsp",
38 .llvm_name = "dsp",
3539 .description = "Mips DSP ASE",
3640 .dependencies = &[_]*const Feature {
3741 },
......@@ -39,6 +43,7 @@ pub const feature_dsp = Feature{
3943
4044pub const feature_dspr2 = Feature{
4145 .name = "dspr2",
46 .llvm_name = "dspr2",
4247 .description = "Mips DSP-R2 ASE",
4348 .dependencies = &[_]*const Feature {
4449 &feature_dsp,
......@@ -47,6 +52,7 @@ pub const feature_dspr2 = Feature{
4752
4853pub const feature_dspr3 = Feature{
4954 .name = "dspr3",
55 .llvm_name = "dspr3",
5056 .description = "Mips DSP-R3 ASE",
5157 .dependencies = &[_]*const Feature {
5258 &feature_dsp,
......@@ -55,6 +61,7 @@ pub const feature_dspr3 = Feature{
5561
5662pub const feature_eva = Feature{
5763 .name = "eva",
64 .llvm_name = "eva",
5865 .description = "Mips EVA ASE",
5966 .dependencies = &[_]*const Feature {
6067 },
......@@ -62,6 +69,7 @@ pub const feature_eva = Feature{
6269
6370pub const feature_fp64 = Feature{
6471 .name = "fp64",
72 .llvm_name = "fp64",
6573 .description = "Support 64-bit FP registers",
6674 .dependencies = &[_]*const Feature {
6775 },
......@@ -69,6 +77,7 @@ pub const feature_fp64 = Feature{
6977
7078pub const feature_fpxx = Feature{
7179 .name = "fpxx",
80 .llvm_name = "fpxx",
7281 .description = "Support for FPXX",
7382 .dependencies = &[_]*const Feature {
7483 },
......@@ -76,6 +85,7 @@ pub const feature_fpxx = Feature{
7685
7786pub const feature_ginv = Feature{
7887 .name = "ginv",
88 .llvm_name = "ginv",
7989 .description = "Mips Global Invalidate ASE",
8090 .dependencies = &[_]*const Feature {
8191 },
......@@ -83,6 +93,7 @@ pub const feature_ginv = Feature{
8393
8494pub const feature_gp64 = Feature{
8595 .name = "gp64",
96 .llvm_name = "gp64",
8697 .description = "General Purpose Registers are 64-bit wide",
8798 .dependencies = &[_]*const Feature {
8899 },
......@@ -90,6 +101,7 @@ pub const feature_gp64 = Feature{
90101
91102pub const feature_longCalls = Feature{
92103 .name = "long-calls",
104 .llvm_name = "long-calls",
93105 .description = "Disable use of the jal instruction",
94106 .dependencies = &[_]*const Feature {
95107 },
......@@ -97,6 +109,7 @@ pub const feature_longCalls = Feature{
97109
98110pub const feature_msa = Feature{
99111 .name = "msa",
112 .llvm_name = "msa",
100113 .description = "Mips MSA ASE",
101114 .dependencies = &[_]*const Feature {
102115 },
......@@ -104,6 +117,7 @@ pub const feature_msa = Feature{
104117
105118pub const feature_mt = Feature{
106119 .name = "mt",
120 .llvm_name = "mt",
107121 .description = "Mips MT ASE",
108122 .dependencies = &[_]*const Feature {
109123 },
......@@ -111,6 +125,7 @@ pub const feature_mt = Feature{
111125
112126pub const feature_nomadd4 = Feature{
113127 .name = "nomadd4",
128 .llvm_name = "nomadd4",
114129 .description = "Disable 4-operand madd.fmt and related instructions",
115130 .dependencies = &[_]*const Feature {
116131 },
......@@ -118,6 +133,7 @@ pub const feature_nomadd4 = Feature{
118133
119134pub const feature_micromips = Feature{
120135 .name = "micromips",
136 .llvm_name = "micromips",
121137 .description = "microMips mode",
122138 .dependencies = &[_]*const Feature {
123139 },
......@@ -125,6 +141,7 @@ pub const feature_micromips = Feature{
125141
126142pub const feature_mips1 = Feature{
127143 .name = "mips1",
144 .llvm_name = "mips1",
128145 .description = "Mips I ISA Support [highly experimental]",
129146 .dependencies = &[_]*const Feature {
130147 },
......@@ -132,6 +149,7 @@ pub const feature_mips1 = Feature{
132149
133150pub const feature_mips2 = Feature{
134151 .name = "mips2",
152 .llvm_name = "mips2",
135153 .description = "Mips II ISA Support [highly experimental]",
136154 .dependencies = &[_]*const Feature {
137155 &feature_mips1,
......@@ -140,18 +158,20 @@ pub const feature_mips2 = Feature{
140158
141159pub const feature_mips3 = Feature{
142160 .name = "mips3",
161 .llvm_name = "mips3",
143162 .description = "MIPS III ISA Support [highly experimental]",
144163 .dependencies = &[_]*const Feature {
145164 &feature_mips1,
146165 &feature_mips3_32r2,
147 &feature_mips3_32,
148 &feature_gp64,
149166 &feature_fp64,
167 &feature_gp64,
168 &feature_mips3_32,
150169 },
151170};
152171
153172pub const feature_mips3_32 = Feature{
154173 .name = "mips3_32",
174 .llvm_name = "mips3_32",
155175 .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]",
156176 .dependencies = &[_]*const Feature {
157177 },
......@@ -159,6 +179,7 @@ pub const feature_mips3_32 = Feature{
159179
160180pub const feature_mips3_32r2 = Feature{
161181 .name = "mips3_32r2",
182 .llvm_name = "mips3_32r2",
162183 .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]",
163184 .dependencies = &[_]*const Feature {
164185 },
......@@ -166,20 +187,22 @@ pub const feature_mips3_32r2 = Feature{
166187
167188pub const feature_mips4 = Feature{
168189 .name = "mips4",
190 .llvm_name = "mips4",
169191 .description = "MIPS IV ISA Support",
170192 .dependencies = &[_]*const Feature {
171 &feature_mips4_32,
172 &feature_mips4_32r2,
173193 &feature_mips1,
174194 &feature_mips3_32r2,
175 &feature_mips3_32,
176 &feature_gp64,
195 &feature_mips4_32,
177196 &feature_fp64,
197 &feature_gp64,
198 &feature_mips4_32r2,
199 &feature_mips3_32,
178200 },
179201};
180202
181203pub const feature_mips4_32 = Feature{
182204 .name = "mips4_32",
205 .llvm_name = "mips4_32",
183206 .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]",
184207 .dependencies = &[_]*const Feature {
185208 },
......@@ -187,6 +210,7 @@ pub const feature_mips4_32 = Feature{
187210
188211pub const feature_mips4_32r2 = Feature{
189212 .name = "mips4_32r2",
213 .llvm_name = "mips4_32r2",
190214 .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]",
191215 .dependencies = &[_]*const Feature {
192216 },
......@@ -194,21 +218,23 @@ pub const feature_mips4_32r2 = Feature{
194218
195219pub const feature_mips5 = Feature{
196220 .name = "mips5",
221 .llvm_name = "mips5",
197222 .description = "MIPS V ISA Support [highly experimental]",
198223 .dependencies = &[_]*const Feature {
199 &feature_mips3_32,
200 &feature_gp64,
201224 &feature_mips1,
202225 &feature_mips3_32r2,
203 &feature_mips5_32r2,
204226 &feature_mips4_32,
205 &feature_mips4_32r2,
227 &feature_mips5_32r2,
206228 &feature_fp64,
229 &feature_gp64,
230 &feature_mips4_32r2,
231 &feature_mips3_32,
207232 },
208233};
209234
210235pub const feature_mips5_32r2 = Feature{
211236 .name = "mips5_32r2",
237 .llvm_name = "mips5_32r2",
212238 .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]",
213239 .dependencies = &[_]*const Feature {
214240 },
......@@ -216,6 +242,7 @@ pub const feature_mips5_32r2 = Feature{
216242
217243pub const feature_mips16 = Feature{
218244 .name = "mips16",
245 .llvm_name = "mips16",
219246 .description = "Mips16 mode",
220247 .dependencies = &[_]*const Feature {
221248 },
......@@ -223,148 +250,159 @@ pub const feature_mips16 = Feature{
223250
224251pub const feature_mips32 = Feature{
225252 .name = "mips32",
253 .llvm_name = "mips32",
226254 .description = "Mips32 ISA Support",
227255 .dependencies = &[_]*const Feature {
228256 &feature_mips1,
229 &feature_mips3_32,
230257 &feature_mips4_32,
258 &feature_mips3_32,
231259 },
232260};
233261
234262pub const feature_mips32r2 = Feature{
235263 .name = "mips32r2",
264 .llvm_name = "mips32r2",
236265 .description = "Mips32r2 ISA Support",
237266 .dependencies = &[_]*const Feature {
238 &feature_mips4_32,
239267 &feature_mips1,
240268 &feature_mips3_32r2,
269 &feature_mips4_32,
241270 &feature_mips5_32r2,
242 &feature_mips3_32,
243271 &feature_mips4_32r2,
272 &feature_mips3_32,
244273 },
245274};
246275
247276pub const feature_mips32r3 = Feature{
248277 .name = "mips32r3",
278 .llvm_name = "mips32r3",
249279 .description = "Mips32r3 ISA Support",
250280 .dependencies = &[_]*const Feature {
251 &feature_mips3_32,
252281 &feature_mips1,
253282 &feature_mips3_32r2,
254 &feature_mips5_32r2,
255283 &feature_mips4_32,
284 &feature_mips5_32r2,
256285 &feature_mips4_32r2,
286 &feature_mips3_32,
257287 },
258288};
259289
260290pub const feature_mips32r5 = Feature{
261291 .name = "mips32r5",
292 .llvm_name = "mips32r5",
262293 .description = "Mips32r5 ISA Support",
263294 .dependencies = &[_]*const Feature {
264 &feature_mips4_32,
265295 &feature_mips1,
266296 &feature_mips3_32r2,
297 &feature_mips4_32,
267298 &feature_mips5_32r2,
268 &feature_mips3_32,
269299 &feature_mips4_32r2,
300 &feature_mips3_32,
270301 },
271302};
272303
273304pub const feature_mips32r6 = Feature{
274305 .name = "mips32r6",
306 .llvm_name = "mips32r6",
275307 .description = "Mips32r6 ISA Support [experimental]",
276308 .dependencies = &[_]*const Feature {
277309 &feature_abs2008,
278 &feature_nan2008,
279 &feature_mips3_32,
280310 &feature_mips1,
281311 &feature_mips3_32r2,
282 &feature_mips5_32r2,
283312 &feature_mips4_32,
284 &feature_mips4_32r2,
313 &feature_nan2008,
314 &feature_mips5_32r2,
285315 &feature_fp64,
316 &feature_mips4_32r2,
317 &feature_mips3_32,
286318 },
287319};
288320
289321pub const feature_mips64 = Feature{
290322 .name = "mips64",
323 .llvm_name = "mips64",
291324 .description = "Mips64 ISA Support",
292325 .dependencies = &[_]*const Feature {
293 &feature_mips4_32,
294 &feature_mips4_32r2,
295326 &feature_mips1,
296327 &feature_mips3_32r2,
328 &feature_mips4_32,
297329 &feature_mips5_32r2,
298 &feature_mips3_32,
299 &feature_gp64,
300330 &feature_fp64,
331 &feature_gp64,
332 &feature_mips4_32r2,
333 &feature_mips3_32,
301334 },
302335};
303336
304337pub const feature_mips64r2 = Feature{
305338 .name = "mips64r2",
339 .llvm_name = "mips64r2",
306340 .description = "Mips64r2 ISA Support",
307341 .dependencies = &[_]*const Feature {
308 &feature_mips3_32,
309 &feature_gp64,
310342 &feature_mips1,
311343 &feature_mips3_32r2,
312 &feature_mips5_32r2,
313344 &feature_mips4_32,
314 &feature_mips4_32r2,
345 &feature_mips5_32r2,
315346 &feature_fp64,
347 &feature_gp64,
348 &feature_mips4_32r2,
349 &feature_mips3_32,
316350 },
317351};
318352
319353pub const feature_mips64r3 = Feature{
320354 .name = "mips64r3",
355 .llvm_name = "mips64r3",
321356 .description = "Mips64r3 ISA Support",
322357 .dependencies = &[_]*const Feature {
323 &feature_mips4_32,
324 &feature_gp64,
325358 &feature_mips1,
326359 &feature_mips3_32r2,
360 &feature_mips4_32,
327361 &feature_mips5_32r2,
328 &feature_mips3_32,
329 &feature_mips4_32r2,
330362 &feature_fp64,
363 &feature_gp64,
364 &feature_mips4_32r2,
365 &feature_mips3_32,
331366 },
332367};
333368
334369pub const feature_mips64r5 = Feature{
335370 .name = "mips64r5",
371 .llvm_name = "mips64r5",
336372 .description = "Mips64r5 ISA Support",
337373 .dependencies = &[_]*const Feature {
338 &feature_mips3_32,
339 &feature_gp64,
340374 &feature_mips1,
341375 &feature_mips3_32r2,
342 &feature_mips5_32r2,
343376 &feature_mips4_32,
344 &feature_mips4_32r2,
377 &feature_mips5_32r2,
345378 &feature_fp64,
379 &feature_gp64,
380 &feature_mips4_32r2,
381 &feature_mips3_32,
346382 },
347383};
348384
349385pub const feature_mips64r6 = Feature{
350386 .name = "mips64r6",
387 .llvm_name = "mips64r6",
351388 .description = "Mips64r6 ISA Support [experimental]",
352389 .dependencies = &[_]*const Feature {
353390 &feature_abs2008,
354 &feature_nan2008,
355 &feature_mips4_32,
356 &feature_gp64,
357391 &feature_mips1,
358392 &feature_mips3_32r2,
393 &feature_mips4_32,
394 &feature_nan2008,
359395 &feature_mips5_32r2,
360 &feature_mips3_32,
361 &feature_mips4_32r2,
362396 &feature_fp64,
397 &feature_gp64,
398 &feature_mips4_32r2,
399 &feature_mips3_32,
363400 },
364401};
365402
366403pub const feature_nan2008 = Feature{
367404 .name = "nan2008",
405 .llvm_name = "nan2008",
368406 .description = "IEEE 754-2008 NaN encoding",
369407 .dependencies = &[_]*const Feature {
370408 },
......@@ -372,6 +410,7 @@ pub const feature_nan2008 = Feature{
372410
373411pub const feature_noabicalls = Feature{
374412 .name = "noabicalls",
413 .llvm_name = "noabicalls",
375414 .description = "Disable SVR4-style position-independent code",
376415 .dependencies = &[_]*const Feature {
377416 },
......@@ -379,6 +418,7 @@ pub const feature_noabicalls = Feature{
379418
380419pub const feature_nooddspreg = Feature{
381420 .name = "nooddspreg",
421 .llvm_name = "nooddspreg",
382422 .description = "Disable odd numbered single-precision registers",
383423 .dependencies = &[_]*const Feature {
384424 },
......@@ -386,6 +426,7 @@ pub const feature_nooddspreg = Feature{
386426
387427pub const feature_ptr64 = Feature{
388428 .name = "ptr64",
429 .llvm_name = "ptr64",
389430 .description = "Pointers are 64-bit wide",
390431 .dependencies = &[_]*const Feature {
391432 },
......@@ -393,6 +434,7 @@ pub const feature_ptr64 = Feature{
393434
394435pub const feature_singleFloat = Feature{
395436 .name = "single-float",
437 .llvm_name = "single-float",
396438 .description = "Only supports single precision float",
397439 .dependencies = &[_]*const Feature {
398440 },
......@@ -400,6 +442,7 @@ pub const feature_singleFloat = Feature{
400442
401443pub const feature_softFloat = Feature{
402444 .name = "soft-float",
445 .llvm_name = "soft-float",
403446 .description = "Does not support floating point instructions",
404447 .dependencies = &[_]*const Feature {
405448 },
......@@ -407,6 +450,7 @@ pub const feature_softFloat = Feature{
407450
408451pub const feature_sym32 = Feature{
409452 .name = "sym32",
453 .llvm_name = "sym32",
410454 .description = "Symbols are 32 bit on Mips64",
411455 .dependencies = &[_]*const Feature {
412456 },
......@@ -414,6 +458,7 @@ pub const feature_sym32 = Feature{
414458
415459pub const feature_useIndirectJumpHazard = Feature{
416460 .name = "use-indirect-jump-hazard",
461 .llvm_name = "use-indirect-jump-hazard",
417462 .description = "Use indirect jump guards to prevent certain speculation based attacks",
418463 .dependencies = &[_]*const Feature {
419464 },
......@@ -421,6 +466,7 @@ pub const feature_useIndirectJumpHazard = Feature{
421466
422467pub const feature_useTccInDiv = Feature{
423468 .name = "use-tcc-in-div",
469 .llvm_name = "use-tcc-in-div",
424470 .description = "Force the assembler to use trapping",
425471 .dependencies = &[_]*const Feature {
426472 },
......@@ -428,6 +474,7 @@ pub const feature_useTccInDiv = Feature{
428474
429475pub const feature_vfpu = Feature{
430476 .name = "vfpu",
477 .llvm_name = "vfpu",
431478 .description = "Enable vector FPU instructions",
432479 .dependencies = &[_]*const Feature {
433480 },
......@@ -435,6 +482,7 @@ pub const feature_vfpu = Feature{
435482
436483pub const feature_virt = Feature{
437484 .name = "virt",
485 .llvm_name = "virt",
438486 .description = "Mips Virtualization ASE",
439487 .dependencies = &[_]*const Feature {
440488 },
......@@ -442,6 +490,7 @@ pub const feature_virt = Feature{
442490
443491pub const feature_xgot = Feature{
444492 .name = "xgot",
493 .llvm_name = "xgot",
445494 .description = "Assume 32-bit GOT",
446495 .dependencies = &[_]*const Feature {
447496 },
......@@ -449,14 +498,15 @@ pub const feature_xgot = Feature{
449498
450499pub const feature_p5600 = Feature{
451500 .name = "p5600",
501 .llvm_name = "p5600",
452502 .description = "The P5600 Processor",
453503 .dependencies = &[_]*const Feature {
454 &feature_mips3_32,
455504 &feature_mips1,
456505 &feature_mips3_32r2,
457 &feature_mips5_32r2,
458506 &feature_mips4_32,
507 &feature_mips5_32r2,
459508 &feature_mips4_32r2,
509 &feature_mips3_32,
460510 },
461511};
462512
......@@ -536,9 +586,9 @@ pub const cpu_mips3 = Cpu{
536586 .dependencies = &[_]*const Feature {
537587 &feature_mips1,
538588 &feature_mips3_32r2,
539 &feature_mips3_32,
540 &feature_gp64,
541589 &feature_fp64,
590 &feature_gp64,
591 &feature_mips3_32,
542592 &feature_mips3,
543593 },
544594};
......@@ -548,8 +598,8 @@ pub const cpu_mips32 = Cpu{
548598 .llvm_name = "mips32",
549599 .dependencies = &[_]*const Feature {
550600 &feature_mips1,
551 &feature_mips3_32,
552601 &feature_mips4_32,
602 &feature_mips3_32,
553603 &feature_mips32,
554604 },
555605};
......@@ -558,12 +608,12 @@ pub const cpu_mips32r2 = Cpu{
558608 .name = "mips32r2",
559609 .llvm_name = "mips32r2",
560610 .dependencies = &[_]*const Feature {
561 &feature_mips4_32,
562611 &feature_mips1,
563612 &feature_mips3_32r2,
613 &feature_mips4_32,
564614 &feature_mips5_32r2,
565 &feature_mips3_32,
566615 &feature_mips4_32r2,
616 &feature_mips3_32,
567617 &feature_mips32r2,
568618 },
569619};
......@@ -572,12 +622,12 @@ pub const cpu_mips32r3 = Cpu{
572622 .name = "mips32r3",
573623 .llvm_name = "mips32r3",
574624 .dependencies = &[_]*const Feature {
575 &feature_mips3_32,
576625 &feature_mips1,
577626 &feature_mips3_32r2,
578 &feature_mips5_32r2,
579627 &feature_mips4_32,
628 &feature_mips5_32r2,
580629 &feature_mips4_32r2,
630 &feature_mips3_32,
581631 &feature_mips32r3,
582632 },
583633};
......@@ -586,12 +636,12 @@ pub const cpu_mips32r5 = Cpu{
586636 .name = "mips32r5",
587637 .llvm_name = "mips32r5",
588638 .dependencies = &[_]*const Feature {
589 &feature_mips4_32,
590639 &feature_mips1,
591640 &feature_mips3_32r2,
641 &feature_mips4_32,
592642 &feature_mips5_32r2,
593 &feature_mips3_32,
594643 &feature_mips4_32r2,
644 &feature_mips3_32,
595645 &feature_mips32r5,
596646 },
597647};
......@@ -601,14 +651,14 @@ pub const cpu_mips32r6 = Cpu{
601651 .llvm_name = "mips32r6",
602652 .dependencies = &[_]*const Feature {
603653 &feature_abs2008,
604 &feature_nan2008,
605 &feature_mips3_32,
606654 &feature_mips1,
607655 &feature_mips3_32r2,
608 &feature_mips5_32r2,
609656 &feature_mips4_32,
610 &feature_mips4_32r2,
657 &feature_nan2008,
658 &feature_mips5_32r2,
611659 &feature_fp64,
660 &feature_mips4_32r2,
661 &feature_mips3_32,
612662 &feature_mips32r6,
613663 },
614664};
......@@ -617,13 +667,13 @@ pub const cpu_mips4 = Cpu{
617667 .name = "mips4",
618668 .llvm_name = "mips4",
619669 .dependencies = &[_]*const Feature {
620 &feature_mips4_32,
621 &feature_mips4_32r2,
622670 &feature_mips1,
623671 &feature_mips3_32r2,
624 &feature_mips3_32,
625 &feature_gp64,
672 &feature_mips4_32,
626673 &feature_fp64,
674 &feature_gp64,
675 &feature_mips4_32r2,
676 &feature_mips3_32,
627677 &feature_mips4,
628678 },
629679};
......@@ -632,14 +682,14 @@ pub const cpu_mips5 = Cpu{
632682 .name = "mips5",
633683 .llvm_name = "mips5",
634684 .dependencies = &[_]*const Feature {
635 &feature_mips3_32,
636 &feature_gp64,
637685 &feature_mips1,
638686 &feature_mips3_32r2,
639 &feature_mips5_32r2,
640687 &feature_mips4_32,
641 &feature_mips4_32r2,
688 &feature_mips5_32r2,
642689 &feature_fp64,
690 &feature_gp64,
691 &feature_mips4_32r2,
692 &feature_mips3_32,
643693 &feature_mips5,
644694 },
645695};
......@@ -648,14 +698,14 @@ pub const cpu_mips64 = Cpu{
648698 .name = "mips64",
649699 .llvm_name = "mips64",
650700 .dependencies = &[_]*const Feature {
651 &feature_mips4_32,
652 &feature_mips4_32r2,
653701 &feature_mips1,
654702 &feature_mips3_32r2,
703 &feature_mips4_32,
655704 &feature_mips5_32r2,
656 &feature_mips3_32,
657 &feature_gp64,
658705 &feature_fp64,
706 &feature_gp64,
707 &feature_mips4_32r2,
708 &feature_mips3_32,
659709 &feature_mips64,
660710 },
661711};
......@@ -664,14 +714,14 @@ pub const cpu_mips64r2 = Cpu{
664714 .name = "mips64r2",
665715 .llvm_name = "mips64r2",
666716 .dependencies = &[_]*const Feature {
667 &feature_mips3_32,
668 &feature_gp64,
669717 &feature_mips1,
670718 &feature_mips3_32r2,
671 &feature_mips5_32r2,
672719 &feature_mips4_32,
673 &feature_mips4_32r2,
720 &feature_mips5_32r2,
674721 &feature_fp64,
722 &feature_gp64,
723 &feature_mips4_32r2,
724 &feature_mips3_32,
675725 &feature_mips64r2,
676726 },
677727};
......@@ -680,14 +730,14 @@ pub const cpu_mips64r3 = Cpu{
680730 .name = "mips64r3",
681731 .llvm_name = "mips64r3",
682732 .dependencies = &[_]*const Feature {
683 &feature_mips4_32,
684 &feature_gp64,
685733 &feature_mips1,
686734 &feature_mips3_32r2,
735 &feature_mips4_32,
687736 &feature_mips5_32r2,
688 &feature_mips3_32,
689 &feature_mips4_32r2,
690737 &feature_fp64,
738 &feature_gp64,
739 &feature_mips4_32r2,
740 &feature_mips3_32,
691741 &feature_mips64r3,
692742 },
693743};
......@@ -696,14 +746,14 @@ pub const cpu_mips64r5 = Cpu{
696746 .name = "mips64r5",
697747 .llvm_name = "mips64r5",
698748 .dependencies = &[_]*const Feature {
699 &feature_mips3_32,
700 &feature_gp64,
701749 &feature_mips1,
702750 &feature_mips3_32r2,
703 &feature_mips5_32r2,
704751 &feature_mips4_32,
705 &feature_mips4_32r2,
752 &feature_mips5_32r2,
706753 &feature_fp64,
754 &feature_gp64,
755 &feature_mips4_32r2,
756 &feature_mips3_32,
707757 &feature_mips64r5,
708758 },
709759};
......@@ -713,15 +763,15 @@ pub const cpu_mips64r6 = Cpu{
713763 .llvm_name = "mips64r6",
714764 .dependencies = &[_]*const Feature {
715765 &feature_abs2008,
716 &feature_nan2008,
717 &feature_mips4_32,
718 &feature_gp64,
719766 &feature_mips1,
720767 &feature_mips3_32r2,
768 &feature_mips4_32,
769 &feature_nan2008,
721770 &feature_mips5_32r2,
722 &feature_mips3_32,
723 &feature_mips4_32r2,
724771 &feature_fp64,
772 &feature_gp64,
773 &feature_mips4_32r2,
774 &feature_mips3_32,
725775 &feature_mips64r6,
726776 },
727777};
......@@ -730,14 +780,14 @@ pub const cpu_octeon = Cpu{
730780 .name = "octeon",
731781 .llvm_name = "octeon",
732782 .dependencies = &[_]*const Feature {
733 &feature_mips4_32,
734 &feature_mips4_32r2,
735783 &feature_mips1,
736784 &feature_mips3_32r2,
785 &feature_mips4_32,
737786 &feature_mips5_32r2,
738 &feature_mips3_32,
739 &feature_gp64,
740787 &feature_fp64,
788 &feature_gp64,
789 &feature_mips4_32r2,
790 &feature_mips3_32,
741791 &feature_cnmips,
742792 &feature_mips64r2,
743793 },
......@@ -747,12 +797,12 @@ pub const cpu_p5600 = Cpu{
747797 .name = "p5600",
748798 .llvm_name = "p5600",
749799 .dependencies = &[_]*const Feature {
750 &feature_mips3_32,
751800 &feature_mips1,
752801 &feature_mips3_32r2,
753 &feature_mips5_32r2,
754802 &feature_mips4_32,
803 &feature_mips5_32r2,
755804 &feature_mips4_32r2,
805 &feature_mips3_32,
756806 &feature_p5600,
757807 },
758808};
lib/std/target/msp430.zig+4
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_hwmult16 = Feature{
55 .name = "hwmult16",
6 .llvm_name = "hwmult16",
67 .description = "Enable 16-bit hardware multiplier",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_hwmult16 = Feature{
1011
1112pub const feature_hwmult32 = Feature{
1213 .name = "hwmult32",
14 .llvm_name = "hwmult32",
1315 .description = "Enable 32-bit hardware multiplier",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_hwmult32 = Feature{
1719
1820pub const feature_hwmultf5 = Feature{
1921 .name = "hwmultf5",
22 .llvm_name = "hwmultf5",
2023 .description = "Enable F5 series hardware multiplier",
2124 .dependencies = &[_]*const Feature {
2225 },
......@@ -24,6 +27,7 @@ pub const feature_hwmultf5 = Feature{
2427
2528pub const feature_ext = Feature{
2629 .name = "ext",
30 .llvm_name = "ext",
2731 .description = "Enable MSP430-X extensions",
2832 .dependencies = &[_]*const Feature {
2933 },
lib/std/target/nvptx.zig+25
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_ptx32 = Feature{
55 .name = "ptx32",
6 .llvm_name = "ptx32",
67 .description = "Use PTX version 3.2",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_ptx32 = Feature{
1011
1112pub const feature_ptx40 = Feature{
1213 .name = "ptx40",
14 .llvm_name = "ptx40",
1315 .description = "Use PTX version 4.0",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_ptx40 = Feature{
1719
1820pub const feature_ptx41 = Feature{
1921 .name = "ptx41",
22 .llvm_name = "ptx41",
2023 .description = "Use PTX version 4.1",
2124 .dependencies = &[_]*const Feature {
2225 },
......@@ -24,6 +27,7 @@ pub const feature_ptx41 = Feature{
2427
2528pub const feature_ptx42 = Feature{
2629 .name = "ptx42",
30 .llvm_name = "ptx42",
2731 .description = "Use PTX version 4.2",
2832 .dependencies = &[_]*const Feature {
2933 },
......@@ -31,6 +35,7 @@ pub const feature_ptx42 = Feature{
3135
3236pub const feature_ptx43 = Feature{
3337 .name = "ptx43",
38 .llvm_name = "ptx43",
3439 .description = "Use PTX version 4.3",
3540 .dependencies = &[_]*const Feature {
3641 },
......@@ -38,6 +43,7 @@ pub const feature_ptx43 = Feature{
3843
3944pub const feature_ptx50 = Feature{
4045 .name = "ptx50",
46 .llvm_name = "ptx50",
4147 .description = "Use PTX version 5.0",
4248 .dependencies = &[_]*const Feature {
4349 },
......@@ -45,6 +51,7 @@ pub const feature_ptx50 = Feature{
4551
4652pub const feature_ptx60 = Feature{
4753 .name = "ptx60",
54 .llvm_name = "ptx60",
4855 .description = "Use PTX version 6.0",
4956 .dependencies = &[_]*const Feature {
5057 },
......@@ -52,6 +59,7 @@ pub const feature_ptx60 = Feature{
5259
5360pub const feature_ptx61 = Feature{
5461 .name = "ptx61",
62 .llvm_name = "ptx61",
5563 .description = "Use PTX version 6.1",
5664 .dependencies = &[_]*const Feature {
5765 },
......@@ -59,6 +67,7 @@ pub const feature_ptx61 = Feature{
5967
6068pub const feature_ptx63 = Feature{
6169 .name = "ptx63",
70 .llvm_name = "ptx63",
6271 .description = "Use PTX version 6.3",
6372 .dependencies = &[_]*const Feature {
6473 },
......@@ -66,6 +75,7 @@ pub const feature_ptx63 = Feature{
6675
6776pub const feature_ptx64 = Feature{
6877 .name = "ptx64",
78 .llvm_name = "ptx64",
6979 .description = "Use PTX version 6.4",
7080 .dependencies = &[_]*const Feature {
7181 },
......@@ -73,6 +83,7 @@ pub const feature_ptx64 = Feature{
7383
7484pub const feature_sm_20 = Feature{
7585 .name = "sm_20",
86 .llvm_name = "sm_20",
7687 .description = "Target SM 2.0",
7788 .dependencies = &[_]*const Feature {
7889 },
......@@ -80,6 +91,7 @@ pub const feature_sm_20 = Feature{
8091
8192pub const feature_sm_21 = Feature{
8293 .name = "sm_21",
94 .llvm_name = "sm_21",
8395 .description = "Target SM 2.1",
8496 .dependencies = &[_]*const Feature {
8597 },
......@@ -87,6 +99,7 @@ pub const feature_sm_21 = Feature{
8799
88100pub const feature_sm_30 = Feature{
89101 .name = "sm_30",
102 .llvm_name = "sm_30",
90103 .description = "Target SM 3.0",
91104 .dependencies = &[_]*const Feature {
92105 },
......@@ -94,6 +107,7 @@ pub const feature_sm_30 = Feature{
94107
95108pub const feature_sm_32 = Feature{
96109 .name = "sm_32",
110 .llvm_name = "sm_32",
97111 .description = "Target SM 3.2",
98112 .dependencies = &[_]*const Feature {
99113 },
......@@ -101,6 +115,7 @@ pub const feature_sm_32 = Feature{
101115
102116pub const feature_sm_35 = Feature{
103117 .name = "sm_35",
118 .llvm_name = "sm_35",
104119 .description = "Target SM 3.5",
105120 .dependencies = &[_]*const Feature {
106121 },
......@@ -108,6 +123,7 @@ pub const feature_sm_35 = Feature{
108123
109124pub const feature_sm_37 = Feature{
110125 .name = "sm_37",
126 .llvm_name = "sm_37",
111127 .description = "Target SM 3.7",
112128 .dependencies = &[_]*const Feature {
113129 },
......@@ -115,6 +131,7 @@ pub const feature_sm_37 = Feature{
115131
116132pub const feature_sm_50 = Feature{
117133 .name = "sm_50",
134 .llvm_name = "sm_50",
118135 .description = "Target SM 5.0",
119136 .dependencies = &[_]*const Feature {
120137 },
......@@ -122,6 +139,7 @@ pub const feature_sm_50 = Feature{
122139
123140pub const feature_sm_52 = Feature{
124141 .name = "sm_52",
142 .llvm_name = "sm_52",
125143 .description = "Target SM 5.2",
126144 .dependencies = &[_]*const Feature {
127145 },
......@@ -129,6 +147,7 @@ pub const feature_sm_52 = Feature{
129147
130148pub const feature_sm_53 = Feature{
131149 .name = "sm_53",
150 .llvm_name = "sm_53",
132151 .description = "Target SM 5.3",
133152 .dependencies = &[_]*const Feature {
134153 },
......@@ -136,6 +155,7 @@ pub const feature_sm_53 = Feature{
136155
137156pub const feature_sm_60 = Feature{
138157 .name = "sm_60",
158 .llvm_name = "sm_60",
139159 .description = "Target SM 6.0",
140160 .dependencies = &[_]*const Feature {
141161 },
......@@ -143,6 +163,7 @@ pub const feature_sm_60 = Feature{
143163
144164pub const feature_sm_61 = Feature{
145165 .name = "sm_61",
166 .llvm_name = "sm_61",
146167 .description = "Target SM 6.1",
147168 .dependencies = &[_]*const Feature {
148169 },
......@@ -150,6 +171,7 @@ pub const feature_sm_61 = Feature{
150171
151172pub const feature_sm_62 = Feature{
152173 .name = "sm_62",
174 .llvm_name = "sm_62",
153175 .description = "Target SM 6.2",
154176 .dependencies = &[_]*const Feature {
155177 },
......@@ -157,6 +179,7 @@ pub const feature_sm_62 = Feature{
157179
158180pub const feature_sm_70 = Feature{
159181 .name = "sm_70",
182 .llvm_name = "sm_70",
160183 .description = "Target SM 7.0",
161184 .dependencies = &[_]*const Feature {
162185 },
......@@ -164,6 +187,7 @@ pub const feature_sm_70 = Feature{
164187
165188pub const feature_sm_72 = Feature{
166189 .name = "sm_72",
190 .llvm_name = "sm_72",
167191 .description = "Target SM 7.2",
168192 .dependencies = &[_]*const Feature {
169193 },
......@@ -171,6 +195,7 @@ pub const feature_sm_72 = Feature{
171195
172196pub const feature_sm_75 = Feature{
173197 .name = "sm_75",
198 .llvm_name = "sm_75",
174199 .description = "Target SM 7.5",
175200 .dependencies = &[_]*const Feature {
176201 },
lib/std/target/powerpc.zig+53-2
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_bit64 = Feature{
55 .name = "64bit",
6 .llvm_name = "64bit",
67 .description = "Enable 64-bit instructions",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_bit64 = Feature{
1011
1112pub const feature_bitregs64 = Feature{
1213 .name = "64bitregs",
14 .llvm_name = "64bitregs",
1315 .description = "Enable 64-bit registers usage for ppc32 [beta]",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_bitregs64 = Feature{
1719
1820pub const feature_altivec = Feature{
1921 .name = "altivec",
22 .llvm_name = "altivec",
2023 .description = "Enable Altivec instructions",
2124 .dependencies = &[_]*const Feature {
2225 &feature_hardFloat,
......@@ -25,6 +28,7 @@ pub const feature_altivec = Feature{
2528
2629pub const feature_bpermd = Feature{
2730 .name = "bpermd",
31 .llvm_name = "bpermd",
2832 .description = "Enable the bpermd instruction",
2933 .dependencies = &[_]*const Feature {
3034 },
......@@ -32,6 +36,7 @@ pub const feature_bpermd = Feature{
3236
3337pub const feature_booke = Feature{
3438 .name = "booke",
39 .llvm_name = "booke",
3540 .description = "Enable Book E instructions",
3641 .dependencies = &[_]*const Feature {
3742 &feature_icbt,
......@@ -40,6 +45,7 @@ pub const feature_booke = Feature{
4045
4146pub const feature_cmpb = Feature{
4247 .name = "cmpb",
48 .llvm_name = "cmpb",
4349 .description = "Enable the cmpb instruction",
4450 .dependencies = &[_]*const Feature {
4551 },
......@@ -47,6 +53,7 @@ pub const feature_cmpb = Feature{
4753
4854pub const feature_crbits = Feature{
4955 .name = "crbits",
56 .llvm_name = "crbits",
5057 .description = "Use condition-register bits individually",
5158 .dependencies = &[_]*const Feature {
5259 },
......@@ -54,6 +61,7 @@ pub const feature_crbits = Feature{
5461
5562pub const feature_directMove = Feature{
5663 .name = "direct-move",
64 .llvm_name = "direct-move",
5765 .description = "Enable Power8 direct move instructions",
5866 .dependencies = &[_]*const Feature {
5967 &feature_hardFloat,
......@@ -62,6 +70,7 @@ pub const feature_directMove = Feature{
6270
6371pub const feature_e500 = Feature{
6472 .name = "e500",
73 .llvm_name = "e500",
6574 .description = "Enable E500/E500mc instructions",
6675 .dependencies = &[_]*const Feature {
6776 },
......@@ -69,6 +78,7 @@ pub const feature_e500 = Feature{
6978
7079pub const feature_extdiv = Feature{
7180 .name = "extdiv",
81 .llvm_name = "extdiv",
7282 .description = "Enable extended divide instructions",
7383 .dependencies = &[_]*const Feature {
7484 },
......@@ -76,6 +86,7 @@ pub const feature_extdiv = Feature{
7686
7787pub const feature_fcpsgn = Feature{
7888 .name = "fcpsgn",
89 .llvm_name = "fcpsgn",
7990 .description = "Enable the fcpsgn instruction",
8091 .dependencies = &[_]*const Feature {
8192 &feature_hardFloat,
......@@ -84,6 +95,7 @@ pub const feature_fcpsgn = Feature{
8495
8596pub const feature_fpcvt = Feature{
8697 .name = "fpcvt",
98 .llvm_name = "fpcvt",
8799 .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",
88100 .dependencies = &[_]*const Feature {
89101 &feature_hardFloat,
......@@ -92,6 +104,7 @@ pub const feature_fpcvt = Feature{
92104
93105pub const feature_fprnd = Feature{
94106 .name = "fprnd",
107 .llvm_name = "fprnd",
95108 .description = "Enable the fri[mnpz] instructions",
96109 .dependencies = &[_]*const Feature {
97110 &feature_hardFloat,
......@@ -100,6 +113,7 @@ pub const feature_fprnd = Feature{
100113
101114pub const feature_fpu = Feature{
102115 .name = "fpu",
116 .llvm_name = "fpu",
103117 .description = "Enable classic FPU instructions",
104118 .dependencies = &[_]*const Feature {
105119 &feature_hardFloat,
......@@ -108,6 +122,7 @@ pub const feature_fpu = Feature{
108122
109123pub const feature_fre = Feature{
110124 .name = "fre",
125 .llvm_name = "fre",
111126 .description = "Enable the fre instruction",
112127 .dependencies = &[_]*const Feature {
113128 &feature_hardFloat,
......@@ -116,6 +131,7 @@ pub const feature_fre = Feature{
116131
117132pub const feature_fres = Feature{
118133 .name = "fres",
134 .llvm_name = "fres",
119135 .description = "Enable the fres instruction",
120136 .dependencies = &[_]*const Feature {
121137 &feature_hardFloat,
......@@ -124,6 +140,7 @@ pub const feature_fres = Feature{
124140
125141pub const feature_frsqrte = Feature{
126142 .name = "frsqrte",
143 .llvm_name = "frsqrte",
127144 .description = "Enable the frsqrte instruction",
128145 .dependencies = &[_]*const Feature {
129146 &feature_hardFloat,
......@@ -132,6 +149,7 @@ pub const feature_frsqrte = Feature{
132149
133150pub const feature_frsqrtes = Feature{
134151 .name = "frsqrtes",
152 .llvm_name = "frsqrtes",
135153 .description = "Enable the frsqrtes instruction",
136154 .dependencies = &[_]*const Feature {
137155 &feature_hardFloat,
......@@ -140,6 +158,7 @@ pub const feature_frsqrtes = Feature{
140158
141159pub const feature_fsqrt = Feature{
142160 .name = "fsqrt",
161 .llvm_name = "fsqrt",
143162 .description = "Enable the fsqrt instruction",
144163 .dependencies = &[_]*const Feature {
145164 &feature_hardFloat,
......@@ -148,6 +167,7 @@ pub const feature_fsqrt = Feature{
148167
149168pub const feature_float128 = Feature{
150169 .name = "float128",
170 .llvm_name = "float128",
151171 .description = "Enable the __float128 data type for IEEE-754R Binary128.",
152172 .dependencies = &[_]*const Feature {
153173 &feature_hardFloat,
......@@ -156,6 +176,7 @@ pub const feature_float128 = Feature{
156176
157177pub const feature_htm = Feature{
158178 .name = "htm",
179 .llvm_name = "htm",
159180 .description = "Enable Hardware Transactional Memory instructions",
160181 .dependencies = &[_]*const Feature {
161182 },
......@@ -163,6 +184,7 @@ pub const feature_htm = Feature{
163184
164185pub const feature_hardFloat = Feature{
165186 .name = "hard-float",
187 .llvm_name = "hard-float",
166188 .description = "Enable floating-point instructions",
167189 .dependencies = &[_]*const Feature {
168190 },
......@@ -170,6 +192,7 @@ pub const feature_hardFloat = Feature{
170192
171193pub const feature_icbt = Feature{
172194 .name = "icbt",
195 .llvm_name = "icbt",
173196 .description = "Enable icbt instruction",
174197 .dependencies = &[_]*const Feature {
175198 },
......@@ -177,6 +200,7 @@ pub const feature_icbt = Feature{
177200
178201pub const feature_isaV30Instructions = Feature{
179202 .name = "isa-v30-instructions",
203 .llvm_name = "isa-v30-instructions",
180204 .description = "Enable instructions added in ISA 3.0.",
181205 .dependencies = &[_]*const Feature {
182206 },
......@@ -184,6 +208,7 @@ pub const feature_isaV30Instructions = Feature{
184208
185209pub const feature_isel = Feature{
186210 .name = "isel",
211 .llvm_name = "isel",
187212 .description = "Enable the isel instruction",
188213 .dependencies = &[_]*const Feature {
189214 },
......@@ -191,6 +216,7 @@ pub const feature_isel = Feature{
191216
192217pub const feature_invariantFunctionDescriptors = Feature{
193218 .name = "invariant-function-descriptors",
219 .llvm_name = "invariant-function-descriptors",
194220 .description = "Assume function descriptors are invariant",
195221 .dependencies = &[_]*const Feature {
196222 },
......@@ -198,6 +224,7 @@ pub const feature_invariantFunctionDescriptors = Feature{
198224
199225pub const feature_ldbrx = Feature{
200226 .name = "ldbrx",
227 .llvm_name = "ldbrx",
201228 .description = "Enable the ldbrx instruction",
202229 .dependencies = &[_]*const Feature {
203230 },
......@@ -205,6 +232,7 @@ pub const feature_ldbrx = Feature{
205232
206233pub const feature_lfiwax = Feature{
207234 .name = "lfiwax",
235 .llvm_name = "lfiwax",
208236 .description = "Enable the lfiwax instruction",
209237 .dependencies = &[_]*const Feature {
210238 &feature_hardFloat,
......@@ -213,6 +241,7 @@ pub const feature_lfiwax = Feature{
213241
214242pub const feature_longcall = Feature{
215243 .name = "longcall",
244 .llvm_name = "longcall",
216245 .description = "Always use indirect calls",
217246 .dependencies = &[_]*const Feature {
218247 },
......@@ -220,6 +249,7 @@ pub const feature_longcall = Feature{
220249
221250pub const feature_mfocrf = Feature{
222251 .name = "mfocrf",
252 .llvm_name = "mfocrf",
223253 .description = "Enable the MFOCRF instruction",
224254 .dependencies = &[_]*const Feature {
225255 },
......@@ -227,6 +257,7 @@ pub const feature_mfocrf = Feature{
227257
228258pub const feature_msync = Feature{
229259 .name = "msync",
260 .llvm_name = "msync",
230261 .description = "Has only the msync instruction instead of sync",
231262 .dependencies = &[_]*const Feature {
232263 &feature_icbt,
......@@ -235,6 +266,7 @@ pub const feature_msync = Feature{
235266
236267pub const feature_power8Altivec = Feature{
237268 .name = "power8-altivec",
269 .llvm_name = "power8-altivec",
238270 .description = "Enable POWER8 Altivec instructions",
239271 .dependencies = &[_]*const Feature {
240272 &feature_hardFloat,
......@@ -243,6 +275,7 @@ pub const feature_power8Altivec = Feature{
243275
244276pub const feature_crypto = Feature{
245277 .name = "crypto",
278 .llvm_name = "crypto",
246279 .description = "Enable POWER8 Crypto instructions",
247280 .dependencies = &[_]*const Feature {
248281 &feature_hardFloat,
......@@ -251,6 +284,7 @@ pub const feature_crypto = Feature{
251284
252285pub const feature_power8Vector = Feature{
253286 .name = "power8-vector",
287 .llvm_name = "power8-vector",
254288 .description = "Enable POWER8 vector instructions",
255289 .dependencies = &[_]*const Feature {
256290 &feature_hardFloat,
......@@ -259,24 +293,27 @@ pub const feature_power8Vector = Feature{
259293
260294pub const feature_power9Altivec = Feature{
261295 .name = "power9-altivec",
296 .llvm_name = "power9-altivec",
262297 .description = "Enable POWER9 Altivec instructions",
263298 .dependencies = &[_]*const Feature {
264 &feature_isaV30Instructions,
265299 &feature_hardFloat,
300 &feature_isaV30Instructions,
266301 },
267302};
268303
269304pub const feature_power9Vector = Feature{
270305 .name = "power9-vector",
306 .llvm_name = "power9-vector",
271307 .description = "Enable POWER9 vector instructions",
272308 .dependencies = &[_]*const Feature {
273 &feature_isaV30Instructions,
274309 &feature_hardFloat,
310 &feature_isaV30Instructions,
275311 },
276312};
277313
278314pub const feature_popcntd = Feature{
279315 .name = "popcntd",
316 .llvm_name = "popcntd",
280317 .description = "Enable the popcnt[dw] instructions",
281318 .dependencies = &[_]*const Feature {
282319 },
......@@ -284,6 +321,7 @@ pub const feature_popcntd = Feature{
284321
285322pub const feature_ppc4xx = Feature{
286323 .name = "ppc4xx",
324 .llvm_name = "ppc4xx",
287325 .description = "Enable PPC 4xx instructions",
288326 .dependencies = &[_]*const Feature {
289327 },
......@@ -291,6 +329,7 @@ pub const feature_ppc4xx = Feature{
291329
292330pub const feature_ppc6xx = Feature{
293331 .name = "ppc6xx",
332 .llvm_name = "ppc6xx",
294333 .description = "Enable PPC 6xx instructions",
295334 .dependencies = &[_]*const Feature {
296335 },
......@@ -298,6 +337,7 @@ pub const feature_ppc6xx = Feature{
298337
299338pub const feature_ppcPostraSched = Feature{
300339 .name = "ppc-postra-sched",
340 .llvm_name = "ppc-postra-sched",
301341 .description = "Use PowerPC post-RA scheduling strategy",
302342 .dependencies = &[_]*const Feature {
303343 },
......@@ -305,6 +345,7 @@ pub const feature_ppcPostraSched = Feature{
305345
306346pub const feature_ppcPreraSched = Feature{
307347 .name = "ppc-prera-sched",
348 .llvm_name = "ppc-prera-sched",
308349 .description = "Use PowerPC pre-RA scheduling strategy",
309350 .dependencies = &[_]*const Feature {
310351 },
......@@ -312,6 +353,7 @@ pub const feature_ppcPreraSched = Feature{
312353
313354pub const feature_partwordAtomics = Feature{
314355 .name = "partword-atomics",
356 .llvm_name = "partword-atomics",
315357 .description = "Enable l[bh]arx and st[bh]cx.",
316358 .dependencies = &[_]*const Feature {
317359 },
......@@ -319,6 +361,7 @@ pub const feature_partwordAtomics = Feature{
319361
320362pub const feature_qpx = Feature{
321363 .name = "qpx",
364 .llvm_name = "qpx",
322365 .description = "Enable QPX instructions",
323366 .dependencies = &[_]*const Feature {
324367 &feature_hardFloat,
......@@ -327,6 +370,7 @@ pub const feature_qpx = Feature{
327370
328371pub const feature_recipprec = Feature{
329372 .name = "recipprec",
373 .llvm_name = "recipprec",
330374 .description = "Assume higher precision reciprocal estimates",
331375 .dependencies = &[_]*const Feature {
332376 },
......@@ -334,6 +378,7 @@ pub const feature_recipprec = Feature{
334378
335379pub const feature_spe = Feature{
336380 .name = "spe",
381 .llvm_name = "spe",
337382 .description = "Enable SPE instructions",
338383 .dependencies = &[_]*const Feature {
339384 &feature_hardFloat,
......@@ -342,6 +387,7 @@ pub const feature_spe = Feature{
342387
343388pub const feature_stfiwx = Feature{
344389 .name = "stfiwx",
390 .llvm_name = "stfiwx",
345391 .description = "Enable the stfiwx instruction",
346392 .dependencies = &[_]*const Feature {
347393 &feature_hardFloat,
......@@ -350,6 +396,7 @@ pub const feature_stfiwx = Feature{
350396
351397pub const feature_securePlt = Feature{
352398 .name = "secure-plt",
399 .llvm_name = "secure-plt",
353400 .description = "Enable secure plt mode",
354401 .dependencies = &[_]*const Feature {
355402 },
......@@ -357,6 +404,7 @@ pub const feature_securePlt = Feature{
357404
358405pub const feature_slowPopcntd = Feature{
359406 .name = "slow-popcntd",
407 .llvm_name = "slow-popcntd",
360408 .description = "Has slow popcnt[dw] instructions",
361409 .dependencies = &[_]*const Feature {
362410 },
......@@ -364,6 +412,7 @@ pub const feature_slowPopcntd = Feature{
364412
365413pub const feature_twoConstNr = Feature{
366414 .name = "two-const-nr",
415 .llvm_name = "two-const-nr",
367416 .description = "Requires two constant Newton-Raphson computation",
368417 .dependencies = &[_]*const Feature {
369418 },
......@@ -371,6 +420,7 @@ pub const feature_twoConstNr = Feature{
371420
372421pub const feature_vsx = Feature{
373422 .name = "vsx",
423 .llvm_name = "vsx",
374424 .description = "Enable VSX instructions",
375425 .dependencies = &[_]*const Feature {
376426 &feature_hardFloat,
......@@ -379,6 +429,7 @@ pub const feature_vsx = Feature{
379429
380430pub const feature_vectorsUseTwoUnits = Feature{
381431 .name = "vectors-use-two-units",
432 .llvm_name = "vectors-use-two-units",
382433 .description = "Vectors use two units",
383434 .dependencies = &[_]*const Feature {
384435 },
lib/std/target/riscv.zig+9
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_bit64 = Feature{
55 .name = "64bit",
6 .llvm_name = "64bit",
67 .description = "Implements RV64",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_bit64 = Feature{
1011
1112pub const feature_e = Feature{
1213 .name = "e",
14 .llvm_name = "e",
1315 .description = "Implements RV32E (provides 16 rather than 32 GPRs)",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_e = Feature{
1719
1820pub const feature_rvcHints = Feature{
1921 .name = "rvc-hints",
22 .llvm_name = "rvc-hints",
2023 .description = "Enable RVC Hint Instructions.",
2124 .dependencies = &[_]*const Feature {
2225 },
......@@ -24,6 +27,7 @@ pub const feature_rvcHints = Feature{
2427
2528pub const feature_relax = Feature{
2629 .name = "relax",
30 .llvm_name = "relax",
2731 .description = "Enable Linker relaxation.",
2832 .dependencies = &[_]*const Feature {
2933 },
......@@ -31,6 +35,7 @@ pub const feature_relax = Feature{
3135
3236pub const feature_a = Feature{
3337 .name = "a",
38 .llvm_name = "a",
3439 .description = "'A' (Atomic Instructions)",
3540 .dependencies = &[_]*const Feature {
3641 },
......@@ -38,6 +43,7 @@ pub const feature_a = Feature{
3843
3944pub const feature_c = Feature{
4045 .name = "c",
46 .llvm_name = "c",
4147 .description = "'C' (Compressed Instructions)",
4248 .dependencies = &[_]*const Feature {
4349 },
......@@ -45,6 +51,7 @@ pub const feature_c = Feature{
4551
4652pub const feature_d = Feature{
4753 .name = "d",
54 .llvm_name = "d",
4855 .description = "'D' (Double-Precision Floating-Point)",
4956 .dependencies = &[_]*const Feature {
5057 &feature_f,
......@@ -53,6 +60,7 @@ pub const feature_d = Feature{
5360
5461pub const feature_f = Feature{
5562 .name = "f",
63 .llvm_name = "f",
5664 .description = "'F' (Single-Precision Floating-Point)",
5765 .dependencies = &[_]*const Feature {
5866 },
......@@ -60,6 +68,7 @@ pub const feature_f = Feature{
6068
6169pub const feature_m = Feature{
6270 .name = "m",
71 .llvm_name = "m",
6372 .description = "'M' (Integer Multiplication and Division)",
6473 .dependencies = &[_]*const Feature {
6574 },
lib/std/target/sparc.zig+12
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_hardQuadFloat = Feature{
55 .name = "hard-quad-float",
6 .llvm_name = "hard-quad-float",
67 .description = "Enable quad-word floating point instructions",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_hardQuadFloat = Feature{
1011
1112pub const feature_leon = Feature{
1213 .name = "leon",
14 .llvm_name = "leon",
1315 .description = "Enable LEON extensions",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_leon = Feature{
1719
1820pub const feature_noFmuls = Feature{
1921 .name = "no-fmuls",
22 .llvm_name = "no-fmuls",
2023 .description = "Disable the fmuls instruction.",
2124 .dependencies = &[_]*const Feature {
2225 },
......@@ -24,6 +27,7 @@ pub const feature_noFmuls = Feature{
2427
2528pub const feature_noFsmuld = Feature{
2629 .name = "no-fsmuld",
30 .llvm_name = "no-fsmuld",
2731 .description = "Disable the fsmuld instruction.",
2832 .dependencies = &[_]*const Feature {
2933 },
......@@ -31,6 +35,7 @@ pub const feature_noFsmuld = Feature{
3135
3236pub const feature_leonpwrpsr = Feature{
3337 .name = "leonpwrpsr",
38 .llvm_name = "leonpwrpsr",
3439 .description = "Enable the PWRPSR instruction",
3540 .dependencies = &[_]*const Feature {
3641 },
......@@ -38,6 +43,7 @@ pub const feature_leonpwrpsr = Feature{
3843
3944pub const feature_softFloat = Feature{
4045 .name = "soft-float",
46 .llvm_name = "soft-float",
4147 .description = "Use software emulation for floating point",
4248 .dependencies = &[_]*const Feature {
4349 },
......@@ -45,6 +51,7 @@ pub const feature_softFloat = Feature{
4551
4652pub const feature_softMulDiv = Feature{
4753 .name = "soft-mul-div",
54 .llvm_name = "soft-mul-div",
4855 .description = "Use software emulation for integer multiply and divide",
4956 .dependencies = &[_]*const Feature {
5057 },
......@@ -52,6 +59,7 @@ pub const feature_softMulDiv = Feature{
5259
5360pub const feature_deprecatedV8 = Feature{
5461 .name = "deprecated-v8",
62 .llvm_name = "deprecated-v8",
5563 .description = "Enable deprecated V8 instructions in V9 mode",
5664 .dependencies = &[_]*const Feature {
5765 },
......@@ -59,6 +67,7 @@ pub const feature_deprecatedV8 = Feature{
5967
6068pub const feature_v9 = Feature{
6169 .name = "v9",
70 .llvm_name = "v9",
6271 .description = "Enable SPARC-V9 instructions",
6372 .dependencies = &[_]*const Feature {
6473 },
......@@ -66,6 +75,7 @@ pub const feature_v9 = Feature{
6675
6776pub const feature_vis = Feature{
6877 .name = "vis",
78 .llvm_name = "vis",
6979 .description = "Enable UltraSPARC Visual Instruction Set extensions",
7080 .dependencies = &[_]*const Feature {
7181 },
......@@ -73,6 +83,7 @@ pub const feature_vis = Feature{
7383
7484pub const feature_vis2 = Feature{
7585 .name = "vis2",
86 .llvm_name = "vis2",
7687 .description = "Enable Visual Instruction Set extensions II",
7788 .dependencies = &[_]*const Feature {
7889 },
......@@ -80,6 +91,7 @@ pub const feature_vis2 = Feature{
8091
8192pub const feature_vis3 = Feature{
8293 .name = "vis3",
94 .llvm_name = "vis3",
8395 .description = "Enable Visual Instruction Set extensions III",
8496 .dependencies = &[_]*const Feature {
8597 },
lib/std/target/systemz.zig+35
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_dfpPackedConversion = Feature{
55 .name = "dfp-packed-conversion",
6 .llvm_name = "dfp-packed-conversion",
67 .description = "Assume that the DFP packed-conversion facility is installed",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_dfpPackedConversion = Feature{
1011
1112pub const feature_dfpZonedConversion = Feature{
1213 .name = "dfp-zoned-conversion",
14 .llvm_name = "dfp-zoned-conversion",
1315 .description = "Assume that the DFP zoned-conversion facility is installed",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_dfpZonedConversion = Feature{
1719
1820pub const feature_deflateConversion = Feature{
1921 .name = "deflate-conversion",
22 .llvm_name = "deflate-conversion",
2023 .description = "Assume that the deflate-conversion facility is installed",
2124 .dependencies = &[_]*const Feature {
2225 },
......@@ -24,6 +27,7 @@ pub const feature_deflateConversion = Feature{
2427
2528pub const feature_distinctOps = Feature{
2629 .name = "distinct-ops",
30 .llvm_name = "distinct-ops",
2731 .description = "Assume that the distinct-operands facility is installed",
2832 .dependencies = &[_]*const Feature {
2933 },
......@@ -31,6 +35,7 @@ pub const feature_distinctOps = Feature{
3135
3236pub const feature_enhancedDat2 = Feature{
3337 .name = "enhanced-dat-2",
38 .llvm_name = "enhanced-dat-2",
3439 .description = "Assume that the enhanced-DAT facility 2 is installed",
3540 .dependencies = &[_]*const Feature {
3641 },
......@@ -38,6 +43,7 @@ pub const feature_enhancedDat2 = Feature{
3843
3944pub const feature_enhancedSort = Feature{
4045 .name = "enhanced-sort",
46 .llvm_name = "enhanced-sort",
4147 .description = "Assume that the enhanced-sort facility is installed",
4248 .dependencies = &[_]*const Feature {
4349 },
......@@ -45,6 +51,7 @@ pub const feature_enhancedSort = Feature{
4551
4652pub const feature_executionHint = Feature{
4753 .name = "execution-hint",
54 .llvm_name = "execution-hint",
4855 .description = "Assume that the execution-hint facility is installed",
4956 .dependencies = &[_]*const Feature {
5057 },
......@@ -52,6 +59,7 @@ pub const feature_executionHint = Feature{
5259
5360pub const feature_fpExtension = Feature{
5461 .name = "fp-extension",
62 .llvm_name = "fp-extension",
5563 .description = "Assume that the floating-point extension facility is installed",
5664 .dependencies = &[_]*const Feature {
5765 },
......@@ -59,6 +67,7 @@ pub const feature_fpExtension = Feature{
5967
6068pub const feature_fastSerialization = Feature{
6169 .name = "fast-serialization",
70 .llvm_name = "fast-serialization",
6271 .description = "Assume that the fast-serialization facility is installed",
6372 .dependencies = &[_]*const Feature {
6473 },
......@@ -66,6 +75,7 @@ pub const feature_fastSerialization = Feature{
6675
6776pub const feature_guardedStorage = Feature{
6877 .name = "guarded-storage",
78 .llvm_name = "guarded-storage",
6979 .description = "Assume that the guarded-storage facility is installed",
7080 .dependencies = &[_]*const Feature {
7181 },
......@@ -73,6 +83,7 @@ pub const feature_guardedStorage = Feature{
7383
7484pub const feature_highWord = Feature{
7585 .name = "high-word",
86 .llvm_name = "high-word",
7687 .description = "Assume that the high-word facility is installed",
7788 .dependencies = &[_]*const Feature {
7889 },
......@@ -80,6 +91,7 @@ pub const feature_highWord = Feature{
8091
8192pub const feature_insertReferenceBitsMultiple = Feature{
8293 .name = "insert-reference-bits-multiple",
94 .llvm_name = "insert-reference-bits-multiple",
8395 .description = "Assume that the insert-reference-bits-multiple facility is installed",
8496 .dependencies = &[_]*const Feature {
8597 },
......@@ -87,6 +99,7 @@ pub const feature_insertReferenceBitsMultiple = Feature{
8799
88100pub const feature_interlockedAccess1 = Feature{
89101 .name = "interlocked-access1",
102 .llvm_name = "interlocked-access1",
90103 .description = "Assume that interlocked-access facility 1 is installed",
91104 .dependencies = &[_]*const Feature {
92105 },
......@@ -94,6 +107,7 @@ pub const feature_interlockedAccess1 = Feature{
94107
95108pub const feature_loadAndTrap = Feature{
96109 .name = "load-and-trap",
110 .llvm_name = "load-and-trap",
97111 .description = "Assume that the load-and-trap facility is installed",
98112 .dependencies = &[_]*const Feature {
99113 },
......@@ -101,6 +115,7 @@ pub const feature_loadAndTrap = Feature{
101115
102116pub const feature_loadAndZeroRightmostByte = Feature{
103117 .name = "load-and-zero-rightmost-byte",
118 .llvm_name = "load-and-zero-rightmost-byte",
104119 .description = "Assume that the load-and-zero-rightmost-byte facility is installed",
105120 .dependencies = &[_]*const Feature {
106121 },
......@@ -108,6 +123,7 @@ pub const feature_loadAndZeroRightmostByte = Feature{
108123
109124pub const feature_loadStoreOnCond = Feature{
110125 .name = "load-store-on-cond",
126 .llvm_name = "load-store-on-cond",
111127 .description = "Assume that the load/store-on-condition facility is installed",
112128 .dependencies = &[_]*const Feature {
113129 },
......@@ -115,6 +131,7 @@ pub const feature_loadStoreOnCond = Feature{
115131
116132pub const feature_loadStoreOnCond2 = Feature{
117133 .name = "load-store-on-cond-2",
134 .llvm_name = "load-store-on-cond-2",
118135 .description = "Assume that the load/store-on-condition facility 2 is installed",
119136 .dependencies = &[_]*const Feature {
120137 },
......@@ -122,6 +139,7 @@ pub const feature_loadStoreOnCond2 = Feature{
122139
123140pub const feature_messageSecurityAssistExtension3 = Feature{
124141 .name = "message-security-assist-extension3",
142 .llvm_name = "message-security-assist-extension3",
125143 .description = "Assume that the message-security-assist extension facility 3 is installed",
126144 .dependencies = &[_]*const Feature {
127145 },
......@@ -129,6 +147,7 @@ pub const feature_messageSecurityAssistExtension3 = Feature{
129147
130148pub const feature_messageSecurityAssistExtension4 = Feature{
131149 .name = "message-security-assist-extension4",
150 .llvm_name = "message-security-assist-extension4",
132151 .description = "Assume that the message-security-assist extension facility 4 is installed",
133152 .dependencies = &[_]*const Feature {
134153 },
......@@ -136,6 +155,7 @@ pub const feature_messageSecurityAssistExtension4 = Feature{
136155
137156pub const feature_messageSecurityAssistExtension5 = Feature{
138157 .name = "message-security-assist-extension5",
158 .llvm_name = "message-security-assist-extension5",
139159 .description = "Assume that the message-security-assist extension facility 5 is installed",
140160 .dependencies = &[_]*const Feature {
141161 },
......@@ -143,6 +163,7 @@ pub const feature_messageSecurityAssistExtension5 = Feature{
143163
144164pub const feature_messageSecurityAssistExtension7 = Feature{
145165 .name = "message-security-assist-extension7",
166 .llvm_name = "message-security-assist-extension7",
146167 .description = "Assume that the message-security-assist extension facility 7 is installed",
147168 .dependencies = &[_]*const Feature {
148169 },
......@@ -150,6 +171,7 @@ pub const feature_messageSecurityAssistExtension7 = Feature{
150171
151172pub const feature_messageSecurityAssistExtension8 = Feature{
152173 .name = "message-security-assist-extension8",
174 .llvm_name = "message-security-assist-extension8",
153175 .description = "Assume that the message-security-assist extension facility 8 is installed",
154176 .dependencies = &[_]*const Feature {
155177 },
......@@ -157,6 +179,7 @@ pub const feature_messageSecurityAssistExtension8 = Feature{
157179
158180pub const feature_messageSecurityAssistExtension9 = Feature{
159181 .name = "message-security-assist-extension9",
182 .llvm_name = "message-security-assist-extension9",
160183 .description = "Assume that the message-security-assist extension facility 9 is installed",
161184 .dependencies = &[_]*const Feature {
162185 },
......@@ -164,6 +187,7 @@ pub const feature_messageSecurityAssistExtension9 = Feature{
164187
165188pub const feature_miscellaneousExtensions = Feature{
166189 .name = "miscellaneous-extensions",
190 .llvm_name = "miscellaneous-extensions",
167191 .description = "Assume that the miscellaneous-extensions facility is installed",
168192 .dependencies = &[_]*const Feature {
169193 },
......@@ -171,6 +195,7 @@ pub const feature_miscellaneousExtensions = Feature{
171195
172196pub const feature_miscellaneousExtensions2 = Feature{
173197 .name = "miscellaneous-extensions-2",
198 .llvm_name = "miscellaneous-extensions-2",
174199 .description = "Assume that the miscellaneous-extensions facility 2 is installed",
175200 .dependencies = &[_]*const Feature {
176201 },
......@@ -178,6 +203,7 @@ pub const feature_miscellaneousExtensions2 = Feature{
178203
179204pub const feature_miscellaneousExtensions3 = Feature{
180205 .name = "miscellaneous-extensions-3",
206 .llvm_name = "miscellaneous-extensions-3",
181207 .description = "Assume that the miscellaneous-extensions facility 3 is installed",
182208 .dependencies = &[_]*const Feature {
183209 },
......@@ -185,6 +211,7 @@ pub const feature_miscellaneousExtensions3 = Feature{
185211
186212pub const feature_populationCount = Feature{
187213 .name = "population-count",
214 .llvm_name = "population-count",
188215 .description = "Assume that the population-count facility is installed",
189216 .dependencies = &[_]*const Feature {
190217 },
......@@ -192,6 +219,7 @@ pub const feature_populationCount = Feature{
192219
193220pub const feature_processorAssist = Feature{
194221 .name = "processor-assist",
222 .llvm_name = "processor-assist",
195223 .description = "Assume that the processor-assist facility is installed",
196224 .dependencies = &[_]*const Feature {
197225 },
......@@ -199,6 +227,7 @@ pub const feature_processorAssist = Feature{
199227
200228pub const feature_resetReferenceBitsMultiple = Feature{
201229 .name = "reset-reference-bits-multiple",
230 .llvm_name = "reset-reference-bits-multiple",
202231 .description = "Assume that the reset-reference-bits-multiple facility is installed",
203232 .dependencies = &[_]*const Feature {
204233 },
......@@ -206,6 +235,7 @@ pub const feature_resetReferenceBitsMultiple = Feature{
206235
207236pub const feature_transactionalExecution = Feature{
208237 .name = "transactional-execution",
238 .llvm_name = "transactional-execution",
209239 .description = "Assume that the transactional-execution facility is installed",
210240 .dependencies = &[_]*const Feature {
211241 },
......@@ -213,6 +243,7 @@ pub const feature_transactionalExecution = Feature{
213243
214244pub const feature_vector = Feature{
215245 .name = "vector",
246 .llvm_name = "vector",
216247 .description = "Assume that the vectory facility is installed",
217248 .dependencies = &[_]*const Feature {
218249 },
......@@ -220,6 +251,7 @@ pub const feature_vector = Feature{
220251
221252pub const feature_vectorEnhancements1 = Feature{
222253 .name = "vector-enhancements-1",
254 .llvm_name = "vector-enhancements-1",
223255 .description = "Assume that the vector enhancements facility 1 is installed",
224256 .dependencies = &[_]*const Feature {
225257 },
......@@ -227,6 +259,7 @@ pub const feature_vectorEnhancements1 = Feature{
227259
228260pub const feature_vectorEnhancements2 = Feature{
229261 .name = "vector-enhancements-2",
262 .llvm_name = "vector-enhancements-2",
230263 .description = "Assume that the vector enhancements facility 2 is installed",
231264 .dependencies = &[_]*const Feature {
232265 },
......@@ -234,6 +267,7 @@ pub const feature_vectorEnhancements2 = Feature{
234267
235268pub const feature_vectorPackedDecimal = Feature{
236269 .name = "vector-packed-decimal",
270 .llvm_name = "vector-packed-decimal",
237271 .description = "Assume that the vector packed decimal facility is installed",
238272 .dependencies = &[_]*const Feature {
239273 },
......@@ -241,6 +275,7 @@ pub const feature_vectorPackedDecimal = Feature{
241275
242276pub const feature_vectorPackedDecimalEnhancement = Feature{
243277 .name = "vector-packed-decimal-enhancement",
278 .llvm_name = "vector-packed-decimal-enhancement",
244279 .description = "Assume that the vector packed decimal enhancement facility is installed",
245280 .dependencies = &[_]*const Feature {
246281 },
lib/std/target/wasm.zig+10
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_atomics = Feature{
55 .name = "atomics",
6 .llvm_name = "atomics",
67 .description = "Enable Atomics",
78 .dependencies = &[_]*const Feature {
89 },
......@@ -10,6 +11,7 @@ pub const feature_atomics = Feature{
1011
1112pub const feature_bulkMemory = Feature{
1213 .name = "bulk-memory",
14 .llvm_name = "bulk-memory",
1315 .description = "Enable bulk memory operations",
1416 .dependencies = &[_]*const Feature {
1517 },
......@@ -17,6 +19,7 @@ pub const feature_bulkMemory = Feature{
1719
1820pub const feature_exceptionHandling = Feature{
1921 .name = "exception-handling",
22 .llvm_name = "exception-handling",
2023 .description = "Enable Wasm exception handling",
2124 .dependencies = &[_]*const Feature {
2225 },
......@@ -24,6 +27,7 @@ pub const feature_exceptionHandling = Feature{
2427
2528pub const feature_multivalue = Feature{
2629 .name = "multivalue",
30 .llvm_name = "multivalue",
2731 .description = "Enable multivalue blocks, instructions, and functions",
2832 .dependencies = &[_]*const Feature {
2933 },
......@@ -31,6 +35,7 @@ pub const feature_multivalue = Feature{
3135
3236pub const feature_mutableGlobals = Feature{
3337 .name = "mutable-globals",
38 .llvm_name = "mutable-globals",
3439 .description = "Enable mutable globals",
3540 .dependencies = &[_]*const Feature {
3641 },
......@@ -38,6 +43,7 @@ pub const feature_mutableGlobals = Feature{
3843
3944pub const feature_nontrappingFptoint = Feature{
4045 .name = "nontrapping-fptoint",
46 .llvm_name = "nontrapping-fptoint",
4147 .description = "Enable non-trapping float-to-int conversion operators",
4248 .dependencies = &[_]*const Feature {
4349 },
......@@ -45,6 +51,7 @@ pub const feature_nontrappingFptoint = Feature{
4551
4652pub const feature_simd128 = Feature{
4753 .name = "simd128",
54 .llvm_name = "simd128",
4855 .description = "Enable 128-bit SIMD",
4956 .dependencies = &[_]*const Feature {
5057 },
......@@ -52,6 +59,7 @@ pub const feature_simd128 = Feature{
5259
5360pub const feature_signExt = Feature{
5461 .name = "sign-ext",
62 .llvm_name = "sign-ext",
5563 .description = "Enable sign extension operators",
5664 .dependencies = &[_]*const Feature {
5765 },
......@@ -59,6 +67,7 @@ pub const feature_signExt = Feature{
5967
6068pub const feature_tailCall = Feature{
6169 .name = "tail-call",
70 .llvm_name = "tail-call",
6271 .description = "Enable tail call instructions",
6372 .dependencies = &[_]*const Feature {
6473 },
......@@ -66,6 +75,7 @@ pub const feature_tailCall = Feature{
6675
6776pub const feature_unimplementedSimd128 = Feature{
6877 .name = "unimplemented-simd128",
78 .llvm_name = "unimplemented-simd128",
6979 .description = "Enable 128-bit SIMD not yet implemented in engines",
7080 .dependencies = &[_]*const Feature {
7181 &feature_simd128,
lib/std/target/x86.zig+126
......@@ -3,6 +3,7 @@ const Cpu = @import("std").target.Cpu;
33
44pub const feature_dnow3 = Feature{
55 .name = "3dnow",
6 .llvm_name = "3dnow",
67 .description = "Enable 3DNow! instructions",
78 .dependencies = &[_]*const Feature {
89 &feature_mmx,
......@@ -11,6 +12,7 @@ pub const feature_dnow3 = Feature{
1112
1213pub const feature_dnowa3 = Feature{
1314 .name = "3dnowa",
15 .llvm_name = "3dnowa",
1416 .description = "Enable 3DNow! Athlon instructions",
1517 .dependencies = &[_]*const Feature {
1618 &feature_mmx,
......@@ -19,6 +21,7 @@ pub const feature_dnowa3 = Feature{
1921
2022pub const feature_bit64 = Feature{
2123 .name = "64bit",
24 .llvm_name = "64bit",
2225 .description = "Support 64-bit instructions",
2326 .dependencies = &[_]*const Feature {
2427 },
......@@ -26,6 +29,7 @@ pub const feature_bit64 = Feature{
2629
2730pub const feature_adx = Feature{
2831 .name = "adx",
32 .llvm_name = "adx",
2933 .description = "Support ADX instructions",
3034 .dependencies = &[_]*const Feature {
3135 },
......@@ -33,6 +37,7 @@ pub const feature_adx = Feature{
3337
3438pub const feature_aes = Feature{
3539 .name = "aes",
40 .llvm_name = "aes",
3641 .description = "Enable AES instructions",
3742 .dependencies = &[_]*const Feature {
3843 &feature_sse,
......@@ -41,6 +46,7 @@ pub const feature_aes = Feature{
4146
4247pub const feature_avx = Feature{
4348 .name = "avx",
49 .llvm_name = "avx",
4450 .description = "Enable AVX instructions",
4551 .dependencies = &[_]*const Feature {
4652 &feature_sse,
......@@ -49,6 +55,7 @@ pub const feature_avx = Feature{
4955
5056pub const feature_avx2 = Feature{
5157 .name = "avx2",
58 .llvm_name = "avx2",
5259 .description = "Enable AVX2 instructions",
5360 .dependencies = &[_]*const Feature {
5461 &feature_sse,
......@@ -57,6 +64,7 @@ pub const feature_avx2 = Feature{
5764
5865pub const feature_avx512f = Feature{
5966 .name = "avx512f",
67 .llvm_name = "avx512f",
6068 .description = "Enable AVX-512 instructions",
6169 .dependencies = &[_]*const Feature {
6270 &feature_sse,
......@@ -65,6 +73,7 @@ pub const feature_avx512f = Feature{
6573
6674pub const feature_avx512bf16 = Feature{
6775 .name = "avx512bf16",
76 .llvm_name = "avx512bf16",
6877 .description = "Support bfloat16 floating point",
6978 .dependencies = &[_]*const Feature {
7079 &feature_sse,
......@@ -73,6 +82,7 @@ pub const feature_avx512bf16 = Feature{
7382
7483pub const feature_avx512bitalg = Feature{
7584 .name = "avx512bitalg",
85 .llvm_name = "avx512bitalg",
7686 .description = "Enable AVX-512 Bit Algorithms",
7787 .dependencies = &[_]*const Feature {
7888 &feature_sse,
......@@ -81,6 +91,7 @@ pub const feature_avx512bitalg = Feature{
8191
8292pub const feature_bmi = Feature{
8393 .name = "bmi",
94 .llvm_name = "bmi",
8495 .description = "Support BMI instructions",
8596 .dependencies = &[_]*const Feature {
8697 },
......@@ -88,6 +99,7 @@ pub const feature_bmi = Feature{
8899
89100pub const feature_bmi2 = Feature{
90101 .name = "bmi2",
102 .llvm_name = "bmi2",
91103 .description = "Support BMI2 instructions",
92104 .dependencies = &[_]*const Feature {
93105 },
......@@ -95,6 +107,7 @@ pub const feature_bmi2 = Feature{
95107
96108pub const feature_avx512bw = Feature{
97109 .name = "avx512bw",
110 .llvm_name = "avx512bw",
98111 .description = "Enable AVX-512 Byte and Word Instructions",
99112 .dependencies = &[_]*const Feature {
100113 &feature_sse,
......@@ -103,6 +116,7 @@ pub const feature_avx512bw = Feature{
103116
104117pub const feature_branchfusion = Feature{
105118 .name = "branchfusion",
119 .llvm_name = "branchfusion",
106120 .description = "CMP/TEST can be fused with conditional branches",
107121 .dependencies = &[_]*const Feature {
108122 },
......@@ -110,6 +124,7 @@ pub const feature_branchfusion = Feature{
110124
111125pub const feature_avx512cd = Feature{
112126 .name = "avx512cd",
127 .llvm_name = "avx512cd",
113128 .description = "Enable AVX-512 Conflict Detection Instructions",
114129 .dependencies = &[_]*const Feature {
115130 &feature_sse,
......@@ -118,6 +133,7 @@ pub const feature_avx512cd = Feature{
118133
119134pub const feature_cldemote = Feature{
120135 .name = "cldemote",
136 .llvm_name = "cldemote",
121137 .description = "Enable Cache Demote",
122138 .dependencies = &[_]*const Feature {
123139 },
......@@ -125,6 +141,7 @@ pub const feature_cldemote = Feature{
125141
126142pub const feature_clflushopt = Feature{
127143 .name = "clflushopt",
144 .llvm_name = "clflushopt",
128145 .description = "Flush A Cache Line Optimized",
129146 .dependencies = &[_]*const Feature {
130147 },
......@@ -132,6 +149,7 @@ pub const feature_clflushopt = Feature{
132149
133150pub const feature_clwb = Feature{
134151 .name = "clwb",
152 .llvm_name = "clwb",
135153 .description = "Cache Line Write Back",
136154 .dependencies = &[_]*const Feature {
137155 },
......@@ -139,6 +157,7 @@ pub const feature_clwb = Feature{
139157
140158pub const feature_clzero = Feature{
141159 .name = "clzero",
160 .llvm_name = "clzero",
142161 .description = "Enable Cache Line Zero",
143162 .dependencies = &[_]*const Feature {
144163 },
......@@ -146,6 +165,7 @@ pub const feature_clzero = Feature{
146165
147166pub const feature_cmov = Feature{
148167 .name = "cmov",
168 .llvm_name = "cmov",
149169 .description = "Enable conditional move instructions",
150170 .dependencies = &[_]*const Feature {
151171 },
......@@ -153,6 +173,7 @@ pub const feature_cmov = Feature{
153173
154174pub const feature_cx8 = Feature{
155175 .name = "cx8",
176 .llvm_name = "cx8",
156177 .description = "Support CMPXCHG8B instructions",
157178 .dependencies = &[_]*const Feature {
158179 },
......@@ -160,6 +181,7 @@ pub const feature_cx8 = Feature{
160181
161182pub const feature_cx16 = Feature{
162183 .name = "cx16",
184 .llvm_name = "cx16",
163185 .description = "64-bit with cmpxchg16b",
164186 .dependencies = &[_]*const Feature {
165187 &feature_cx8,
......@@ -168,6 +190,7 @@ pub const feature_cx16 = Feature{
168190
169191pub const feature_avx512dq = Feature{
170192 .name = "avx512dq",
193 .llvm_name = "avx512dq",
171194 .description = "Enable AVX-512 Doubleword and Quadword Instructions",
172195 .dependencies = &[_]*const Feature {
173196 &feature_sse,
......@@ -176,6 +199,7 @@ pub const feature_avx512dq = Feature{
176199
177200pub const feature_mpx = Feature{
178201 .name = "mpx",
202 .llvm_name = "mpx",
179203 .description = "Deprecated. Support MPX instructions",
180204 .dependencies = &[_]*const Feature {
181205 },
......@@ -183,6 +207,7 @@ pub const feature_mpx = Feature{
183207
184208pub const feature_enqcmd = Feature{
185209 .name = "enqcmd",
210 .llvm_name = "enqcmd",
186211 .description = "Has ENQCMD instructions",
187212 .dependencies = &[_]*const Feature {
188213 },
......@@ -190,6 +215,7 @@ pub const feature_enqcmd = Feature{
190215
191216pub const feature_avx512er = Feature{
192217 .name = "avx512er",
218 .llvm_name = "avx512er",
193219 .description = "Enable AVX-512 Exponential and Reciprocal Instructions",
194220 .dependencies = &[_]*const Feature {
195221 &feature_sse,
......@@ -198,6 +224,7 @@ pub const feature_avx512er = Feature{
198224
199225pub const feature_ermsb = Feature{
200226 .name = "ermsb",
227 .llvm_name = "ermsb",
201228 .description = "REP MOVS/STOS are fast",
202229 .dependencies = &[_]*const Feature {
203230 },
......@@ -205,6 +232,7 @@ pub const feature_ermsb = Feature{
205232
206233pub const feature_f16c = Feature{
207234 .name = "f16c",
235 .llvm_name = "f16c",
208236 .description = "Support 16-bit floating point conversion instructions",
209237 .dependencies = &[_]*const Feature {
210238 &feature_sse,
......@@ -213,6 +241,7 @@ pub const feature_f16c = Feature{
213241
214242pub const feature_fma = Feature{
215243 .name = "fma",
244 .llvm_name = "fma",
216245 .description = "Enable three-operand fused multiple-add",
217246 .dependencies = &[_]*const Feature {
218247 &feature_sse,
......@@ -221,6 +250,7 @@ pub const feature_fma = Feature{
221250
222251pub const feature_fma4 = Feature{
223252 .name = "fma4",
253 .llvm_name = "fma4",
224254 .description = "Enable four-operand fused multiple-add",
225255 .dependencies = &[_]*const Feature {
226256 &feature_sse,
......@@ -229,6 +259,7 @@ pub const feature_fma4 = Feature{
229259
230260pub const feature_fsgsbase = Feature{
231261 .name = "fsgsbase",
262 .llvm_name = "fsgsbase",
232263 .description = "Support FS/GS Base instructions",
233264 .dependencies = &[_]*const Feature {
234265 },
......@@ -236,6 +267,7 @@ pub const feature_fsgsbase = Feature{
236267
237268pub const feature_fxsr = Feature{
238269 .name = "fxsr",
270 .llvm_name = "fxsr",
239271 .description = "Support fxsave/fxrestore instructions",
240272 .dependencies = &[_]*const Feature {
241273 },
......@@ -243,6 +275,7 @@ pub const feature_fxsr = Feature{
243275
244276pub const feature_fast11bytenop = Feature{
245277 .name = "fast-11bytenop",
278 .llvm_name = "fast-11bytenop",
246279 .description = "Target can quickly decode up to 11 byte NOPs",
247280 .dependencies = &[_]*const Feature {
248281 },
......@@ -250,6 +283,7 @@ pub const feature_fast11bytenop = Feature{
250283
251284pub const feature_fast15bytenop = Feature{
252285 .name = "fast-15bytenop",
286 .llvm_name = "fast-15bytenop",
253287 .description = "Target can quickly decode up to 15 byte NOPs",
254288 .dependencies = &[_]*const Feature {
255289 },
......@@ -257,6 +291,7 @@ pub const feature_fast15bytenop = Feature{
257291
258292pub const feature_fastBextr = Feature{
259293 .name = "fast-bextr",
294 .llvm_name = "fast-bextr",
260295 .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput",
261296 .dependencies = &[_]*const Feature {
262297 },
......@@ -264,6 +299,7 @@ pub const feature_fastBextr = Feature{
264299
265300pub const feature_fastHops = Feature{
266301 .name = "fast-hops",
302 .llvm_name = "fast-hops",
267303 .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles",
268304 .dependencies = &[_]*const Feature {
269305 &feature_sse,
......@@ -272,6 +308,7 @@ pub const feature_fastHops = Feature{
272308
273309pub const feature_fastLzcnt = Feature{
274310 .name = "fast-lzcnt",
311 .llvm_name = "fast-lzcnt",
275312 .description = "LZCNT instructions are as fast as most simple integer ops",
276313 .dependencies = &[_]*const Feature {
277314 },
......@@ -279,6 +316,7 @@ pub const feature_fastLzcnt = Feature{
279316
280317pub const feature_fastPartialYmmOrZmmWrite = Feature{
281318 .name = "fast-partial-ymm-or-zmm-write",
319 .llvm_name = "fast-partial-ymm-or-zmm-write",
282320 .description = "Partial writes to YMM/ZMM registers are fast",
283321 .dependencies = &[_]*const Feature {
284322 },
......@@ -286,6 +324,7 @@ pub const feature_fastPartialYmmOrZmmWrite = Feature{
286324
287325pub const feature_fastShldRotate = Feature{
288326 .name = "fast-shld-rotate",
327 .llvm_name = "fast-shld-rotate",
289328 .description = "SHLD can be used as a faster rotate",
290329 .dependencies = &[_]*const Feature {
291330 },
......@@ -293,6 +332,7 @@ pub const feature_fastShldRotate = Feature{
293332
294333pub const feature_fastScalarFsqrt = Feature{
295334 .name = "fast-scalar-fsqrt",
335 .llvm_name = "fast-scalar-fsqrt",
296336 .description = "Scalar SQRT is fast (disable Newton-Raphson)",
297337 .dependencies = &[_]*const Feature {
298338 },
......@@ -300,6 +340,7 @@ pub const feature_fastScalarFsqrt = Feature{
300340
301341pub const feature_fastScalarShiftMasks = Feature{
302342 .name = "fast-scalar-shift-masks",
343 .llvm_name = "fast-scalar-shift-masks",
303344 .description = "Prefer a left/right scalar logical shift pair over a shift+and pair",
304345 .dependencies = &[_]*const Feature {
305346 },
......@@ -307,6 +348,7 @@ pub const feature_fastScalarShiftMasks = Feature{
307348
308349pub const feature_fastVariableShuffle = Feature{
309350 .name = "fast-variable-shuffle",
351 .llvm_name = "fast-variable-shuffle",
310352 .description = "Shuffles with variable masks are fast",
311353 .dependencies = &[_]*const Feature {
312354 },
......@@ -314,6 +356,7 @@ pub const feature_fastVariableShuffle = Feature{
314356
315357pub const feature_fastVectorFsqrt = Feature{
316358 .name = "fast-vector-fsqrt",
359 .llvm_name = "fast-vector-fsqrt",
317360 .description = "Vector SQRT is fast (disable Newton-Raphson)",
318361 .dependencies = &[_]*const Feature {
319362 },
......@@ -321,6 +364,7 @@ pub const feature_fastVectorFsqrt = Feature{
321364
322365pub const feature_fastVectorShiftMasks = Feature{
323366 .name = "fast-vector-shift-masks",
367 .llvm_name = "fast-vector-shift-masks",
324368 .description = "Prefer a left/right vector logical shift pair over a shift+and pair",
325369 .dependencies = &[_]*const Feature {
326370 },
......@@ -328,6 +372,7 @@ pub const feature_fastVectorShiftMasks = Feature{
328372
329373pub const feature_gfni = Feature{
330374 .name = "gfni",
375 .llvm_name = "gfni",
331376 .description = "Enable Galois Field Arithmetic Instructions",
332377 .dependencies = &[_]*const Feature {
333378 &feature_sse,
......@@ -336,6 +381,7 @@ pub const feature_gfni = Feature{
336381
337382pub const feature_fastGather = Feature{
338383 .name = "fast-gather",
384 .llvm_name = "fast-gather",
339385 .description = "Indicates if gather is reasonably fast",
340386 .dependencies = &[_]*const Feature {
341387 },
......@@ -343,6 +389,7 @@ pub const feature_fastGather = Feature{
343389
344390pub const feature_avx512ifma = Feature{
345391 .name = "avx512ifma",
392 .llvm_name = "avx512ifma",
346393 .description = "Enable AVX-512 Integer Fused Multiple-Add",
347394 .dependencies = &[_]*const Feature {
348395 &feature_sse,
......@@ -351,6 +398,7 @@ pub const feature_avx512ifma = Feature{
351398
352399pub const feature_invpcid = Feature{
353400 .name = "invpcid",
401 .llvm_name = "invpcid",
354402 .description = "Invalidate Process-Context Identifier",
355403 .dependencies = &[_]*const Feature {
356404 },
......@@ -358,6 +406,7 @@ pub const feature_invpcid = Feature{
358406
359407pub const feature_sahf = Feature{
360408 .name = "sahf",
409 .llvm_name = "sahf",
361410 .description = "Support LAHF and SAHF instructions",
362411 .dependencies = &[_]*const Feature {
363412 },
......@@ -365,6 +414,7 @@ pub const feature_sahf = Feature{
365414
366415pub const feature_leaSp = Feature{
367416 .name = "lea-sp",
417 .llvm_name = "lea-sp",
368418 .description = "Use LEA for adjusting the stack pointer",
369419 .dependencies = &[_]*const Feature {
370420 },
......@@ -372,6 +422,7 @@ pub const feature_leaSp = Feature{
372422
373423pub const feature_leaUsesAg = Feature{
374424 .name = "lea-uses-ag",
425 .llvm_name = "lea-uses-ag",
375426 .description = "LEA instruction needs inputs at AG stage",
376427 .dependencies = &[_]*const Feature {
377428 },
......@@ -379,6 +430,7 @@ pub const feature_leaUsesAg = Feature{
379430
380431pub const feature_lwp = Feature{
381432 .name = "lwp",
433 .llvm_name = "lwp",
382434 .description = "Enable LWP instructions",
383435 .dependencies = &[_]*const Feature {
384436 },
......@@ -386,6 +438,7 @@ pub const feature_lwp = Feature{
386438
387439pub const feature_lzcnt = Feature{
388440 .name = "lzcnt",
441 .llvm_name = "lzcnt",
389442 .description = "Support LZCNT instruction",
390443 .dependencies = &[_]*const Feature {
391444 },
......@@ -393,6 +446,7 @@ pub const feature_lzcnt = Feature{
393446
394447pub const feature_falseDepsLzcntTzcnt = Feature{
395448 .name = "false-deps-lzcnt-tzcnt",
449 .llvm_name = "false-deps-lzcnt-tzcnt",
396450 .description = "LZCNT/TZCNT have a false dependency on dest register",
397451 .dependencies = &[_]*const Feature {
398452 },
......@@ -400,6 +454,7 @@ pub const feature_falseDepsLzcntTzcnt = Feature{
400454
401455pub const feature_mmx = Feature{
402456 .name = "mmx",
457 .llvm_name = "mmx",
403458 .description = "Enable MMX instructions",
404459 .dependencies = &[_]*const Feature {
405460 },
......@@ -407,6 +462,7 @@ pub const feature_mmx = Feature{
407462
408463pub const feature_movbe = Feature{
409464 .name = "movbe",
465 .llvm_name = "movbe",
410466 .description = "Support MOVBE instruction",
411467 .dependencies = &[_]*const Feature {
412468 },
......@@ -414,6 +470,7 @@ pub const feature_movbe = Feature{
414470
415471pub const feature_movdir64b = Feature{
416472 .name = "movdir64b",
473 .llvm_name = "movdir64b",
417474 .description = "Support movdir64b instruction",
418475 .dependencies = &[_]*const Feature {
419476 },
......@@ -421,6 +478,7 @@ pub const feature_movdir64b = Feature{
421478
422479pub const feature_movdiri = Feature{
423480 .name = "movdiri",
481 .llvm_name = "movdiri",
424482 .description = "Support movdiri instruction",
425483 .dependencies = &[_]*const Feature {
426484 },
......@@ -428,6 +486,7 @@ pub const feature_movdiri = Feature{
428486
429487pub const feature_mwaitx = Feature{
430488 .name = "mwaitx",
489 .llvm_name = "mwaitx",
431490 .description = "Enable MONITORX/MWAITX timer functionality",
432491 .dependencies = &[_]*const Feature {
433492 },
......@@ -435,6 +494,7 @@ pub const feature_mwaitx = Feature{
435494
436495pub const feature_macrofusion = Feature{
437496 .name = "macrofusion",
497 .llvm_name = "macrofusion",
438498 .description = "Various instructions can be fused with conditional branches",
439499 .dependencies = &[_]*const Feature {
440500 },
......@@ -442,6 +502,7 @@ pub const feature_macrofusion = Feature{
442502
443503pub const feature_mergeToThreewayBranch = Feature{
444504 .name = "merge-to-threeway-branch",
505 .llvm_name = "merge-to-threeway-branch",
445506 .description = "Merge branches to a three-way conditional branch",
446507 .dependencies = &[_]*const Feature {
447508 },
......@@ -449,6 +510,7 @@ pub const feature_mergeToThreewayBranch = Feature{
449510
450511pub const feature_nopl = Feature{
451512 .name = "nopl",
513 .llvm_name = "nopl",
452514 .description = "Enable NOPL instruction",
453515 .dependencies = &[_]*const Feature {
454516 },
......@@ -456,6 +518,7 @@ pub const feature_nopl = Feature{
456518
457519pub const feature_pclmul = Feature{
458520 .name = "pclmul",
521 .llvm_name = "pclmul",
459522 .description = "Enable packed carry-less multiplication instructions",
460523 .dependencies = &[_]*const Feature {
461524 &feature_sse,
......@@ -464,6 +527,7 @@ pub const feature_pclmul = Feature{
464527
465528pub const feature_pconfig = Feature{
466529 .name = "pconfig",
530 .llvm_name = "pconfig",
467531 .description = "platform configuration instruction",
468532 .dependencies = &[_]*const Feature {
469533 },
......@@ -471,6 +535,7 @@ pub const feature_pconfig = Feature{
471535
472536pub const feature_avx512pf = Feature{
473537 .name = "avx512pf",
538 .llvm_name = "avx512pf",
474539 .description = "Enable AVX-512 PreFetch Instructions",
475540 .dependencies = &[_]*const Feature {
476541 &feature_sse,
......@@ -479,6 +544,7 @@ pub const feature_avx512pf = Feature{
479544
480545pub const feature_pku = Feature{
481546 .name = "pku",
547 .llvm_name = "pku",
482548 .description = "Enable protection keys",
483549 .dependencies = &[_]*const Feature {
484550 },
......@@ -486,6 +552,7 @@ pub const feature_pku = Feature{
486552
487553pub const feature_popcnt = Feature{
488554 .name = "popcnt",
555 .llvm_name = "popcnt",
489556 .description = "Support POPCNT instruction",
490557 .dependencies = &[_]*const Feature {
491558 },
......@@ -493,6 +560,7 @@ pub const feature_popcnt = Feature{
493560
494561pub const feature_falseDepsPopcnt = Feature{
495562 .name = "false-deps-popcnt",
563 .llvm_name = "false-deps-popcnt",
496564 .description = "POPCNT has a false dependency on dest register",
497565 .dependencies = &[_]*const Feature {
498566 },
......@@ -500,6 +568,7 @@ pub const feature_falseDepsPopcnt = Feature{
500568
501569pub const feature_prefetchwt1 = Feature{
502570 .name = "prefetchwt1",
571 .llvm_name = "prefetchwt1",
503572 .description = "Prefetch with Intent to Write and T1 Hint",
504573 .dependencies = &[_]*const Feature {
505574 },
......@@ -507,6 +576,7 @@ pub const feature_prefetchwt1 = Feature{
507576
508577pub const feature_prfchw = Feature{
509578 .name = "prfchw",
579 .llvm_name = "prfchw",
510580 .description = "Support PRFCHW instructions",
511581 .dependencies = &[_]*const Feature {
512582 },
......@@ -514,6 +584,7 @@ pub const feature_prfchw = Feature{
514584
515585pub const feature_ptwrite = Feature{
516586 .name = "ptwrite",
587 .llvm_name = "ptwrite",
517588 .description = "Support ptwrite instruction",
518589 .dependencies = &[_]*const Feature {
519590 },
......@@ -521,6 +592,7 @@ pub const feature_ptwrite = Feature{
521592
522593pub const feature_padShortFunctions = Feature{
523594 .name = "pad-short-functions",
595 .llvm_name = "pad-short-functions",
524596 .description = "Pad short functions",
525597 .dependencies = &[_]*const Feature {
526598 },
......@@ -528,6 +600,7 @@ pub const feature_padShortFunctions = Feature{
528600
529601pub const feature_prefer128Bit = Feature{
530602 .name = "prefer-128-bit",
603 .llvm_name = "prefer-128-bit",
531604 .description = "Prefer 128-bit AVX instructions",
532605 .dependencies = &[_]*const Feature {
533606 },
......@@ -535,6 +608,7 @@ pub const feature_prefer128Bit = Feature{
535608
536609pub const feature_prefer256Bit = Feature{
537610 .name = "prefer-256-bit",
611 .llvm_name = "prefer-256-bit",
538612 .description = "Prefer 256-bit AVX instructions",
539613 .dependencies = &[_]*const Feature {
540614 },
......@@ -542,6 +616,7 @@ pub const feature_prefer256Bit = Feature{
542616
543617pub const feature_rdpid = Feature{
544618 .name = "rdpid",
619 .llvm_name = "rdpid",
545620 .description = "Support RDPID instructions",
546621 .dependencies = &[_]*const Feature {
547622 },
......@@ -549,6 +624,7 @@ pub const feature_rdpid = Feature{
549624
550625pub const feature_rdrnd = Feature{
551626 .name = "rdrnd",
627 .llvm_name = "rdrnd",
552628 .description = "Support RDRAND instruction",
553629 .dependencies = &[_]*const Feature {
554630 },
......@@ -556,6 +632,7 @@ pub const feature_rdrnd = Feature{
556632
557633pub const feature_rdseed = Feature{
558634 .name = "rdseed",
635 .llvm_name = "rdseed",
559636 .description = "Support RDSEED instruction",
560637 .dependencies = &[_]*const Feature {
561638 },
......@@ -563,6 +640,7 @@ pub const feature_rdseed = Feature{
563640
564641pub const feature_rtm = Feature{
565642 .name = "rtm",
643 .llvm_name = "rtm",
566644 .description = "Support RTM instructions",
567645 .dependencies = &[_]*const Feature {
568646 },
......@@ -570,6 +648,7 @@ pub const feature_rtm = Feature{
570648
571649pub const feature_retpoline = Feature{
572650 .name = "retpoline",
651 .llvm_name = "retpoline",
573652 .description = "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct",
574653 .dependencies = &[_]*const Feature {
575654 &feature_retpolineIndirectCalls,
......@@ -579,6 +658,7 @@ pub const feature_retpoline = Feature{
579658
580659pub const feature_retpolineExternalThunk = Feature{
581660 .name = "retpoline-external-thunk",
661 .llvm_name = "retpoline-external-thunk",
582662 .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",
583663 .dependencies = &[_]*const Feature {
584664 &feature_retpolineIndirectCalls,
......@@ -587,6 +667,7 @@ pub const feature_retpolineExternalThunk = Feature{
587667
588668pub const feature_retpolineIndirectBranches = Feature{
589669 .name = "retpoline-indirect-branches",
670 .llvm_name = "retpoline-indirect-branches",
590671 .description = "Remove speculation of indirect branches from the generated code",
591672 .dependencies = &[_]*const Feature {
592673 },
......@@ -594,6 +675,7 @@ pub const feature_retpolineIndirectBranches = Feature{
594675
595676pub const feature_retpolineIndirectCalls = Feature{
596677 .name = "retpoline-indirect-calls",
678 .llvm_name = "retpoline-indirect-calls",
597679 .description = "Remove speculation of indirect calls from the generated code",
598680 .dependencies = &[_]*const Feature {
599681 },
......@@ -601,6 +683,7 @@ pub const feature_retpolineIndirectCalls = Feature{
601683
602684pub const feature_sgx = Feature{
603685 .name = "sgx",
686 .llvm_name = "sgx",
604687 .description = "Enable Software Guard Extensions",
605688 .dependencies = &[_]*const Feature {
606689 },
......@@ -608,6 +691,7 @@ pub const feature_sgx = Feature{
608691
609692pub const feature_sha = Feature{
610693 .name = "sha",
694 .llvm_name = "sha",
611695 .description = "Enable SHA instructions",
612696 .dependencies = &[_]*const Feature {
613697 &feature_sse,
......@@ -616,6 +700,7 @@ pub const feature_sha = Feature{
616700
617701pub const feature_shstk = Feature{
618702 .name = "shstk",
703 .llvm_name = "shstk",
619704 .description = "Support CET Shadow-Stack instructions",
620705 .dependencies = &[_]*const Feature {
621706 },
......@@ -623,6 +708,7 @@ pub const feature_shstk = Feature{
623708
624709pub const feature_sse = Feature{
625710 .name = "sse",
711 .llvm_name = "sse",
626712 .description = "Enable SSE instructions",
627713 .dependencies = &[_]*const Feature {
628714 },
......@@ -630,6 +716,7 @@ pub const feature_sse = Feature{
630716
631717pub const feature_sse2 = Feature{
632718 .name = "sse2",
719 .llvm_name = "sse2",
633720 .description = "Enable SSE2 instructions",
634721 .dependencies = &[_]*const Feature {
635722 &feature_sse,
......@@ -638,6 +725,7 @@ pub const feature_sse2 = Feature{
638725
639726pub const feature_sse3 = Feature{
640727 .name = "sse3",
728 .llvm_name = "sse3",
641729 .description = "Enable SSE3 instructions",
642730 .dependencies = &[_]*const Feature {
643731 &feature_sse,
......@@ -646,6 +734,7 @@ pub const feature_sse3 = Feature{
646734
647735pub const feature_sse4a = Feature{
648736 .name = "sse4a",
737 .llvm_name = "sse4a",
649738 .description = "Support SSE 4a instructions",
650739 .dependencies = &[_]*const Feature {
651740 &feature_sse,
......@@ -654,6 +743,7 @@ pub const feature_sse4a = Feature{
654743
655744pub const feature_sse41 = Feature{
656745 .name = "sse4.1",
746 .llvm_name = "sse4.1",
657747 .description = "Enable SSE 4.1 instructions",
658748 .dependencies = &[_]*const Feature {
659749 &feature_sse,
......@@ -662,6 +752,7 @@ pub const feature_sse41 = Feature{
662752
663753pub const feature_sse42 = Feature{
664754 .name = "sse4.2",
755 .llvm_name = "sse4.2",
665756 .description = "Enable SSE 4.2 instructions",
666757 .dependencies = &[_]*const Feature {
667758 &feature_sse,
......@@ -670,6 +761,7 @@ pub const feature_sse42 = Feature{
670761
671762pub const feature_sseUnalignedMem = Feature{
672763 .name = "sse-unaligned-mem",
764 .llvm_name = "sse-unaligned-mem",
673765 .description = "Allow unaligned memory operands with SSE instructions",
674766 .dependencies = &[_]*const Feature {
675767 },
......@@ -677,6 +769,7 @@ pub const feature_sseUnalignedMem = Feature{
677769
678770pub const feature_ssse3 = Feature{
679771 .name = "ssse3",
772 .llvm_name = "ssse3",
680773 .description = "Enable SSSE3 instructions",
681774 .dependencies = &[_]*const Feature {
682775 &feature_sse,
......@@ -685,6 +778,7 @@ pub const feature_ssse3 = Feature{
685778
686779pub const feature_slow3opsLea = Feature{
687780 .name = "slow-3ops-lea",
781 .llvm_name = "slow-3ops-lea",
688782 .description = "LEA instruction with 3 ops or certain registers is slow",
689783 .dependencies = &[_]*const Feature {
690784 },
......@@ -692,6 +786,7 @@ pub const feature_slow3opsLea = Feature{
692786
693787pub const feature_idivlToDivb = Feature{
694788 .name = "idivl-to-divb",
789 .llvm_name = "idivl-to-divb",
695790 .description = "Use 8-bit divide for positive values less than 256",
696791 .dependencies = &[_]*const Feature {
697792 },
......@@ -699,6 +794,7 @@ pub const feature_idivlToDivb = Feature{
699794
700795pub const feature_idivqToDivl = Feature{
701796 .name = "idivq-to-divl",
797 .llvm_name = "idivq-to-divl",
702798 .description = "Use 32-bit divide for positive values less than 2^32",
703799 .dependencies = &[_]*const Feature {
704800 },
......@@ -706,6 +802,7 @@ pub const feature_idivqToDivl = Feature{
706802
707803pub const feature_slowIncdec = Feature{
708804 .name = "slow-incdec",
805 .llvm_name = "slow-incdec",
709806 .description = "INC and DEC instructions are slower than ADD and SUB",
710807 .dependencies = &[_]*const Feature {
711808 },
......@@ -713,6 +810,7 @@ pub const feature_slowIncdec = Feature{
713810
714811pub const feature_slowLea = Feature{
715812 .name = "slow-lea",
813 .llvm_name = "slow-lea",
716814 .description = "LEA instruction with certain arguments is slow",
717815 .dependencies = &[_]*const Feature {
718816 },
......@@ -720,6 +818,7 @@ pub const feature_slowLea = Feature{
720818
721819pub const feature_slowPmaddwd = Feature{
722820 .name = "slow-pmaddwd",
821 .llvm_name = "slow-pmaddwd",
723822 .description = "PMADDWD is slower than PMULLD",
724823 .dependencies = &[_]*const Feature {
725824 },
......@@ -727,6 +826,7 @@ pub const feature_slowPmaddwd = Feature{
727826
728827pub const feature_slowPmulld = Feature{
729828 .name = "slow-pmulld",
829 .llvm_name = "slow-pmulld",
730830 .description = "PMULLD instruction is slow",
731831 .dependencies = &[_]*const Feature {
732832 },
......@@ -734,6 +834,7 @@ pub const feature_slowPmulld = Feature{
734834
735835pub const feature_slowShld = Feature{
736836 .name = "slow-shld",
837 .llvm_name = "slow-shld",
737838 .description = "SHLD instruction is slow",
738839 .dependencies = &[_]*const Feature {
739840 },
......@@ -741,6 +842,7 @@ pub const feature_slowShld = Feature{
741842
742843pub const feature_slowTwoMemOps = Feature{
743844 .name = "slow-two-mem-ops",
845 .llvm_name = "slow-two-mem-ops",
744846 .description = "Two memory operand instructions are slow",
745847 .dependencies = &[_]*const Feature {
746848 },
......@@ -748,6 +850,7 @@ pub const feature_slowTwoMemOps = Feature{
748850
749851pub const feature_slowUnalignedMem16 = Feature{
750852 .name = "slow-unaligned-mem-16",
853 .llvm_name = "slow-unaligned-mem-16",
751854 .description = "Slow unaligned 16-byte memory access",
752855 .dependencies = &[_]*const Feature {
753856 },
......@@ -755,6 +858,7 @@ pub const feature_slowUnalignedMem16 = Feature{
755858
756859pub const feature_slowUnalignedMem32 = Feature{
757860 .name = "slow-unaligned-mem-32",
861 .llvm_name = "slow-unaligned-mem-32",
758862 .description = "Slow unaligned 32-byte memory access",
759863 .dependencies = &[_]*const Feature {
760864 },
......@@ -762,6 +866,7 @@ pub const feature_slowUnalignedMem32 = Feature{
762866
763867pub const feature_softFloat = Feature{
764868 .name = "soft-float",
869 .llvm_name = "soft-float",
765870 .description = "Use software floating point features",
766871 .dependencies = &[_]*const Feature {
767872 },
......@@ -769,6 +874,7 @@ pub const feature_softFloat = Feature{
769874
770875pub const feature_tbm = Feature{
771876 .name = "tbm",
877 .llvm_name = "tbm",
772878 .description = "Enable TBM instructions",
773879 .dependencies = &[_]*const Feature {
774880 },
......@@ -776,6 +882,7 @@ pub const feature_tbm = Feature{
776882
777883pub const feature_useAa = Feature{
778884 .name = "use-aa",
885 .llvm_name = "use-aa",
779886 .description = "Use alias analysis during codegen",
780887 .dependencies = &[_]*const Feature {
781888 },
......@@ -783,6 +890,7 @@ pub const feature_useAa = Feature{
783890
784891pub const feature_vaes = Feature{
785892 .name = "vaes",
893 .llvm_name = "vaes",
786894 .description = "Promote selected AES instructions to AVX512/AVX registers",
787895 .dependencies = &[_]*const Feature {
788896 &feature_sse,
......@@ -791,6 +899,7 @@ pub const feature_vaes = Feature{
791899
792900pub const feature_avx512vbmi = Feature{
793901 .name = "avx512vbmi",
902 .llvm_name = "avx512vbmi",
794903 .description = "Enable AVX-512 Vector Byte Manipulation Instructions",
795904 .dependencies = &[_]*const Feature {
796905 &feature_sse,
......@@ -799,6 +908,7 @@ pub const feature_avx512vbmi = Feature{
799908
800909pub const feature_avx512vbmi2 = Feature{
801910 .name = "avx512vbmi2",
911 .llvm_name = "avx512vbmi2",
802912 .description = "Enable AVX-512 further Vector Byte Manipulation Instructions",
803913 .dependencies = &[_]*const Feature {
804914 &feature_sse,
......@@ -807,6 +917,7 @@ pub const feature_avx512vbmi2 = Feature{
807917
808918pub const feature_avx512vl = Feature{
809919 .name = "avx512vl",
920 .llvm_name = "avx512vl",
810921 .description = "Enable AVX-512 Vector Length eXtensions",
811922 .dependencies = &[_]*const Feature {
812923 &feature_sse,
......@@ -815,6 +926,7 @@ pub const feature_avx512vl = Feature{
815926
816927pub const feature_avx512vnni = Feature{
817928 .name = "avx512vnni",
929 .llvm_name = "avx512vnni",
818930 .description = "Enable AVX-512 Vector Neural Network Instructions",
819931 .dependencies = &[_]*const Feature {
820932 &feature_sse,
......@@ -823,6 +935,7 @@ pub const feature_avx512vnni = Feature{
823935
824936pub const feature_avx512vp2intersect = Feature{
825937 .name = "avx512vp2intersect",
938 .llvm_name = "avx512vp2intersect",
826939 .description = "Enable AVX-512 vp2intersect",
827940 .dependencies = &[_]*const Feature {
828941 &feature_sse,
......@@ -831,6 +944,7 @@ pub const feature_avx512vp2intersect = Feature{
831944
832945pub const feature_vpclmulqdq = Feature{
833946 .name = "vpclmulqdq",
947 .llvm_name = "vpclmulqdq",
834948 .description = "Enable vpclmulqdq instructions",
835949 .dependencies = &[_]*const Feature {
836950 &feature_sse,
......@@ -839,6 +953,7 @@ pub const feature_vpclmulqdq = Feature{
839953
840954pub const feature_avx512vpopcntdq = Feature{
841955 .name = "avx512vpopcntdq",
956 .llvm_name = "avx512vpopcntdq",
842957 .description = "Enable AVX-512 Population Count Instructions",
843958 .dependencies = &[_]*const Feature {
844959 &feature_sse,
......@@ -847,6 +962,7 @@ pub const feature_avx512vpopcntdq = Feature{
847962
848963pub const feature_waitpkg = Feature{
849964 .name = "waitpkg",
965 .llvm_name = "waitpkg",
850966 .description = "Wait and pause enhancements",
851967 .dependencies = &[_]*const Feature {
852968 },
......@@ -854,6 +970,7 @@ pub const feature_waitpkg = Feature{
854970
855971pub const feature_wbnoinvd = Feature{
856972 .name = "wbnoinvd",
973 .llvm_name = "wbnoinvd",
857974 .description = "Write Back No Invalidate",
858975 .dependencies = &[_]*const Feature {
859976 },
......@@ -861,6 +978,7 @@ pub const feature_wbnoinvd = Feature{
861978
862979pub const feature_x87 = Feature{
863980 .name = "x87",
981 .llvm_name = "x87",
864982 .description = "Enable X87 float instructions",
865983 .dependencies = &[_]*const Feature {
866984 },
......@@ -868,6 +986,7 @@ pub const feature_x87 = Feature{
868986
869987pub const feature_xop = Feature{
870988 .name = "xop",
989 .llvm_name = "xop",
871990 .description = "Enable XOP instructions",
872991 .dependencies = &[_]*const Feature {
873992 &feature_sse,
......@@ -876,6 +995,7 @@ pub const feature_xop = Feature{
876995
877996pub const feature_xsave = Feature{
878997 .name = "xsave",
998 .llvm_name = "xsave",
879999 .description = "Support xsave instructions",
8801000 .dependencies = &[_]*const Feature {
8811001 },
......@@ -883,6 +1003,7 @@ pub const feature_xsave = Feature{
8831003
8841004pub const feature_xsavec = Feature{
8851005 .name = "xsavec",
1006 .llvm_name = "xsavec",
8861007 .description = "Support xsavec instructions",
8871008 .dependencies = &[_]*const Feature {
8881009 },
......@@ -890,6 +1011,7 @@ pub const feature_xsavec = Feature{
8901011
8911012pub const feature_xsaveopt = Feature{
8921013 .name = "xsaveopt",
1014 .llvm_name = "xsaveopt",
8931015 .description = "Support xsaveopt instructions",
8941016 .dependencies = &[_]*const Feature {
8951017 },
......@@ -897,6 +1019,7 @@ pub const feature_xsaveopt = Feature{
8971019
8981020pub const feature_xsaves = Feature{
8991021 .name = "xsaves",
1022 .llvm_name = "xsaves",
9001023 .description = "Support xsaves instructions",
9011024 .dependencies = &[_]*const Feature {
9021025 },
......@@ -904,6 +1027,7 @@ pub const feature_xsaves = Feature{
9041027
9051028pub const feature_bitMode16 = Feature{
9061029 .name = "16bit-mode",
1030 .llvm_name = "16bit-mode",
9071031 .description = "16-bit mode (i8086)",
9081032 .dependencies = &[_]*const Feature {
9091033 },
......@@ -911,6 +1035,7 @@ pub const feature_bitMode16 = Feature{
9111035
9121036pub const feature_bitMode32 = Feature{
9131037 .name = "32bit-mode",
1038 .llvm_name = "32bit-mode",
9141039 .description = "32-bit mode (80386)",
9151040 .dependencies = &[_]*const Feature {
9161041 },
......@@ -918,6 +1043,7 @@ pub const feature_bitMode32 = Feature{
9181043
9191044pub const feature_bitMode64 = Feature{
9201045 .name = "64bit-mode",
1046 .llvm_name = "64bit-mode",
9211047 .description = "64-bit mode (x86_64)",
9221048 .dependencies = &[_]*const Feature {
9231049 },