master
1//! This file is auto-generated by tools/update_cpu_features.zig.
2
3const std = @import("../std.zig");
4const CpuFeature = std.Target.Cpu.Feature;
5const CpuModel = std.Target.Cpu.Model;
6
7pub const Feature = enum {
8 addsubiw,
9 avr0,
10 avr1,
11 avr2,
12 avr25,
13 avr3,
14 avr31,
15 avr35,
16 avr4,
17 avr5,
18 avr51,
19 avr6,
20 avrtiny,
21 @"break",
22 des,
23 eijmpcall,
24 elpm,
25 elpmx,
26 ijmpcall,
27 jmpcall,
28 lowbytefirst,
29 lpm,
30 lpmx,
31 memmappedregs,
32 movw,
33 mul,
34 rmw,
35 smallstack,
36 special,
37 spm,
38 spmx,
39 sram,
40 tinyencoding,
41 wrappingrjmp,
42 xmega,
43 xmega2,
44 xmega3,
45 xmega4,
46 xmegau,
47};
48
49pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
50pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
51pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
52pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
53
54pub const all_features = blk: {
55 const len = @typeInfo(Feature).@"enum".fields.len;
56 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
57 var result: [len]CpuFeature = undefined;
58 result[@intFromEnum(Feature.addsubiw)] = .{
59 .llvm_name = "addsubiw",
60 .description = "Enable 16-bit register-immediate addition and subtraction instructions",
61 .dependencies = featureSet(&[_]Feature{}),
62 };
63 result[@intFromEnum(Feature.avr0)] = .{
64 .llvm_name = "avr0",
65 .description = "The device is a part of the avr0 family",
66 .dependencies = featureSet(&[_]Feature{}),
67 };
68 result[@intFromEnum(Feature.avr1)] = .{
69 .llvm_name = "avr1",
70 .description = "The device is a part of the avr1 family",
71 .dependencies = featureSet(&[_]Feature{
72 .avr0,
73 .lpm,
74 .memmappedregs,
75 }),
76 };
77 result[@intFromEnum(Feature.avr2)] = .{
78 .llvm_name = "avr2",
79 .description = "The device is a part of the avr2 family",
80 .dependencies = featureSet(&[_]Feature{
81 .addsubiw,
82 .avr1,
83 .ijmpcall,
84 .sram,
85 }),
86 };
87 result[@intFromEnum(Feature.avr25)] = .{
88 .llvm_name = "avr25",
89 .description = "The device is a part of the avr25 family",
90 .dependencies = featureSet(&[_]Feature{
91 .avr2,
92 .@"break",
93 .lpmx,
94 .movw,
95 .spm,
96 }),
97 };
98 result[@intFromEnum(Feature.avr3)] = .{
99 .llvm_name = "avr3",
100 .description = "The device is a part of the avr3 family",
101 .dependencies = featureSet(&[_]Feature{
102 .avr2,
103 .jmpcall,
104 }),
105 };
106 result[@intFromEnum(Feature.avr31)] = .{
107 .llvm_name = "avr31",
108 .description = "The device is a part of the avr31 family",
109 .dependencies = featureSet(&[_]Feature{
110 .avr3,
111 .elpm,
112 }),
113 };
114 result[@intFromEnum(Feature.avr35)] = .{
115 .llvm_name = "avr35",
116 .description = "The device is a part of the avr35 family",
117 .dependencies = featureSet(&[_]Feature{
118 .avr3,
119 .@"break",
120 .lpmx,
121 .movw,
122 .spm,
123 }),
124 };
125 result[@intFromEnum(Feature.avr4)] = .{
126 .llvm_name = "avr4",
127 .description = "The device is a part of the avr4 family",
128 .dependencies = featureSet(&[_]Feature{
129 .avr2,
130 .@"break",
131 .lpmx,
132 .movw,
133 .mul,
134 .spm,
135 }),
136 };
137 result[@intFromEnum(Feature.avr5)] = .{
138 .llvm_name = "avr5",
139 .description = "The device is a part of the avr5 family",
140 .dependencies = featureSet(&[_]Feature{
141 .avr3,
142 .@"break",
143 .lpmx,
144 .movw,
145 .mul,
146 .spm,
147 }),
148 };
149 result[@intFromEnum(Feature.avr51)] = .{
150 .llvm_name = "avr51",
151 .description = "The device is a part of the avr51 family",
152 .dependencies = featureSet(&[_]Feature{
153 .avr5,
154 .elpm,
155 .elpmx,
156 }),
157 };
158 result[@intFromEnum(Feature.avr6)] = .{
159 .llvm_name = "avr6",
160 .description = "The device is a part of the avr6 family",
161 .dependencies = featureSet(&[_]Feature{
162 .avr51,
163 .eijmpcall,
164 }),
165 };
166 result[@intFromEnum(Feature.avrtiny)] = .{
167 .llvm_name = "avrtiny",
168 .description = "The device is a part of the avrtiny family",
169 .dependencies = featureSet(&[_]Feature{
170 .avr0,
171 .@"break",
172 .smallstack,
173 .sram,
174 .tinyencoding,
175 }),
176 };
177 result[@intFromEnum(Feature.@"break")] = .{
178 .llvm_name = "break",
179 .description = "The device supports the `BREAK` debugging instruction",
180 .dependencies = featureSet(&[_]Feature{}),
181 };
182 result[@intFromEnum(Feature.des)] = .{
183 .llvm_name = "des",
184 .description = "The device supports the `DES k` encryption instruction",
185 .dependencies = featureSet(&[_]Feature{}),
186 };
187 result[@intFromEnum(Feature.eijmpcall)] = .{
188 .llvm_name = "eijmpcall",
189 .description = "The device supports the `EIJMP`/`EICALL` instructions",
190 .dependencies = featureSet(&[_]Feature{}),
191 };
192 result[@intFromEnum(Feature.elpm)] = .{
193 .llvm_name = "elpm",
194 .description = "The device supports the ELPM instruction",
195 .dependencies = featureSet(&[_]Feature{}),
196 };
197 result[@intFromEnum(Feature.elpmx)] = .{
198 .llvm_name = "elpmx",
199 .description = "The device supports the `ELPM Rd, Z[+]` instructions",
200 .dependencies = featureSet(&[_]Feature{}),
201 };
202 result[@intFromEnum(Feature.ijmpcall)] = .{
203 .llvm_name = "ijmpcall",
204 .description = "The device supports `IJMP`/`ICALL`instructions",
205 .dependencies = featureSet(&[_]Feature{}),
206 };
207 result[@intFromEnum(Feature.jmpcall)] = .{
208 .llvm_name = "jmpcall",
209 .description = "The device supports the `JMP` and `CALL` instructions",
210 .dependencies = featureSet(&[_]Feature{}),
211 };
212 result[@intFromEnum(Feature.lowbytefirst)] = .{
213 .llvm_name = "lowbytefirst",
214 .description = "Do the low byte first when writing a 16-bit port or storing a 16-bit word",
215 .dependencies = featureSet(&[_]Feature{}),
216 };
217 result[@intFromEnum(Feature.lpm)] = .{
218 .llvm_name = "lpm",
219 .description = "The device supports the `LPM` instruction",
220 .dependencies = featureSet(&[_]Feature{}),
221 };
222 result[@intFromEnum(Feature.lpmx)] = .{
223 .llvm_name = "lpmx",
224 .description = "The device supports the `LPM Rd, Z[+]` instruction",
225 .dependencies = featureSet(&[_]Feature{}),
226 };
227 result[@intFromEnum(Feature.memmappedregs)] = .{
228 .llvm_name = "memmappedregs",
229 .description = "The device has CPU registers mapped in data address space",
230 .dependencies = featureSet(&[_]Feature{}),
231 };
232 result[@intFromEnum(Feature.movw)] = .{
233 .llvm_name = "movw",
234 .description = "The device supports the 16-bit MOVW instruction",
235 .dependencies = featureSet(&[_]Feature{}),
236 };
237 result[@intFromEnum(Feature.mul)] = .{
238 .llvm_name = "mul",
239 .description = "The device supports the multiplication instructions",
240 .dependencies = featureSet(&[_]Feature{}),
241 };
242 result[@intFromEnum(Feature.rmw)] = .{
243 .llvm_name = "rmw",
244 .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",
245 .dependencies = featureSet(&[_]Feature{}),
246 };
247 result[@intFromEnum(Feature.smallstack)] = .{
248 .llvm_name = "smallstack",
249 .description = "The device has an 8-bit stack pointer",
250 .dependencies = featureSet(&[_]Feature{}),
251 };
252 result[@intFromEnum(Feature.special)] = .{
253 .llvm_name = "special",
254 .description = "Enable use of the entire instruction set - used for debugging",
255 .dependencies = featureSet(&[_]Feature{
256 .addsubiw,
257 .@"break",
258 .des,
259 .eijmpcall,
260 .elpm,
261 .elpmx,
262 .ijmpcall,
263 .jmpcall,
264 .lpm,
265 .lpmx,
266 .memmappedregs,
267 .movw,
268 .mul,
269 .rmw,
270 .spm,
271 .spmx,
272 .sram,
273 }),
274 };
275 result[@intFromEnum(Feature.spm)] = .{
276 .llvm_name = "spm",
277 .description = "The device supports the `SPM` instruction",
278 .dependencies = featureSet(&[_]Feature{}),
279 };
280 result[@intFromEnum(Feature.spmx)] = .{
281 .llvm_name = "spmx",
282 .description = "The device supports the `SPM Z+` instruction",
283 .dependencies = featureSet(&[_]Feature{}),
284 };
285 result[@intFromEnum(Feature.sram)] = .{
286 .llvm_name = "sram",
287 .description = "The device has random access memory",
288 .dependencies = featureSet(&[_]Feature{}),
289 };
290 result[@intFromEnum(Feature.tinyencoding)] = .{
291 .llvm_name = "tinyencoding",
292 .description = "The device has Tiny core specific instruction encodings",
293 .dependencies = featureSet(&[_]Feature{}),
294 };
295 result[@intFromEnum(Feature.wrappingrjmp)] = .{
296 .llvm_name = "wrappingrjmp",
297 .description = "The device potentially requires emitting rjmp that wraps across the flash boundary",
298 .dependencies = featureSet(&[_]Feature{}),
299 };
300 result[@intFromEnum(Feature.xmega)] = .{
301 .llvm_name = "xmega",
302 .description = "The device is a part of the xmega family",
303 .dependencies = featureSet(&[_]Feature{
304 .addsubiw,
305 .avr0,
306 .@"break",
307 .des,
308 .eijmpcall,
309 .elpm,
310 .elpmx,
311 .ijmpcall,
312 .jmpcall,
313 .lowbytefirst,
314 .lpm,
315 .lpmx,
316 .movw,
317 .mul,
318 .spm,
319 .spmx,
320 .sram,
321 }),
322 };
323 result[@intFromEnum(Feature.xmega2)] = .{
324 .llvm_name = "xmega2",
325 .description = "The device is a part of the xmega2 family",
326 .dependencies = featureSet(&[_]Feature{
327 .addsubiw,
328 .avr0,
329 .@"break",
330 .ijmpcall,
331 .jmpcall,
332 .lowbytefirst,
333 .lpm,
334 .lpmx,
335 .movw,
336 .mul,
337 .spm,
338 .spmx,
339 .sram,
340 }),
341 };
342 result[@intFromEnum(Feature.xmega3)] = .{
343 .llvm_name = "xmega3",
344 .description = "The device is a part of the xmega3 family",
345 .dependencies = featureSet(&[_]Feature{
346 .addsubiw,
347 .avr0,
348 .@"break",
349 .ijmpcall,
350 .jmpcall,
351 .lowbytefirst,
352 .lpm,
353 .lpmx,
354 .movw,
355 .mul,
356 .sram,
357 }),
358 };
359 result[@intFromEnum(Feature.xmega4)] = .{
360 .llvm_name = "xmega4",
361 .description = "The device is a part of the xmega4 family",
362 .dependencies = featureSet(&[_]Feature{
363 .addsubiw,
364 .avr0,
365 .@"break",
366 .elpm,
367 .elpmx,
368 .ijmpcall,
369 .jmpcall,
370 .lowbytefirst,
371 .lpm,
372 .lpmx,
373 .movw,
374 .mul,
375 .spm,
376 .spmx,
377 .sram,
378 }),
379 };
380 result[@intFromEnum(Feature.xmegau)] = .{
381 .llvm_name = "xmegau",
382 .description = "The device is a part of the xmegau family",
383 .dependencies = featureSet(&[_]Feature{
384 .rmw,
385 .xmega,
386 }),
387 };
388 const ti = @typeInfo(Feature);
389 for (&result, 0..) |*elem, i| {
390 elem.index = i;
391 elem.name = ti.@"enum".fields[i].name;
392 }
393 break :blk result;
394};
395
396pub const cpu = struct {
397 pub const at43usb320: CpuModel = .{
398 .name = "at43usb320",
399 .llvm_name = "at43usb320",
400 .features = featureSet(&[_]Feature{
401 .avr31,
402 }),
403 };
404 pub const at43usb355: CpuModel = .{
405 .name = "at43usb355",
406 .llvm_name = "at43usb355",
407 .features = featureSet(&[_]Feature{
408 .avr3,
409 }),
410 };
411 pub const at76c711: CpuModel = .{
412 .name = "at76c711",
413 .llvm_name = "at76c711",
414 .features = featureSet(&[_]Feature{
415 .avr3,
416 }),
417 };
418 pub const at86rf401: CpuModel = .{
419 .name = "at86rf401",
420 .llvm_name = "at86rf401",
421 .features = featureSet(&[_]Feature{
422 .avr2,
423 .lpmx,
424 .movw,
425 }),
426 };
427 pub const at90c8534: CpuModel = .{
428 .name = "at90c8534",
429 .llvm_name = "at90c8534",
430 .features = featureSet(&[_]Feature{
431 .avr2,
432 .wrappingrjmp,
433 }),
434 };
435 pub const at90can128: CpuModel = .{
436 .name = "at90can128",
437 .llvm_name = "at90can128",
438 .features = featureSet(&[_]Feature{
439 .avr51,
440 }),
441 };
442 pub const at90can32: CpuModel = .{
443 .name = "at90can32",
444 .llvm_name = "at90can32",
445 .features = featureSet(&[_]Feature{
446 .avr5,
447 }),
448 };
449 pub const at90can64: CpuModel = .{
450 .name = "at90can64",
451 .llvm_name = "at90can64",
452 .features = featureSet(&[_]Feature{
453 .avr5,
454 }),
455 };
456 pub const at90pwm1: CpuModel = .{
457 .name = "at90pwm1",
458 .llvm_name = "at90pwm1",
459 .features = featureSet(&[_]Feature{
460 .avr4,
461 }),
462 };
463 pub const at90pwm161: CpuModel = .{
464 .name = "at90pwm161",
465 .llvm_name = "at90pwm161",
466 .features = featureSet(&[_]Feature{
467 .avr5,
468 }),
469 };
470 pub const at90pwm2: CpuModel = .{
471 .name = "at90pwm2",
472 .llvm_name = "at90pwm2",
473 .features = featureSet(&[_]Feature{
474 .avr4,
475 }),
476 };
477 pub const at90pwm216: CpuModel = .{
478 .name = "at90pwm216",
479 .llvm_name = "at90pwm216",
480 .features = featureSet(&[_]Feature{
481 .avr5,
482 }),
483 };
484 pub const at90pwm2b: CpuModel = .{
485 .name = "at90pwm2b",
486 .llvm_name = "at90pwm2b",
487 .features = featureSet(&[_]Feature{
488 .avr4,
489 }),
490 };
491 pub const at90pwm3: CpuModel = .{
492 .name = "at90pwm3",
493 .llvm_name = "at90pwm3",
494 .features = featureSet(&[_]Feature{
495 .avr4,
496 }),
497 };
498 pub const at90pwm316: CpuModel = .{
499 .name = "at90pwm316",
500 .llvm_name = "at90pwm316",
501 .features = featureSet(&[_]Feature{
502 .avr5,
503 }),
504 };
505 pub const at90pwm3b: CpuModel = .{
506 .name = "at90pwm3b",
507 .llvm_name = "at90pwm3b",
508 .features = featureSet(&[_]Feature{
509 .avr4,
510 }),
511 };
512 pub const at90pwm81: CpuModel = .{
513 .name = "at90pwm81",
514 .llvm_name = "at90pwm81",
515 .features = featureSet(&[_]Feature{
516 .avr4,
517 }),
518 };
519 pub const at90s1200: CpuModel = .{
520 .name = "at90s1200",
521 .llvm_name = "at90s1200",
522 .features = featureSet(&[_]Feature{
523 .avr0,
524 .smallstack,
525 }),
526 };
527 pub const at90s2313: CpuModel = .{
528 .name = "at90s2313",
529 .llvm_name = "at90s2313",
530 .features = featureSet(&[_]Feature{
531 .avr2,
532 .smallstack,
533 }),
534 };
535 pub const at90s2323: CpuModel = .{
536 .name = "at90s2323",
537 .llvm_name = "at90s2323",
538 .features = featureSet(&[_]Feature{
539 .avr2,
540 .smallstack,
541 }),
542 };
543 pub const at90s2333: CpuModel = .{
544 .name = "at90s2333",
545 .llvm_name = "at90s2333",
546 .features = featureSet(&[_]Feature{
547 .avr2,
548 .smallstack,
549 }),
550 };
551 pub const at90s2343: CpuModel = .{
552 .name = "at90s2343",
553 .llvm_name = "at90s2343",
554 .features = featureSet(&[_]Feature{
555 .avr2,
556 .smallstack,
557 }),
558 };
559 pub const at90s4414: CpuModel = .{
560 .name = "at90s4414",
561 .llvm_name = "at90s4414",
562 .features = featureSet(&[_]Feature{
563 .avr2,
564 .smallstack,
565 }),
566 };
567 pub const at90s4433: CpuModel = .{
568 .name = "at90s4433",
569 .llvm_name = "at90s4433",
570 .features = featureSet(&[_]Feature{
571 .avr2,
572 .smallstack,
573 }),
574 };
575 pub const at90s4434: CpuModel = .{
576 .name = "at90s4434",
577 .llvm_name = "at90s4434",
578 .features = featureSet(&[_]Feature{
579 .avr2,
580 .smallstack,
581 }),
582 };
583 pub const at90s8515: CpuModel = .{
584 .name = "at90s8515",
585 .llvm_name = "at90s8515",
586 .features = featureSet(&[_]Feature{
587 .avr2,
588 .wrappingrjmp,
589 }),
590 };
591 pub const at90s8535: CpuModel = .{
592 .name = "at90s8535",
593 .llvm_name = "at90s8535",
594 .features = featureSet(&[_]Feature{
595 .avr2,
596 .wrappingrjmp,
597 }),
598 };
599 pub const at90scr100: CpuModel = .{
600 .name = "at90scr100",
601 .llvm_name = "at90scr100",
602 .features = featureSet(&[_]Feature{
603 .avr5,
604 }),
605 };
606 pub const at90usb1286: CpuModel = .{
607 .name = "at90usb1286",
608 .llvm_name = "at90usb1286",
609 .features = featureSet(&[_]Feature{
610 .avr51,
611 }),
612 };
613 pub const at90usb1287: CpuModel = .{
614 .name = "at90usb1287",
615 .llvm_name = "at90usb1287",
616 .features = featureSet(&[_]Feature{
617 .avr51,
618 }),
619 };
620 pub const at90usb162: CpuModel = .{
621 .name = "at90usb162",
622 .llvm_name = "at90usb162",
623 .features = featureSet(&[_]Feature{
624 .avr35,
625 }),
626 };
627 pub const at90usb646: CpuModel = .{
628 .name = "at90usb646",
629 .llvm_name = "at90usb646",
630 .features = featureSet(&[_]Feature{
631 .avr5,
632 }),
633 };
634 pub const at90usb647: CpuModel = .{
635 .name = "at90usb647",
636 .llvm_name = "at90usb647",
637 .features = featureSet(&[_]Feature{
638 .avr5,
639 }),
640 };
641 pub const at90usb82: CpuModel = .{
642 .name = "at90usb82",
643 .llvm_name = "at90usb82",
644 .features = featureSet(&[_]Feature{
645 .avr35,
646 }),
647 };
648 pub const at94k: CpuModel = .{
649 .name = "at94k",
650 .llvm_name = "at94k",
651 .features = featureSet(&[_]Feature{
652 .avr3,
653 .lpmx,
654 .movw,
655 .mul,
656 }),
657 };
658 pub const ata5272: CpuModel = .{
659 .name = "ata5272",
660 .llvm_name = "ata5272",
661 .features = featureSet(&[_]Feature{
662 .avr25,
663 .wrappingrjmp,
664 }),
665 };
666 pub const ata5505: CpuModel = .{
667 .name = "ata5505",
668 .llvm_name = "ata5505",
669 .features = featureSet(&[_]Feature{
670 .avr35,
671 }),
672 };
673 pub const ata5702m322: CpuModel = .{
674 .name = "ata5702m322",
675 .llvm_name = "ata5702m322",
676 .features = featureSet(&[_]Feature{
677 .avr5,
678 }),
679 };
680 pub const ata5782: CpuModel = .{
681 .name = "ata5782",
682 .llvm_name = "ata5782",
683 .features = featureSet(&[_]Feature{
684 .avr5,
685 }),
686 };
687 pub const ata5790: CpuModel = .{
688 .name = "ata5790",
689 .llvm_name = "ata5790",
690 .features = featureSet(&[_]Feature{
691 .avr5,
692 }),
693 };
694 pub const ata5790n: CpuModel = .{
695 .name = "ata5790n",
696 .llvm_name = "ata5790n",
697 .features = featureSet(&[_]Feature{
698 .avr5,
699 }),
700 };
701 pub const ata5791: CpuModel = .{
702 .name = "ata5791",
703 .llvm_name = "ata5791",
704 .features = featureSet(&[_]Feature{
705 .avr5,
706 }),
707 };
708 pub const ata5795: CpuModel = .{
709 .name = "ata5795",
710 .llvm_name = "ata5795",
711 .features = featureSet(&[_]Feature{
712 .avr5,
713 }),
714 };
715 pub const ata5831: CpuModel = .{
716 .name = "ata5831",
717 .llvm_name = "ata5831",
718 .features = featureSet(&[_]Feature{
719 .avr5,
720 }),
721 };
722 pub const ata6285: CpuModel = .{
723 .name = "ata6285",
724 .llvm_name = "ata6285",
725 .features = featureSet(&[_]Feature{
726 .avr4,
727 .wrappingrjmp,
728 }),
729 };
730 pub const ata6286: CpuModel = .{
731 .name = "ata6286",
732 .llvm_name = "ata6286",
733 .features = featureSet(&[_]Feature{
734 .avr4,
735 }),
736 };
737 pub const ata6289: CpuModel = .{
738 .name = "ata6289",
739 .llvm_name = "ata6289",
740 .features = featureSet(&[_]Feature{
741 .avr4,
742 }),
743 };
744 pub const ata6612c: CpuModel = .{
745 .name = "ata6612c",
746 .llvm_name = "ata6612c",
747 .features = featureSet(&[_]Feature{
748 .avr4,
749 }),
750 };
751 pub const ata6613c: CpuModel = .{
752 .name = "ata6613c",
753 .llvm_name = "ata6613c",
754 .features = featureSet(&[_]Feature{
755 .avr5,
756 }),
757 };
758 pub const ata6614q: CpuModel = .{
759 .name = "ata6614q",
760 .llvm_name = "ata6614q",
761 .features = featureSet(&[_]Feature{
762 .avr5,
763 }),
764 };
765 pub const ata6616c: CpuModel = .{
766 .name = "ata6616c",
767 .llvm_name = "ata6616c",
768 .features = featureSet(&[_]Feature{
769 .avr25,
770 .wrappingrjmp,
771 }),
772 };
773 pub const ata6617c: CpuModel = .{
774 .name = "ata6617c",
775 .llvm_name = "ata6617c",
776 .features = featureSet(&[_]Feature{
777 .avr35,
778 }),
779 };
780 pub const ata664251: CpuModel = .{
781 .name = "ata664251",
782 .llvm_name = "ata664251",
783 .features = featureSet(&[_]Feature{
784 .avr35,
785 }),
786 };
787 pub const ata8210: CpuModel = .{
788 .name = "ata8210",
789 .llvm_name = "ata8210",
790 .features = featureSet(&[_]Feature{
791 .avr5,
792 }),
793 };
794 pub const ata8510: CpuModel = .{
795 .name = "ata8510",
796 .llvm_name = "ata8510",
797 .features = featureSet(&[_]Feature{
798 .avr5,
799 }),
800 };
801 pub const atmega103: CpuModel = .{
802 .name = "atmega103",
803 .llvm_name = "atmega103",
804 .features = featureSet(&[_]Feature{
805 .avr31,
806 }),
807 };
808 pub const atmega128: CpuModel = .{
809 .name = "atmega128",
810 .llvm_name = "atmega128",
811 .features = featureSet(&[_]Feature{
812 .avr51,
813 }),
814 };
815 pub const atmega1280: CpuModel = .{
816 .name = "atmega1280",
817 .llvm_name = "atmega1280",
818 .features = featureSet(&[_]Feature{
819 .avr51,
820 }),
821 };
822 pub const atmega1281: CpuModel = .{
823 .name = "atmega1281",
824 .llvm_name = "atmega1281",
825 .features = featureSet(&[_]Feature{
826 .avr51,
827 }),
828 };
829 pub const atmega1284: CpuModel = .{
830 .name = "atmega1284",
831 .llvm_name = "atmega1284",
832 .features = featureSet(&[_]Feature{
833 .avr51,
834 }),
835 };
836 pub const atmega1284p: CpuModel = .{
837 .name = "atmega1284p",
838 .llvm_name = "atmega1284p",
839 .features = featureSet(&[_]Feature{
840 .avr51,
841 }),
842 };
843 pub const atmega1284rfr2: CpuModel = .{
844 .name = "atmega1284rfr2",
845 .llvm_name = "atmega1284rfr2",
846 .features = featureSet(&[_]Feature{
847 .avr51,
848 }),
849 };
850 pub const atmega128a: CpuModel = .{
851 .name = "atmega128a",
852 .llvm_name = "atmega128a",
853 .features = featureSet(&[_]Feature{
854 .avr51,
855 }),
856 };
857 pub const atmega128rfa1: CpuModel = .{
858 .name = "atmega128rfa1",
859 .llvm_name = "atmega128rfa1",
860 .features = featureSet(&[_]Feature{
861 .avr51,
862 }),
863 };
864 pub const atmega128rfr2: CpuModel = .{
865 .name = "atmega128rfr2",
866 .llvm_name = "atmega128rfr2",
867 .features = featureSet(&[_]Feature{
868 .avr51,
869 }),
870 };
871 pub const atmega16: CpuModel = .{
872 .name = "atmega16",
873 .llvm_name = "atmega16",
874 .features = featureSet(&[_]Feature{
875 .avr5,
876 }),
877 };
878 pub const atmega1608: CpuModel = .{
879 .name = "atmega1608",
880 .llvm_name = "atmega1608",
881 .features = featureSet(&[_]Feature{
882 .xmega3,
883 }),
884 };
885 pub const atmega1609: CpuModel = .{
886 .name = "atmega1609",
887 .llvm_name = "atmega1609",
888 .features = featureSet(&[_]Feature{
889 .xmega3,
890 }),
891 };
892 pub const atmega161: CpuModel = .{
893 .name = "atmega161",
894 .llvm_name = "atmega161",
895 .features = featureSet(&[_]Feature{
896 .avr3,
897 .lpmx,
898 .movw,
899 .mul,
900 .spm,
901 }),
902 };
903 pub const atmega162: CpuModel = .{
904 .name = "atmega162",
905 .llvm_name = "atmega162",
906 .features = featureSet(&[_]Feature{
907 .avr5,
908 }),
909 };
910 pub const atmega163: CpuModel = .{
911 .name = "atmega163",
912 .llvm_name = "atmega163",
913 .features = featureSet(&[_]Feature{
914 .avr3,
915 .lpmx,
916 .movw,
917 .mul,
918 .spm,
919 }),
920 };
921 pub const atmega164a: CpuModel = .{
922 .name = "atmega164a",
923 .llvm_name = "atmega164a",
924 .features = featureSet(&[_]Feature{
925 .avr5,
926 }),
927 };
928 pub const atmega164p: CpuModel = .{
929 .name = "atmega164p",
930 .llvm_name = "atmega164p",
931 .features = featureSet(&[_]Feature{
932 .avr5,
933 }),
934 };
935 pub const atmega164pa: CpuModel = .{
936 .name = "atmega164pa",
937 .llvm_name = "atmega164pa",
938 .features = featureSet(&[_]Feature{
939 .avr5,
940 }),
941 };
942 pub const atmega165: CpuModel = .{
943 .name = "atmega165",
944 .llvm_name = "atmega165",
945 .features = featureSet(&[_]Feature{
946 .avr5,
947 }),
948 };
949 pub const atmega165a: CpuModel = .{
950 .name = "atmega165a",
951 .llvm_name = "atmega165a",
952 .features = featureSet(&[_]Feature{
953 .avr5,
954 }),
955 };
956 pub const atmega165p: CpuModel = .{
957 .name = "atmega165p",
958 .llvm_name = "atmega165p",
959 .features = featureSet(&[_]Feature{
960 .avr5,
961 }),
962 };
963 pub const atmega165pa: CpuModel = .{
964 .name = "atmega165pa",
965 .llvm_name = "atmega165pa",
966 .features = featureSet(&[_]Feature{
967 .avr5,
968 }),
969 };
970 pub const atmega168: CpuModel = .{
971 .name = "atmega168",
972 .llvm_name = "atmega168",
973 .features = featureSet(&[_]Feature{
974 .avr5,
975 }),
976 };
977 pub const atmega168a: CpuModel = .{
978 .name = "atmega168a",
979 .llvm_name = "atmega168a",
980 .features = featureSet(&[_]Feature{
981 .avr5,
982 }),
983 };
984 pub const atmega168p: CpuModel = .{
985 .name = "atmega168p",
986 .llvm_name = "atmega168p",
987 .features = featureSet(&[_]Feature{
988 .avr5,
989 }),
990 };
991 pub const atmega168pa: CpuModel = .{
992 .name = "atmega168pa",
993 .llvm_name = "atmega168pa",
994 .features = featureSet(&[_]Feature{
995 .avr5,
996 }),
997 };
998 pub const atmega168pb: CpuModel = .{
999 .name = "atmega168pb",
1000 .llvm_name = "atmega168pb",
1001 .features = featureSet(&[_]Feature{
1002 .avr5,
1003 }),
1004 };
1005 pub const atmega169: CpuModel = .{
1006 .name = "atmega169",
1007 .llvm_name = "atmega169",
1008 .features = featureSet(&[_]Feature{
1009 .avr5,
1010 }),
1011 };
1012 pub const atmega169a: CpuModel = .{
1013 .name = "atmega169a",
1014 .llvm_name = "atmega169a",
1015 .features = featureSet(&[_]Feature{
1016 .avr5,
1017 }),
1018 };
1019 pub const atmega169p: CpuModel = .{
1020 .name = "atmega169p",
1021 .llvm_name = "atmega169p",
1022 .features = featureSet(&[_]Feature{
1023 .avr5,
1024 }),
1025 };
1026 pub const atmega169pa: CpuModel = .{
1027 .name = "atmega169pa",
1028 .llvm_name = "atmega169pa",
1029 .features = featureSet(&[_]Feature{
1030 .avr5,
1031 }),
1032 };
1033 pub const atmega16a: CpuModel = .{
1034 .name = "atmega16a",
1035 .llvm_name = "atmega16a",
1036 .features = featureSet(&[_]Feature{
1037 .avr5,
1038 }),
1039 };
1040 pub const atmega16hva: CpuModel = .{
1041 .name = "atmega16hva",
1042 .llvm_name = "atmega16hva",
1043 .features = featureSet(&[_]Feature{
1044 .avr5,
1045 }),
1046 };
1047 pub const atmega16hva2: CpuModel = .{
1048 .name = "atmega16hva2",
1049 .llvm_name = "atmega16hva2",
1050 .features = featureSet(&[_]Feature{
1051 .avr5,
1052 }),
1053 };
1054 pub const atmega16hvb: CpuModel = .{
1055 .name = "atmega16hvb",
1056 .llvm_name = "atmega16hvb",
1057 .features = featureSet(&[_]Feature{
1058 .avr5,
1059 }),
1060 };
1061 pub const atmega16hvbrevb: CpuModel = .{
1062 .name = "atmega16hvbrevb",
1063 .llvm_name = "atmega16hvbrevb",
1064 .features = featureSet(&[_]Feature{
1065 .avr5,
1066 }),
1067 };
1068 pub const atmega16m1: CpuModel = .{
1069 .name = "atmega16m1",
1070 .llvm_name = "atmega16m1",
1071 .features = featureSet(&[_]Feature{
1072 .avr5,
1073 }),
1074 };
1075 pub const atmega16u2: CpuModel = .{
1076 .name = "atmega16u2",
1077 .llvm_name = "atmega16u2",
1078 .features = featureSet(&[_]Feature{
1079 .avr35,
1080 }),
1081 };
1082 pub const atmega16u4: CpuModel = .{
1083 .name = "atmega16u4",
1084 .llvm_name = "atmega16u4",
1085 .features = featureSet(&[_]Feature{
1086 .avr5,
1087 }),
1088 };
1089 pub const atmega2560: CpuModel = .{
1090 .name = "atmega2560",
1091 .llvm_name = "atmega2560",
1092 .features = featureSet(&[_]Feature{
1093 .avr6,
1094 }),
1095 };
1096 pub const atmega2561: CpuModel = .{
1097 .name = "atmega2561",
1098 .llvm_name = "atmega2561",
1099 .features = featureSet(&[_]Feature{
1100 .avr6,
1101 }),
1102 };
1103 pub const atmega2564rfr2: CpuModel = .{
1104 .name = "atmega2564rfr2",
1105 .llvm_name = "atmega2564rfr2",
1106 .features = featureSet(&[_]Feature{
1107 .avr6,
1108 }),
1109 };
1110 pub const atmega256rfr2: CpuModel = .{
1111 .name = "atmega256rfr2",
1112 .llvm_name = "atmega256rfr2",
1113 .features = featureSet(&[_]Feature{
1114 .avr6,
1115 }),
1116 };
1117 pub const atmega32: CpuModel = .{
1118 .name = "atmega32",
1119 .llvm_name = "atmega32",
1120 .features = featureSet(&[_]Feature{
1121 .avr5,
1122 }),
1123 };
1124 pub const atmega3208: CpuModel = .{
1125 .name = "atmega3208",
1126 .llvm_name = "atmega3208",
1127 .features = featureSet(&[_]Feature{
1128 .xmega3,
1129 }),
1130 };
1131 pub const atmega3209: CpuModel = .{
1132 .name = "atmega3209",
1133 .llvm_name = "atmega3209",
1134 .features = featureSet(&[_]Feature{
1135 .xmega3,
1136 }),
1137 };
1138 pub const atmega323: CpuModel = .{
1139 .name = "atmega323",
1140 .llvm_name = "atmega323",
1141 .features = featureSet(&[_]Feature{
1142 .avr5,
1143 }),
1144 };
1145 pub const atmega324a: CpuModel = .{
1146 .name = "atmega324a",
1147 .llvm_name = "atmega324a",
1148 .features = featureSet(&[_]Feature{
1149 .avr5,
1150 }),
1151 };
1152 pub const atmega324p: CpuModel = .{
1153 .name = "atmega324p",
1154 .llvm_name = "atmega324p",
1155 .features = featureSet(&[_]Feature{
1156 .avr5,
1157 }),
1158 };
1159 pub const atmega324pa: CpuModel = .{
1160 .name = "atmega324pa",
1161 .llvm_name = "atmega324pa",
1162 .features = featureSet(&[_]Feature{
1163 .avr5,
1164 }),
1165 };
1166 pub const atmega324pb: CpuModel = .{
1167 .name = "atmega324pb",
1168 .llvm_name = "atmega324pb",
1169 .features = featureSet(&[_]Feature{
1170 .avr5,
1171 }),
1172 };
1173 pub const atmega325: CpuModel = .{
1174 .name = "atmega325",
1175 .llvm_name = "atmega325",
1176 .features = featureSet(&[_]Feature{
1177 .avr5,
1178 }),
1179 };
1180 pub const atmega3250: CpuModel = .{
1181 .name = "atmega3250",
1182 .llvm_name = "atmega3250",
1183 .features = featureSet(&[_]Feature{
1184 .avr5,
1185 }),
1186 };
1187 pub const atmega3250a: CpuModel = .{
1188 .name = "atmega3250a",
1189 .llvm_name = "atmega3250a",
1190 .features = featureSet(&[_]Feature{
1191 .avr5,
1192 }),
1193 };
1194 pub const atmega3250p: CpuModel = .{
1195 .name = "atmega3250p",
1196 .llvm_name = "atmega3250p",
1197 .features = featureSet(&[_]Feature{
1198 .avr5,
1199 }),
1200 };
1201 pub const atmega3250pa: CpuModel = .{
1202 .name = "atmega3250pa",
1203 .llvm_name = "atmega3250pa",
1204 .features = featureSet(&[_]Feature{
1205 .avr5,
1206 }),
1207 };
1208 pub const atmega325a: CpuModel = .{
1209 .name = "atmega325a",
1210 .llvm_name = "atmega325a",
1211 .features = featureSet(&[_]Feature{
1212 .avr5,
1213 }),
1214 };
1215 pub const atmega325p: CpuModel = .{
1216 .name = "atmega325p",
1217 .llvm_name = "atmega325p",
1218 .features = featureSet(&[_]Feature{
1219 .avr5,
1220 }),
1221 };
1222 pub const atmega325pa: CpuModel = .{
1223 .name = "atmega325pa",
1224 .llvm_name = "atmega325pa",
1225 .features = featureSet(&[_]Feature{
1226 .avr5,
1227 }),
1228 };
1229 pub const atmega328: CpuModel = .{
1230 .name = "atmega328",
1231 .llvm_name = "atmega328",
1232 .features = featureSet(&[_]Feature{
1233 .avr5,
1234 }),
1235 };
1236 pub const atmega328p: CpuModel = .{
1237 .name = "atmega328p",
1238 .llvm_name = "atmega328p",
1239 .features = featureSet(&[_]Feature{
1240 .avr5,
1241 }),
1242 };
1243 pub const atmega328pb: CpuModel = .{
1244 .name = "atmega328pb",
1245 .llvm_name = "atmega328pb",
1246 .features = featureSet(&[_]Feature{
1247 .avr5,
1248 }),
1249 };
1250 pub const atmega329: CpuModel = .{
1251 .name = "atmega329",
1252 .llvm_name = "atmega329",
1253 .features = featureSet(&[_]Feature{
1254 .avr5,
1255 }),
1256 };
1257 pub const atmega3290: CpuModel = .{
1258 .name = "atmega3290",
1259 .llvm_name = "atmega3290",
1260 .features = featureSet(&[_]Feature{
1261 .avr5,
1262 }),
1263 };
1264 pub const atmega3290a: CpuModel = .{
1265 .name = "atmega3290a",
1266 .llvm_name = "atmega3290a",
1267 .features = featureSet(&[_]Feature{
1268 .avr5,
1269 }),
1270 };
1271 pub const atmega3290p: CpuModel = .{
1272 .name = "atmega3290p",
1273 .llvm_name = "atmega3290p",
1274 .features = featureSet(&[_]Feature{
1275 .avr5,
1276 }),
1277 };
1278 pub const atmega3290pa: CpuModel = .{
1279 .name = "atmega3290pa",
1280 .llvm_name = "atmega3290pa",
1281 .features = featureSet(&[_]Feature{
1282 .avr5,
1283 }),
1284 };
1285 pub const atmega329a: CpuModel = .{
1286 .name = "atmega329a",
1287 .llvm_name = "atmega329a",
1288 .features = featureSet(&[_]Feature{
1289 .avr5,
1290 }),
1291 };
1292 pub const atmega329p: CpuModel = .{
1293 .name = "atmega329p",
1294 .llvm_name = "atmega329p",
1295 .features = featureSet(&[_]Feature{
1296 .avr5,
1297 }),
1298 };
1299 pub const atmega329pa: CpuModel = .{
1300 .name = "atmega329pa",
1301 .llvm_name = "atmega329pa",
1302 .features = featureSet(&[_]Feature{
1303 .avr5,
1304 }),
1305 };
1306 pub const atmega32a: CpuModel = .{
1307 .name = "atmega32a",
1308 .llvm_name = "atmega32a",
1309 .features = featureSet(&[_]Feature{
1310 .avr5,
1311 }),
1312 };
1313 pub const atmega32c1: CpuModel = .{
1314 .name = "atmega32c1",
1315 .llvm_name = "atmega32c1",
1316 .features = featureSet(&[_]Feature{
1317 .avr5,
1318 }),
1319 };
1320 pub const atmega32hvb: CpuModel = .{
1321 .name = "atmega32hvb",
1322 .llvm_name = "atmega32hvb",
1323 .features = featureSet(&[_]Feature{
1324 .avr5,
1325 }),
1326 };
1327 pub const atmega32hvbrevb: CpuModel = .{
1328 .name = "atmega32hvbrevb",
1329 .llvm_name = "atmega32hvbrevb",
1330 .features = featureSet(&[_]Feature{
1331 .avr5,
1332 }),
1333 };
1334 pub const atmega32m1: CpuModel = .{
1335 .name = "atmega32m1",
1336 .llvm_name = "atmega32m1",
1337 .features = featureSet(&[_]Feature{
1338 .avr5,
1339 }),
1340 };
1341 pub const atmega32u2: CpuModel = .{
1342 .name = "atmega32u2",
1343 .llvm_name = "atmega32u2",
1344 .features = featureSet(&[_]Feature{
1345 .avr35,
1346 }),
1347 };
1348 pub const atmega32u4: CpuModel = .{
1349 .name = "atmega32u4",
1350 .llvm_name = "atmega32u4",
1351 .features = featureSet(&[_]Feature{
1352 .avr5,
1353 }),
1354 };
1355 pub const atmega32u6: CpuModel = .{
1356 .name = "atmega32u6",
1357 .llvm_name = "atmega32u6",
1358 .features = featureSet(&[_]Feature{
1359 .avr5,
1360 }),
1361 };
1362 pub const atmega406: CpuModel = .{
1363 .name = "atmega406",
1364 .llvm_name = "atmega406",
1365 .features = featureSet(&[_]Feature{
1366 .avr5,
1367 }),
1368 };
1369 pub const atmega48: CpuModel = .{
1370 .name = "atmega48",
1371 .llvm_name = "atmega48",
1372 .features = featureSet(&[_]Feature{
1373 .avr4,
1374 }),
1375 };
1376 pub const atmega4808: CpuModel = .{
1377 .name = "atmega4808",
1378 .llvm_name = "atmega4808",
1379 .features = featureSet(&[_]Feature{
1380 .xmega3,
1381 }),
1382 };
1383 pub const atmega4809: CpuModel = .{
1384 .name = "atmega4809",
1385 .llvm_name = "atmega4809",
1386 .features = featureSet(&[_]Feature{
1387 .xmega3,
1388 }),
1389 };
1390 pub const atmega48a: CpuModel = .{
1391 .name = "atmega48a",
1392 .llvm_name = "atmega48a",
1393 .features = featureSet(&[_]Feature{
1394 .avr4,
1395 }),
1396 };
1397 pub const atmega48p: CpuModel = .{
1398 .name = "atmega48p",
1399 .llvm_name = "atmega48p",
1400 .features = featureSet(&[_]Feature{
1401 .avr4,
1402 }),
1403 };
1404 pub const atmega48pa: CpuModel = .{
1405 .name = "atmega48pa",
1406 .llvm_name = "atmega48pa",
1407 .features = featureSet(&[_]Feature{
1408 .avr4,
1409 }),
1410 };
1411 pub const atmega48pb: CpuModel = .{
1412 .name = "atmega48pb",
1413 .llvm_name = "atmega48pb",
1414 .features = featureSet(&[_]Feature{
1415 .avr4,
1416 }),
1417 };
1418 pub const atmega64: CpuModel = .{
1419 .name = "atmega64",
1420 .llvm_name = "atmega64",
1421 .features = featureSet(&[_]Feature{
1422 .avr5,
1423 }),
1424 };
1425 pub const atmega640: CpuModel = .{
1426 .name = "atmega640",
1427 .llvm_name = "atmega640",
1428 .features = featureSet(&[_]Feature{
1429 .avr5,
1430 }),
1431 };
1432 pub const atmega644: CpuModel = .{
1433 .name = "atmega644",
1434 .llvm_name = "atmega644",
1435 .features = featureSet(&[_]Feature{
1436 .avr5,
1437 }),
1438 };
1439 pub const atmega644a: CpuModel = .{
1440 .name = "atmega644a",
1441 .llvm_name = "atmega644a",
1442 .features = featureSet(&[_]Feature{
1443 .avr5,
1444 }),
1445 };
1446 pub const atmega644p: CpuModel = .{
1447 .name = "atmega644p",
1448 .llvm_name = "atmega644p",
1449 .features = featureSet(&[_]Feature{
1450 .avr5,
1451 }),
1452 };
1453 pub const atmega644pa: CpuModel = .{
1454 .name = "atmega644pa",
1455 .llvm_name = "atmega644pa",
1456 .features = featureSet(&[_]Feature{
1457 .avr5,
1458 }),
1459 };
1460 pub const atmega644rfr2: CpuModel = .{
1461 .name = "atmega644rfr2",
1462 .llvm_name = "atmega644rfr2",
1463 .features = featureSet(&[_]Feature{
1464 .avr5,
1465 }),
1466 };
1467 pub const atmega645: CpuModel = .{
1468 .name = "atmega645",
1469 .llvm_name = "atmega645",
1470 .features = featureSet(&[_]Feature{
1471 .avr5,
1472 }),
1473 };
1474 pub const atmega6450: CpuModel = .{
1475 .name = "atmega6450",
1476 .llvm_name = "atmega6450",
1477 .features = featureSet(&[_]Feature{
1478 .avr5,
1479 }),
1480 };
1481 pub const atmega6450a: CpuModel = .{
1482 .name = "atmega6450a",
1483 .llvm_name = "atmega6450a",
1484 .features = featureSet(&[_]Feature{
1485 .avr5,
1486 }),
1487 };
1488 pub const atmega6450p: CpuModel = .{
1489 .name = "atmega6450p",
1490 .llvm_name = "atmega6450p",
1491 .features = featureSet(&[_]Feature{
1492 .avr5,
1493 }),
1494 };
1495 pub const atmega645a: CpuModel = .{
1496 .name = "atmega645a",
1497 .llvm_name = "atmega645a",
1498 .features = featureSet(&[_]Feature{
1499 .avr5,
1500 }),
1501 };
1502 pub const atmega645p: CpuModel = .{
1503 .name = "atmega645p",
1504 .llvm_name = "atmega645p",
1505 .features = featureSet(&[_]Feature{
1506 .avr5,
1507 }),
1508 };
1509 pub const atmega649: CpuModel = .{
1510 .name = "atmega649",
1511 .llvm_name = "atmega649",
1512 .features = featureSet(&[_]Feature{
1513 .avr5,
1514 }),
1515 };
1516 pub const atmega6490: CpuModel = .{
1517 .name = "atmega6490",
1518 .llvm_name = "atmega6490",
1519 .features = featureSet(&[_]Feature{
1520 .avr5,
1521 }),
1522 };
1523 pub const atmega6490a: CpuModel = .{
1524 .name = "atmega6490a",
1525 .llvm_name = "atmega6490a",
1526 .features = featureSet(&[_]Feature{
1527 .avr5,
1528 }),
1529 };
1530 pub const atmega6490p: CpuModel = .{
1531 .name = "atmega6490p",
1532 .llvm_name = "atmega6490p",
1533 .features = featureSet(&[_]Feature{
1534 .avr5,
1535 }),
1536 };
1537 pub const atmega649a: CpuModel = .{
1538 .name = "atmega649a",
1539 .llvm_name = "atmega649a",
1540 .features = featureSet(&[_]Feature{
1541 .avr5,
1542 }),
1543 };
1544 pub const atmega649p: CpuModel = .{
1545 .name = "atmega649p",
1546 .llvm_name = "atmega649p",
1547 .features = featureSet(&[_]Feature{
1548 .avr5,
1549 }),
1550 };
1551 pub const atmega64a: CpuModel = .{
1552 .name = "atmega64a",
1553 .llvm_name = "atmega64a",
1554 .features = featureSet(&[_]Feature{
1555 .avr5,
1556 }),
1557 };
1558 pub const atmega64c1: CpuModel = .{
1559 .name = "atmega64c1",
1560 .llvm_name = "atmega64c1",
1561 .features = featureSet(&[_]Feature{
1562 .avr5,
1563 }),
1564 };
1565 pub const atmega64hve: CpuModel = .{
1566 .name = "atmega64hve",
1567 .llvm_name = "atmega64hve",
1568 .features = featureSet(&[_]Feature{
1569 .avr5,
1570 }),
1571 };
1572 pub const atmega64hve2: CpuModel = .{
1573 .name = "atmega64hve2",
1574 .llvm_name = "atmega64hve2",
1575 .features = featureSet(&[_]Feature{
1576 .avr5,
1577 }),
1578 };
1579 pub const atmega64m1: CpuModel = .{
1580 .name = "atmega64m1",
1581 .llvm_name = "atmega64m1",
1582 .features = featureSet(&[_]Feature{
1583 .avr5,
1584 }),
1585 };
1586 pub const atmega64rfr2: CpuModel = .{
1587 .name = "atmega64rfr2",
1588 .llvm_name = "atmega64rfr2",
1589 .features = featureSet(&[_]Feature{
1590 .avr5,
1591 }),
1592 };
1593 pub const atmega8: CpuModel = .{
1594 .name = "atmega8",
1595 .llvm_name = "atmega8",
1596 .features = featureSet(&[_]Feature{
1597 .avr2,
1598 .lpmx,
1599 .movw,
1600 .mul,
1601 .spm,
1602 .wrappingrjmp,
1603 }),
1604 };
1605 pub const atmega808: CpuModel = .{
1606 .name = "atmega808",
1607 .llvm_name = "atmega808",
1608 .features = featureSet(&[_]Feature{
1609 .xmega3,
1610 }),
1611 };
1612 pub const atmega809: CpuModel = .{
1613 .name = "atmega809",
1614 .llvm_name = "atmega809",
1615 .features = featureSet(&[_]Feature{
1616 .xmega3,
1617 }),
1618 };
1619 pub const atmega8515: CpuModel = .{
1620 .name = "atmega8515",
1621 .llvm_name = "atmega8515",
1622 .features = featureSet(&[_]Feature{
1623 .avr2,
1624 .lpmx,
1625 .movw,
1626 .mul,
1627 .spm,
1628 .wrappingrjmp,
1629 }),
1630 };
1631 pub const atmega8535: CpuModel = .{
1632 .name = "atmega8535",
1633 .llvm_name = "atmega8535",
1634 .features = featureSet(&[_]Feature{
1635 .avr2,
1636 .lpmx,
1637 .movw,
1638 .mul,
1639 .spm,
1640 .wrappingrjmp,
1641 }),
1642 };
1643 pub const atmega88: CpuModel = .{
1644 .name = "atmega88",
1645 .llvm_name = "atmega88",
1646 .features = featureSet(&[_]Feature{
1647 .avr4,
1648 }),
1649 };
1650 pub const atmega88a: CpuModel = .{
1651 .name = "atmega88a",
1652 .llvm_name = "atmega88a",
1653 .features = featureSet(&[_]Feature{
1654 .avr4,
1655 }),
1656 };
1657 pub const atmega88p: CpuModel = .{
1658 .name = "atmega88p",
1659 .llvm_name = "atmega88p",
1660 .features = featureSet(&[_]Feature{
1661 .avr4,
1662 }),
1663 };
1664 pub const atmega88pa: CpuModel = .{
1665 .name = "atmega88pa",
1666 .llvm_name = "atmega88pa",
1667 .features = featureSet(&[_]Feature{
1668 .avr4,
1669 }),
1670 };
1671 pub const atmega88pb: CpuModel = .{
1672 .name = "atmega88pb",
1673 .llvm_name = "atmega88pb",
1674 .features = featureSet(&[_]Feature{
1675 .avr4,
1676 }),
1677 };
1678 pub const atmega8a: CpuModel = .{
1679 .name = "atmega8a",
1680 .llvm_name = "atmega8a",
1681 .features = featureSet(&[_]Feature{
1682 .avr2,
1683 .lpmx,
1684 .movw,
1685 .mul,
1686 .spm,
1687 .wrappingrjmp,
1688 }),
1689 };
1690 pub const atmega8hva: CpuModel = .{
1691 .name = "atmega8hva",
1692 .llvm_name = "atmega8hva",
1693 .features = featureSet(&[_]Feature{
1694 .avr4,
1695 }),
1696 };
1697 pub const atmega8u2: CpuModel = .{
1698 .name = "atmega8u2",
1699 .llvm_name = "atmega8u2",
1700 .features = featureSet(&[_]Feature{
1701 .avr35,
1702 }),
1703 };
1704 pub const attiny10: CpuModel = .{
1705 .name = "attiny10",
1706 .llvm_name = "attiny10",
1707 .features = featureSet(&[_]Feature{
1708 .avrtiny,
1709 }),
1710 };
1711 pub const attiny102: CpuModel = .{
1712 .name = "attiny102",
1713 .llvm_name = "attiny102",
1714 .features = featureSet(&[_]Feature{
1715 .avrtiny,
1716 }),
1717 };
1718 pub const attiny104: CpuModel = .{
1719 .name = "attiny104",
1720 .llvm_name = "attiny104",
1721 .features = featureSet(&[_]Feature{
1722 .avrtiny,
1723 }),
1724 };
1725 pub const attiny11: CpuModel = .{
1726 .name = "attiny11",
1727 .llvm_name = "attiny11",
1728 .features = featureSet(&[_]Feature{
1729 .avr1,
1730 .smallstack,
1731 }),
1732 };
1733 pub const attiny12: CpuModel = .{
1734 .name = "attiny12",
1735 .llvm_name = "attiny12",
1736 .features = featureSet(&[_]Feature{
1737 .avr1,
1738 .smallstack,
1739 }),
1740 };
1741 pub const attiny13: CpuModel = .{
1742 .name = "attiny13",
1743 .llvm_name = "attiny13",
1744 .features = featureSet(&[_]Feature{
1745 .avr25,
1746 .smallstack,
1747 }),
1748 };
1749 pub const attiny13a: CpuModel = .{
1750 .name = "attiny13a",
1751 .llvm_name = "attiny13a",
1752 .features = featureSet(&[_]Feature{
1753 .avr25,
1754 .smallstack,
1755 }),
1756 };
1757 pub const attiny15: CpuModel = .{
1758 .name = "attiny15",
1759 .llvm_name = "attiny15",
1760 .features = featureSet(&[_]Feature{
1761 .avr1,
1762 .smallstack,
1763 }),
1764 };
1765 pub const attiny1604: CpuModel = .{
1766 .name = "attiny1604",
1767 .llvm_name = "attiny1604",
1768 .features = featureSet(&[_]Feature{
1769 .xmega3,
1770 }),
1771 };
1772 pub const attiny1606: CpuModel = .{
1773 .name = "attiny1606",
1774 .llvm_name = "attiny1606",
1775 .features = featureSet(&[_]Feature{
1776 .xmega3,
1777 }),
1778 };
1779 pub const attiny1607: CpuModel = .{
1780 .name = "attiny1607",
1781 .llvm_name = "attiny1607",
1782 .features = featureSet(&[_]Feature{
1783 .xmega3,
1784 }),
1785 };
1786 pub const attiny1614: CpuModel = .{
1787 .name = "attiny1614",
1788 .llvm_name = "attiny1614",
1789 .features = featureSet(&[_]Feature{
1790 .xmega3,
1791 }),
1792 };
1793 pub const attiny1616: CpuModel = .{
1794 .name = "attiny1616",
1795 .llvm_name = "attiny1616",
1796 .features = featureSet(&[_]Feature{
1797 .xmega3,
1798 }),
1799 };
1800 pub const attiny1617: CpuModel = .{
1801 .name = "attiny1617",
1802 .llvm_name = "attiny1617",
1803 .features = featureSet(&[_]Feature{
1804 .xmega3,
1805 }),
1806 };
1807 pub const attiny1624: CpuModel = .{
1808 .name = "attiny1624",
1809 .llvm_name = "attiny1624",
1810 .features = featureSet(&[_]Feature{
1811 .xmega3,
1812 }),
1813 };
1814 pub const attiny1626: CpuModel = .{
1815 .name = "attiny1626",
1816 .llvm_name = "attiny1626",
1817 .features = featureSet(&[_]Feature{
1818 .xmega3,
1819 }),
1820 };
1821 pub const attiny1627: CpuModel = .{
1822 .name = "attiny1627",
1823 .llvm_name = "attiny1627",
1824 .features = featureSet(&[_]Feature{
1825 .xmega3,
1826 }),
1827 };
1828 pub const attiny1634: CpuModel = .{
1829 .name = "attiny1634",
1830 .llvm_name = "attiny1634",
1831 .features = featureSet(&[_]Feature{
1832 .avr35,
1833 }),
1834 };
1835 pub const attiny167: CpuModel = .{
1836 .name = "attiny167",
1837 .llvm_name = "attiny167",
1838 .features = featureSet(&[_]Feature{
1839 .avr35,
1840 }),
1841 };
1842 pub const attiny20: CpuModel = .{
1843 .name = "attiny20",
1844 .llvm_name = "attiny20",
1845 .features = featureSet(&[_]Feature{
1846 .avrtiny,
1847 }),
1848 };
1849 pub const attiny202: CpuModel = .{
1850 .name = "attiny202",
1851 .llvm_name = "attiny202",
1852 .features = featureSet(&[_]Feature{
1853 .xmega3,
1854 }),
1855 };
1856 pub const attiny204: CpuModel = .{
1857 .name = "attiny204",
1858 .llvm_name = "attiny204",
1859 .features = featureSet(&[_]Feature{
1860 .xmega3,
1861 }),
1862 };
1863 pub const attiny212: CpuModel = .{
1864 .name = "attiny212",
1865 .llvm_name = "attiny212",
1866 .features = featureSet(&[_]Feature{
1867 .xmega3,
1868 }),
1869 };
1870 pub const attiny214: CpuModel = .{
1871 .name = "attiny214",
1872 .llvm_name = "attiny214",
1873 .features = featureSet(&[_]Feature{
1874 .xmega3,
1875 }),
1876 };
1877 pub const attiny22: CpuModel = .{
1878 .name = "attiny22",
1879 .llvm_name = "attiny22",
1880 .features = featureSet(&[_]Feature{
1881 .avr2,
1882 .smallstack,
1883 }),
1884 };
1885 pub const attiny2313: CpuModel = .{
1886 .name = "attiny2313",
1887 .llvm_name = "attiny2313",
1888 .features = featureSet(&[_]Feature{
1889 .avr25,
1890 .smallstack,
1891 }),
1892 };
1893 pub const attiny2313a: CpuModel = .{
1894 .name = "attiny2313a",
1895 .llvm_name = "attiny2313a",
1896 .features = featureSet(&[_]Feature{
1897 .avr25,
1898 .smallstack,
1899 }),
1900 };
1901 pub const attiny24: CpuModel = .{
1902 .name = "attiny24",
1903 .llvm_name = "attiny24",
1904 .features = featureSet(&[_]Feature{
1905 .avr25,
1906 .smallstack,
1907 }),
1908 };
1909 pub const attiny24a: CpuModel = .{
1910 .name = "attiny24a",
1911 .llvm_name = "attiny24a",
1912 .features = featureSet(&[_]Feature{
1913 .avr25,
1914 .smallstack,
1915 }),
1916 };
1917 pub const attiny25: CpuModel = .{
1918 .name = "attiny25",
1919 .llvm_name = "attiny25",
1920 .features = featureSet(&[_]Feature{
1921 .avr25,
1922 .smallstack,
1923 }),
1924 };
1925 pub const attiny26: CpuModel = .{
1926 .name = "attiny26",
1927 .llvm_name = "attiny26",
1928 .features = featureSet(&[_]Feature{
1929 .avr2,
1930 .lpmx,
1931 .smallstack,
1932 }),
1933 };
1934 pub const attiny261: CpuModel = .{
1935 .name = "attiny261",
1936 .llvm_name = "attiny261",
1937 .features = featureSet(&[_]Feature{
1938 .avr25,
1939 .smallstack,
1940 }),
1941 };
1942 pub const attiny261a: CpuModel = .{
1943 .name = "attiny261a",
1944 .llvm_name = "attiny261a",
1945 .features = featureSet(&[_]Feature{
1946 .avr25,
1947 .smallstack,
1948 }),
1949 };
1950 pub const attiny28: CpuModel = .{
1951 .name = "attiny28",
1952 .llvm_name = "attiny28",
1953 .features = featureSet(&[_]Feature{
1954 .avr1,
1955 .smallstack,
1956 }),
1957 };
1958 pub const attiny3216: CpuModel = .{
1959 .name = "attiny3216",
1960 .llvm_name = "attiny3216",
1961 .features = featureSet(&[_]Feature{
1962 .xmega3,
1963 }),
1964 };
1965 pub const attiny3217: CpuModel = .{
1966 .name = "attiny3217",
1967 .llvm_name = "attiny3217",
1968 .features = featureSet(&[_]Feature{
1969 .xmega3,
1970 }),
1971 };
1972 pub const attiny3224: CpuModel = .{
1973 .name = "attiny3224",
1974 .llvm_name = "attiny3224",
1975 .features = featureSet(&[_]Feature{
1976 .xmega3,
1977 }),
1978 };
1979 pub const attiny3226: CpuModel = .{
1980 .name = "attiny3226",
1981 .llvm_name = "attiny3226",
1982 .features = featureSet(&[_]Feature{
1983 .xmega3,
1984 }),
1985 };
1986 pub const attiny3227: CpuModel = .{
1987 .name = "attiny3227",
1988 .llvm_name = "attiny3227",
1989 .features = featureSet(&[_]Feature{
1990 .xmega3,
1991 }),
1992 };
1993 pub const attiny4: CpuModel = .{
1994 .name = "attiny4",
1995 .llvm_name = "attiny4",
1996 .features = featureSet(&[_]Feature{
1997 .avrtiny,
1998 }),
1999 };
2000 pub const attiny40: CpuModel = .{
2001 .name = "attiny40",
2002 .llvm_name = "attiny40",
2003 .features = featureSet(&[_]Feature{
2004 .avrtiny,
2005 }),
2006 };
2007 pub const attiny402: CpuModel = .{
2008 .name = "attiny402",
2009 .llvm_name = "attiny402",
2010 .features = featureSet(&[_]Feature{
2011 .xmega3,
2012 }),
2013 };
2014 pub const attiny404: CpuModel = .{
2015 .name = "attiny404",
2016 .llvm_name = "attiny404",
2017 .features = featureSet(&[_]Feature{
2018 .xmega3,
2019 }),
2020 };
2021 pub const attiny406: CpuModel = .{
2022 .name = "attiny406",
2023 .llvm_name = "attiny406",
2024 .features = featureSet(&[_]Feature{
2025 .xmega3,
2026 }),
2027 };
2028 pub const attiny412: CpuModel = .{
2029 .name = "attiny412",
2030 .llvm_name = "attiny412",
2031 .features = featureSet(&[_]Feature{
2032 .xmega3,
2033 }),
2034 };
2035 pub const attiny414: CpuModel = .{
2036 .name = "attiny414",
2037 .llvm_name = "attiny414",
2038 .features = featureSet(&[_]Feature{
2039 .xmega3,
2040 }),
2041 };
2042 pub const attiny416: CpuModel = .{
2043 .name = "attiny416",
2044 .llvm_name = "attiny416",
2045 .features = featureSet(&[_]Feature{
2046 .xmega3,
2047 }),
2048 };
2049 pub const attiny417: CpuModel = .{
2050 .name = "attiny417",
2051 .llvm_name = "attiny417",
2052 .features = featureSet(&[_]Feature{
2053 .xmega3,
2054 }),
2055 };
2056 pub const attiny4313: CpuModel = .{
2057 .name = "attiny4313",
2058 .llvm_name = "attiny4313",
2059 .features = featureSet(&[_]Feature{
2060 .avr25,
2061 }),
2062 };
2063 pub const attiny43u: CpuModel = .{
2064 .name = "attiny43u",
2065 .llvm_name = "attiny43u",
2066 .features = featureSet(&[_]Feature{
2067 .avr25,
2068 }),
2069 };
2070 pub const attiny44: CpuModel = .{
2071 .name = "attiny44",
2072 .llvm_name = "attiny44",
2073 .features = featureSet(&[_]Feature{
2074 .avr25,
2075 }),
2076 };
2077 pub const attiny441: CpuModel = .{
2078 .name = "attiny441",
2079 .llvm_name = "attiny441",
2080 .features = featureSet(&[_]Feature{
2081 .avr25,
2082 }),
2083 };
2084 pub const attiny44a: CpuModel = .{
2085 .name = "attiny44a",
2086 .llvm_name = "attiny44a",
2087 .features = featureSet(&[_]Feature{
2088 .avr25,
2089 }),
2090 };
2091 pub const attiny45: CpuModel = .{
2092 .name = "attiny45",
2093 .llvm_name = "attiny45",
2094 .features = featureSet(&[_]Feature{
2095 .avr25,
2096 }),
2097 };
2098 pub const attiny461: CpuModel = .{
2099 .name = "attiny461",
2100 .llvm_name = "attiny461",
2101 .features = featureSet(&[_]Feature{
2102 .avr25,
2103 }),
2104 };
2105 pub const attiny461a: CpuModel = .{
2106 .name = "attiny461a",
2107 .llvm_name = "attiny461a",
2108 .features = featureSet(&[_]Feature{
2109 .avr25,
2110 }),
2111 };
2112 pub const attiny48: CpuModel = .{
2113 .name = "attiny48",
2114 .llvm_name = "attiny48",
2115 .features = featureSet(&[_]Feature{
2116 .avr25,
2117 }),
2118 };
2119 pub const attiny5: CpuModel = .{
2120 .name = "attiny5",
2121 .llvm_name = "attiny5",
2122 .features = featureSet(&[_]Feature{
2123 .avrtiny,
2124 }),
2125 };
2126 pub const attiny804: CpuModel = .{
2127 .name = "attiny804",
2128 .llvm_name = "attiny804",
2129 .features = featureSet(&[_]Feature{
2130 .xmega3,
2131 }),
2132 };
2133 pub const attiny806: CpuModel = .{
2134 .name = "attiny806",
2135 .llvm_name = "attiny806",
2136 .features = featureSet(&[_]Feature{
2137 .xmega3,
2138 }),
2139 };
2140 pub const attiny807: CpuModel = .{
2141 .name = "attiny807",
2142 .llvm_name = "attiny807",
2143 .features = featureSet(&[_]Feature{
2144 .xmega3,
2145 }),
2146 };
2147 pub const attiny814: CpuModel = .{
2148 .name = "attiny814",
2149 .llvm_name = "attiny814",
2150 .features = featureSet(&[_]Feature{
2151 .xmega3,
2152 }),
2153 };
2154 pub const attiny816: CpuModel = .{
2155 .name = "attiny816",
2156 .llvm_name = "attiny816",
2157 .features = featureSet(&[_]Feature{
2158 .xmega3,
2159 }),
2160 };
2161 pub const attiny817: CpuModel = .{
2162 .name = "attiny817",
2163 .llvm_name = "attiny817",
2164 .features = featureSet(&[_]Feature{
2165 .xmega3,
2166 }),
2167 };
2168 pub const attiny828: CpuModel = .{
2169 .name = "attiny828",
2170 .llvm_name = "attiny828",
2171 .features = featureSet(&[_]Feature{
2172 .avr25,
2173 .wrappingrjmp,
2174 }),
2175 };
2176 pub const attiny84: CpuModel = .{
2177 .name = "attiny84",
2178 .llvm_name = "attiny84",
2179 .features = featureSet(&[_]Feature{
2180 .avr25,
2181 .wrappingrjmp,
2182 }),
2183 };
2184 pub const attiny841: CpuModel = .{
2185 .name = "attiny841",
2186 .llvm_name = "attiny841",
2187 .features = featureSet(&[_]Feature{
2188 .avr25,
2189 .wrappingrjmp,
2190 }),
2191 };
2192 pub const attiny84a: CpuModel = .{
2193 .name = "attiny84a",
2194 .llvm_name = "attiny84a",
2195 .features = featureSet(&[_]Feature{
2196 .avr25,
2197 .wrappingrjmp,
2198 }),
2199 };
2200 pub const attiny85: CpuModel = .{
2201 .name = "attiny85",
2202 .llvm_name = "attiny85",
2203 .features = featureSet(&[_]Feature{
2204 .avr25,
2205 .wrappingrjmp,
2206 }),
2207 };
2208 pub const attiny861: CpuModel = .{
2209 .name = "attiny861",
2210 .llvm_name = "attiny861",
2211 .features = featureSet(&[_]Feature{
2212 .avr25,
2213 .wrappingrjmp,
2214 }),
2215 };
2216 pub const attiny861a: CpuModel = .{
2217 .name = "attiny861a",
2218 .llvm_name = "attiny861a",
2219 .features = featureSet(&[_]Feature{
2220 .avr25,
2221 .wrappingrjmp,
2222 }),
2223 };
2224 pub const attiny87: CpuModel = .{
2225 .name = "attiny87",
2226 .llvm_name = "attiny87",
2227 .features = featureSet(&[_]Feature{
2228 .avr25,
2229 .wrappingrjmp,
2230 }),
2231 };
2232 pub const attiny88: CpuModel = .{
2233 .name = "attiny88",
2234 .llvm_name = "attiny88",
2235 .features = featureSet(&[_]Feature{
2236 .avr25,
2237 .wrappingrjmp,
2238 }),
2239 };
2240 pub const attiny9: CpuModel = .{
2241 .name = "attiny9",
2242 .llvm_name = "attiny9",
2243 .features = featureSet(&[_]Feature{
2244 .avrtiny,
2245 }),
2246 };
2247 pub const atxmega128a1: CpuModel = .{
2248 .name = "atxmega128a1",
2249 .llvm_name = "atxmega128a1",
2250 .features = featureSet(&[_]Feature{
2251 .xmega,
2252 }),
2253 };
2254 pub const atxmega128a1u: CpuModel = .{
2255 .name = "atxmega128a1u",
2256 .llvm_name = "atxmega128a1u",
2257 .features = featureSet(&[_]Feature{
2258 .xmegau,
2259 }),
2260 };
2261 pub const atxmega128a3: CpuModel = .{
2262 .name = "atxmega128a3",
2263 .llvm_name = "atxmega128a3",
2264 .features = featureSet(&[_]Feature{
2265 .xmega,
2266 }),
2267 };
2268 pub const atxmega128a3u: CpuModel = .{
2269 .name = "atxmega128a3u",
2270 .llvm_name = "atxmega128a3u",
2271 .features = featureSet(&[_]Feature{
2272 .xmegau,
2273 }),
2274 };
2275 pub const atxmega128a4u: CpuModel = .{
2276 .name = "atxmega128a4u",
2277 .llvm_name = "atxmega128a4u",
2278 .features = featureSet(&[_]Feature{
2279 .xmegau,
2280 }),
2281 };
2282 pub const atxmega128b1: CpuModel = .{
2283 .name = "atxmega128b1",
2284 .llvm_name = "atxmega128b1",
2285 .features = featureSet(&[_]Feature{
2286 .xmegau,
2287 }),
2288 };
2289 pub const atxmega128b3: CpuModel = .{
2290 .name = "atxmega128b3",
2291 .llvm_name = "atxmega128b3",
2292 .features = featureSet(&[_]Feature{
2293 .xmegau,
2294 }),
2295 };
2296 pub const atxmega128c3: CpuModel = .{
2297 .name = "atxmega128c3",
2298 .llvm_name = "atxmega128c3",
2299 .features = featureSet(&[_]Feature{
2300 .xmegau,
2301 }),
2302 };
2303 pub const atxmega128d3: CpuModel = .{
2304 .name = "atxmega128d3",
2305 .llvm_name = "atxmega128d3",
2306 .features = featureSet(&[_]Feature{
2307 .xmega,
2308 }),
2309 };
2310 pub const atxmega128d4: CpuModel = .{
2311 .name = "atxmega128d4",
2312 .llvm_name = "atxmega128d4",
2313 .features = featureSet(&[_]Feature{
2314 .xmega,
2315 }),
2316 };
2317 pub const atxmega16a4: CpuModel = .{
2318 .name = "atxmega16a4",
2319 .llvm_name = "atxmega16a4",
2320 .features = featureSet(&[_]Feature{
2321 .xmega,
2322 }),
2323 };
2324 pub const atxmega16a4u: CpuModel = .{
2325 .name = "atxmega16a4u",
2326 .llvm_name = "atxmega16a4u",
2327 .features = featureSet(&[_]Feature{
2328 .xmegau,
2329 }),
2330 };
2331 pub const atxmega16c4: CpuModel = .{
2332 .name = "atxmega16c4",
2333 .llvm_name = "atxmega16c4",
2334 .features = featureSet(&[_]Feature{
2335 .xmegau,
2336 }),
2337 };
2338 pub const atxmega16d4: CpuModel = .{
2339 .name = "atxmega16d4",
2340 .llvm_name = "atxmega16d4",
2341 .features = featureSet(&[_]Feature{
2342 .xmega,
2343 }),
2344 };
2345 pub const atxmega16e5: CpuModel = .{
2346 .name = "atxmega16e5",
2347 .llvm_name = "atxmega16e5",
2348 .features = featureSet(&[_]Feature{
2349 .xmegau,
2350 }),
2351 };
2352 pub const atxmega192a3: CpuModel = .{
2353 .name = "atxmega192a3",
2354 .llvm_name = "atxmega192a3",
2355 .features = featureSet(&[_]Feature{
2356 .xmega,
2357 }),
2358 };
2359 pub const atxmega192a3u: CpuModel = .{
2360 .name = "atxmega192a3u",
2361 .llvm_name = "atxmega192a3u",
2362 .features = featureSet(&[_]Feature{
2363 .xmegau,
2364 }),
2365 };
2366 pub const atxmega192c3: CpuModel = .{
2367 .name = "atxmega192c3",
2368 .llvm_name = "atxmega192c3",
2369 .features = featureSet(&[_]Feature{
2370 .xmegau,
2371 }),
2372 };
2373 pub const atxmega192d3: CpuModel = .{
2374 .name = "atxmega192d3",
2375 .llvm_name = "atxmega192d3",
2376 .features = featureSet(&[_]Feature{
2377 .xmega,
2378 }),
2379 };
2380 pub const atxmega256a3: CpuModel = .{
2381 .name = "atxmega256a3",
2382 .llvm_name = "atxmega256a3",
2383 .features = featureSet(&[_]Feature{
2384 .xmega,
2385 }),
2386 };
2387 pub const atxmega256a3b: CpuModel = .{
2388 .name = "atxmega256a3b",
2389 .llvm_name = "atxmega256a3b",
2390 .features = featureSet(&[_]Feature{
2391 .xmega,
2392 }),
2393 };
2394 pub const atxmega256a3bu: CpuModel = .{
2395 .name = "atxmega256a3bu",
2396 .llvm_name = "atxmega256a3bu",
2397 .features = featureSet(&[_]Feature{
2398 .xmegau,
2399 }),
2400 };
2401 pub const atxmega256a3u: CpuModel = .{
2402 .name = "atxmega256a3u",
2403 .llvm_name = "atxmega256a3u",
2404 .features = featureSet(&[_]Feature{
2405 .xmegau,
2406 }),
2407 };
2408 pub const atxmega256c3: CpuModel = .{
2409 .name = "atxmega256c3",
2410 .llvm_name = "atxmega256c3",
2411 .features = featureSet(&[_]Feature{
2412 .xmegau,
2413 }),
2414 };
2415 pub const atxmega256d3: CpuModel = .{
2416 .name = "atxmega256d3",
2417 .llvm_name = "atxmega256d3",
2418 .features = featureSet(&[_]Feature{
2419 .xmega,
2420 }),
2421 };
2422 pub const atxmega32a4: CpuModel = .{
2423 .name = "atxmega32a4",
2424 .llvm_name = "atxmega32a4",
2425 .features = featureSet(&[_]Feature{
2426 .xmega,
2427 }),
2428 };
2429 pub const atxmega32a4u: CpuModel = .{
2430 .name = "atxmega32a4u",
2431 .llvm_name = "atxmega32a4u",
2432 .features = featureSet(&[_]Feature{
2433 .xmegau,
2434 }),
2435 };
2436 pub const atxmega32c3: CpuModel = .{
2437 .name = "atxmega32c3",
2438 .llvm_name = "atxmega32c3",
2439 .features = featureSet(&[_]Feature{
2440 .xmegau,
2441 }),
2442 };
2443 pub const atxmega32c4: CpuModel = .{
2444 .name = "atxmega32c4",
2445 .llvm_name = "atxmega32c4",
2446 .features = featureSet(&[_]Feature{
2447 .xmegau,
2448 }),
2449 };
2450 pub const atxmega32d3: CpuModel = .{
2451 .name = "atxmega32d3",
2452 .llvm_name = "atxmega32d3",
2453 .features = featureSet(&[_]Feature{
2454 .xmega,
2455 }),
2456 };
2457 pub const atxmega32d4: CpuModel = .{
2458 .name = "atxmega32d4",
2459 .llvm_name = "atxmega32d4",
2460 .features = featureSet(&[_]Feature{
2461 .xmega,
2462 }),
2463 };
2464 pub const atxmega32e5: CpuModel = .{
2465 .name = "atxmega32e5",
2466 .llvm_name = "atxmega32e5",
2467 .features = featureSet(&[_]Feature{
2468 .xmegau,
2469 }),
2470 };
2471 pub const atxmega384c3: CpuModel = .{
2472 .name = "atxmega384c3",
2473 .llvm_name = "atxmega384c3",
2474 .features = featureSet(&[_]Feature{
2475 .xmegau,
2476 }),
2477 };
2478 pub const atxmega384d3: CpuModel = .{
2479 .name = "atxmega384d3",
2480 .llvm_name = "atxmega384d3",
2481 .features = featureSet(&[_]Feature{
2482 .xmega,
2483 }),
2484 };
2485 pub const atxmega64a1: CpuModel = .{
2486 .name = "atxmega64a1",
2487 .llvm_name = "atxmega64a1",
2488 .features = featureSet(&[_]Feature{
2489 .xmega,
2490 }),
2491 };
2492 pub const atxmega64a1u: CpuModel = .{
2493 .name = "atxmega64a1u",
2494 .llvm_name = "atxmega64a1u",
2495 .features = featureSet(&[_]Feature{
2496 .xmegau,
2497 }),
2498 };
2499 pub const atxmega64a3: CpuModel = .{
2500 .name = "atxmega64a3",
2501 .llvm_name = "atxmega64a3",
2502 .features = featureSet(&[_]Feature{
2503 .xmega,
2504 }),
2505 };
2506 pub const atxmega64a3u: CpuModel = .{
2507 .name = "atxmega64a3u",
2508 .llvm_name = "atxmega64a3u",
2509 .features = featureSet(&[_]Feature{
2510 .xmegau,
2511 }),
2512 };
2513 pub const atxmega64a4u: CpuModel = .{
2514 .name = "atxmega64a4u",
2515 .llvm_name = "atxmega64a4u",
2516 .features = featureSet(&[_]Feature{
2517 .xmegau,
2518 }),
2519 };
2520 pub const atxmega64b1: CpuModel = .{
2521 .name = "atxmega64b1",
2522 .llvm_name = "atxmega64b1",
2523 .features = featureSet(&[_]Feature{
2524 .xmegau,
2525 }),
2526 };
2527 pub const atxmega64b3: CpuModel = .{
2528 .name = "atxmega64b3",
2529 .llvm_name = "atxmega64b3",
2530 .features = featureSet(&[_]Feature{
2531 .xmegau,
2532 }),
2533 };
2534 pub const atxmega64c3: CpuModel = .{
2535 .name = "atxmega64c3",
2536 .llvm_name = "atxmega64c3",
2537 .features = featureSet(&[_]Feature{
2538 .xmegau,
2539 }),
2540 };
2541 pub const atxmega64d3: CpuModel = .{
2542 .name = "atxmega64d3",
2543 .llvm_name = "atxmega64d3",
2544 .features = featureSet(&[_]Feature{
2545 .xmega,
2546 }),
2547 };
2548 pub const atxmega64d4: CpuModel = .{
2549 .name = "atxmega64d4",
2550 .llvm_name = "atxmega64d4",
2551 .features = featureSet(&[_]Feature{
2552 .xmega,
2553 }),
2554 };
2555 pub const atxmega8e5: CpuModel = .{
2556 .name = "atxmega8e5",
2557 .llvm_name = "atxmega8e5",
2558 .features = featureSet(&[_]Feature{
2559 .xmegau,
2560 }),
2561 };
2562 pub const avr1: CpuModel = .{
2563 .name = "avr1",
2564 .llvm_name = "avr1",
2565 .features = featureSet(&[_]Feature{
2566 .avr1,
2567 }),
2568 };
2569 pub const avr128da28: CpuModel = .{
2570 .name = "avr128da28",
2571 .llvm_name = "avr128da28",
2572 .features = featureSet(&[_]Feature{
2573 .xmega4,
2574 }),
2575 };
2576 pub const avr128da32: CpuModel = .{
2577 .name = "avr128da32",
2578 .llvm_name = "avr128da32",
2579 .features = featureSet(&[_]Feature{
2580 .xmega4,
2581 }),
2582 };
2583 pub const avr128da48: CpuModel = .{
2584 .name = "avr128da48",
2585 .llvm_name = "avr128da48",
2586 .features = featureSet(&[_]Feature{
2587 .xmega4,
2588 }),
2589 };
2590 pub const avr128da64: CpuModel = .{
2591 .name = "avr128da64",
2592 .llvm_name = "avr128da64",
2593 .features = featureSet(&[_]Feature{
2594 .xmega4,
2595 }),
2596 };
2597 pub const avr128db28: CpuModel = .{
2598 .name = "avr128db28",
2599 .llvm_name = "avr128db28",
2600 .features = featureSet(&[_]Feature{
2601 .xmega4,
2602 }),
2603 };
2604 pub const avr128db32: CpuModel = .{
2605 .name = "avr128db32",
2606 .llvm_name = "avr128db32",
2607 .features = featureSet(&[_]Feature{
2608 .xmega4,
2609 }),
2610 };
2611 pub const avr128db48: CpuModel = .{
2612 .name = "avr128db48",
2613 .llvm_name = "avr128db48",
2614 .features = featureSet(&[_]Feature{
2615 .xmega4,
2616 }),
2617 };
2618 pub const avr128db64: CpuModel = .{
2619 .name = "avr128db64",
2620 .llvm_name = "avr128db64",
2621 .features = featureSet(&[_]Feature{
2622 .xmega4,
2623 }),
2624 };
2625 pub const avr16dd20: CpuModel = .{
2626 .name = "avr16dd20",
2627 .llvm_name = "avr16dd20",
2628 .features = featureSet(&[_]Feature{
2629 .xmega3,
2630 }),
2631 };
2632 pub const avr16dd28: CpuModel = .{
2633 .name = "avr16dd28",
2634 .llvm_name = "avr16dd28",
2635 .features = featureSet(&[_]Feature{
2636 .xmega3,
2637 }),
2638 };
2639 pub const avr16dd32: CpuModel = .{
2640 .name = "avr16dd32",
2641 .llvm_name = "avr16dd32",
2642 .features = featureSet(&[_]Feature{
2643 .xmega3,
2644 }),
2645 };
2646 pub const avr16du14: CpuModel = .{
2647 .name = "avr16du14",
2648 .llvm_name = "avr16du14",
2649 .features = featureSet(&[_]Feature{
2650 .xmega3,
2651 }),
2652 };
2653 pub const avr16du20: CpuModel = .{
2654 .name = "avr16du20",
2655 .llvm_name = "avr16du20",
2656 .features = featureSet(&[_]Feature{
2657 .xmega3,
2658 }),
2659 };
2660 pub const avr16du28: CpuModel = .{
2661 .name = "avr16du28",
2662 .llvm_name = "avr16du28",
2663 .features = featureSet(&[_]Feature{
2664 .xmega3,
2665 }),
2666 };
2667 pub const avr16du32: CpuModel = .{
2668 .name = "avr16du32",
2669 .llvm_name = "avr16du32",
2670 .features = featureSet(&[_]Feature{
2671 .xmega3,
2672 }),
2673 };
2674 pub const avr16ea28: CpuModel = .{
2675 .name = "avr16ea28",
2676 .llvm_name = "avr16ea28",
2677 .features = featureSet(&[_]Feature{
2678 .xmega3,
2679 }),
2680 };
2681 pub const avr16ea32: CpuModel = .{
2682 .name = "avr16ea32",
2683 .llvm_name = "avr16ea32",
2684 .features = featureSet(&[_]Feature{
2685 .xmega3,
2686 }),
2687 };
2688 pub const avr16ea48: CpuModel = .{
2689 .name = "avr16ea48",
2690 .llvm_name = "avr16ea48",
2691 .features = featureSet(&[_]Feature{
2692 .xmega3,
2693 }),
2694 };
2695 pub const avr16eb14: CpuModel = .{
2696 .name = "avr16eb14",
2697 .llvm_name = "avr16eb14",
2698 .features = featureSet(&[_]Feature{
2699 .xmega3,
2700 }),
2701 };
2702 pub const avr16eb20: CpuModel = .{
2703 .name = "avr16eb20",
2704 .llvm_name = "avr16eb20",
2705 .features = featureSet(&[_]Feature{
2706 .xmega3,
2707 }),
2708 };
2709 pub const avr16eb28: CpuModel = .{
2710 .name = "avr16eb28",
2711 .llvm_name = "avr16eb28",
2712 .features = featureSet(&[_]Feature{
2713 .xmega3,
2714 }),
2715 };
2716 pub const avr16eb32: CpuModel = .{
2717 .name = "avr16eb32",
2718 .llvm_name = "avr16eb32",
2719 .features = featureSet(&[_]Feature{
2720 .xmega3,
2721 }),
2722 };
2723 pub const avr2: CpuModel = .{
2724 .name = "avr2",
2725 .llvm_name = "avr2",
2726 .features = featureSet(&[_]Feature{
2727 .avr2,
2728 }),
2729 };
2730 pub const avr25: CpuModel = .{
2731 .name = "avr25",
2732 .llvm_name = "avr25",
2733 .features = featureSet(&[_]Feature{
2734 .avr25,
2735 }),
2736 };
2737 pub const avr3: CpuModel = .{
2738 .name = "avr3",
2739 .llvm_name = "avr3",
2740 .features = featureSet(&[_]Feature{
2741 .avr3,
2742 }),
2743 };
2744 pub const avr31: CpuModel = .{
2745 .name = "avr31",
2746 .llvm_name = "avr31",
2747 .features = featureSet(&[_]Feature{
2748 .avr31,
2749 }),
2750 };
2751 pub const avr32da28: CpuModel = .{
2752 .name = "avr32da28",
2753 .llvm_name = "avr32da28",
2754 .features = featureSet(&[_]Feature{
2755 .xmega3,
2756 }),
2757 };
2758 pub const avr32da32: CpuModel = .{
2759 .name = "avr32da32",
2760 .llvm_name = "avr32da32",
2761 .features = featureSet(&[_]Feature{
2762 .xmega3,
2763 }),
2764 };
2765 pub const avr32da48: CpuModel = .{
2766 .name = "avr32da48",
2767 .llvm_name = "avr32da48",
2768 .features = featureSet(&[_]Feature{
2769 .xmega3,
2770 }),
2771 };
2772 pub const avr32db28: CpuModel = .{
2773 .name = "avr32db28",
2774 .llvm_name = "avr32db28",
2775 .features = featureSet(&[_]Feature{
2776 .xmega3,
2777 }),
2778 };
2779 pub const avr32db32: CpuModel = .{
2780 .name = "avr32db32",
2781 .llvm_name = "avr32db32",
2782 .features = featureSet(&[_]Feature{
2783 .xmega3,
2784 }),
2785 };
2786 pub const avr32db48: CpuModel = .{
2787 .name = "avr32db48",
2788 .llvm_name = "avr32db48",
2789 .features = featureSet(&[_]Feature{
2790 .xmega3,
2791 }),
2792 };
2793 pub const avr32dd14: CpuModel = .{
2794 .name = "avr32dd14",
2795 .llvm_name = "avr32dd14",
2796 .features = featureSet(&[_]Feature{
2797 .xmega3,
2798 }),
2799 };
2800 pub const avr32dd20: CpuModel = .{
2801 .name = "avr32dd20",
2802 .llvm_name = "avr32dd20",
2803 .features = featureSet(&[_]Feature{
2804 .xmega3,
2805 }),
2806 };
2807 pub const avr32dd28: CpuModel = .{
2808 .name = "avr32dd28",
2809 .llvm_name = "avr32dd28",
2810 .features = featureSet(&[_]Feature{
2811 .xmega3,
2812 }),
2813 };
2814 pub const avr32dd32: CpuModel = .{
2815 .name = "avr32dd32",
2816 .llvm_name = "avr32dd32",
2817 .features = featureSet(&[_]Feature{
2818 .xmega3,
2819 }),
2820 };
2821 pub const avr32du14: CpuModel = .{
2822 .name = "avr32du14",
2823 .llvm_name = "avr32du14",
2824 .features = featureSet(&[_]Feature{
2825 .xmega3,
2826 }),
2827 };
2828 pub const avr32du20: CpuModel = .{
2829 .name = "avr32du20",
2830 .llvm_name = "avr32du20",
2831 .features = featureSet(&[_]Feature{
2832 .xmega3,
2833 }),
2834 };
2835 pub const avr32du28: CpuModel = .{
2836 .name = "avr32du28",
2837 .llvm_name = "avr32du28",
2838 .features = featureSet(&[_]Feature{
2839 .xmega3,
2840 }),
2841 };
2842 pub const avr32du32: CpuModel = .{
2843 .name = "avr32du32",
2844 .llvm_name = "avr32du32",
2845 .features = featureSet(&[_]Feature{
2846 .xmega3,
2847 }),
2848 };
2849 pub const avr32ea28: CpuModel = .{
2850 .name = "avr32ea28",
2851 .llvm_name = "avr32ea28",
2852 .features = featureSet(&[_]Feature{
2853 .xmega3,
2854 }),
2855 };
2856 pub const avr32ea32: CpuModel = .{
2857 .name = "avr32ea32",
2858 .llvm_name = "avr32ea32",
2859 .features = featureSet(&[_]Feature{
2860 .xmega3,
2861 }),
2862 };
2863 pub const avr32ea48: CpuModel = .{
2864 .name = "avr32ea48",
2865 .llvm_name = "avr32ea48",
2866 .features = featureSet(&[_]Feature{
2867 .xmega3,
2868 }),
2869 };
2870 pub const avr32sd20: CpuModel = .{
2871 .name = "avr32sd20",
2872 .llvm_name = "avr32sd20",
2873 .features = featureSet(&[_]Feature{
2874 .xmega3,
2875 }),
2876 };
2877 pub const avr32sd28: CpuModel = .{
2878 .name = "avr32sd28",
2879 .llvm_name = "avr32sd28",
2880 .features = featureSet(&[_]Feature{
2881 .xmega3,
2882 }),
2883 };
2884 pub const avr32sd32: CpuModel = .{
2885 .name = "avr32sd32",
2886 .llvm_name = "avr32sd32",
2887 .features = featureSet(&[_]Feature{
2888 .xmega3,
2889 }),
2890 };
2891 pub const avr35: CpuModel = .{
2892 .name = "avr35",
2893 .llvm_name = "avr35",
2894 .features = featureSet(&[_]Feature{
2895 .avr35,
2896 }),
2897 };
2898 pub const avr4: CpuModel = .{
2899 .name = "avr4",
2900 .llvm_name = "avr4",
2901 .features = featureSet(&[_]Feature{
2902 .avr4,
2903 }),
2904 };
2905 pub const avr5: CpuModel = .{
2906 .name = "avr5",
2907 .llvm_name = "avr5",
2908 .features = featureSet(&[_]Feature{
2909 .avr5,
2910 }),
2911 };
2912 pub const avr51: CpuModel = .{
2913 .name = "avr51",
2914 .llvm_name = "avr51",
2915 .features = featureSet(&[_]Feature{
2916 .avr51,
2917 }),
2918 };
2919 pub const avr6: CpuModel = .{
2920 .name = "avr6",
2921 .llvm_name = "avr6",
2922 .features = featureSet(&[_]Feature{
2923 .avr6,
2924 }),
2925 };
2926 pub const avr64da28: CpuModel = .{
2927 .name = "avr64da28",
2928 .llvm_name = "avr64da28",
2929 .features = featureSet(&[_]Feature{
2930 .xmega2,
2931 }),
2932 };
2933 pub const avr64da32: CpuModel = .{
2934 .name = "avr64da32",
2935 .llvm_name = "avr64da32",
2936 .features = featureSet(&[_]Feature{
2937 .xmega2,
2938 }),
2939 };
2940 pub const avr64da48: CpuModel = .{
2941 .name = "avr64da48",
2942 .llvm_name = "avr64da48",
2943 .features = featureSet(&[_]Feature{
2944 .xmega2,
2945 }),
2946 };
2947 pub const avr64da64: CpuModel = .{
2948 .name = "avr64da64",
2949 .llvm_name = "avr64da64",
2950 .features = featureSet(&[_]Feature{
2951 .xmega2,
2952 }),
2953 };
2954 pub const avr64db28: CpuModel = .{
2955 .name = "avr64db28",
2956 .llvm_name = "avr64db28",
2957 .features = featureSet(&[_]Feature{
2958 .xmega2,
2959 }),
2960 };
2961 pub const avr64db32: CpuModel = .{
2962 .name = "avr64db32",
2963 .llvm_name = "avr64db32",
2964 .features = featureSet(&[_]Feature{
2965 .xmega2,
2966 }),
2967 };
2968 pub const avr64db48: CpuModel = .{
2969 .name = "avr64db48",
2970 .llvm_name = "avr64db48",
2971 .features = featureSet(&[_]Feature{
2972 .xmega2,
2973 }),
2974 };
2975 pub const avr64db64: CpuModel = .{
2976 .name = "avr64db64",
2977 .llvm_name = "avr64db64",
2978 .features = featureSet(&[_]Feature{
2979 .xmega2,
2980 }),
2981 };
2982 pub const avr64dd14: CpuModel = .{
2983 .name = "avr64dd14",
2984 .llvm_name = "avr64dd14",
2985 .features = featureSet(&[_]Feature{
2986 .xmega2,
2987 }),
2988 };
2989 pub const avr64dd20: CpuModel = .{
2990 .name = "avr64dd20",
2991 .llvm_name = "avr64dd20",
2992 .features = featureSet(&[_]Feature{
2993 .xmega2,
2994 }),
2995 };
2996 pub const avr64dd28: CpuModel = .{
2997 .name = "avr64dd28",
2998 .llvm_name = "avr64dd28",
2999 .features = featureSet(&[_]Feature{
3000 .xmega2,
3001 }),
3002 };
3003 pub const avr64dd32: CpuModel = .{
3004 .name = "avr64dd32",
3005 .llvm_name = "avr64dd32",
3006 .features = featureSet(&[_]Feature{
3007 .xmega2,
3008 }),
3009 };
3010 pub const avr64du28: CpuModel = .{
3011 .name = "avr64du28",
3012 .llvm_name = "avr64du28",
3013 .features = featureSet(&[_]Feature{
3014 .xmega2,
3015 }),
3016 };
3017 pub const avr64du32: CpuModel = .{
3018 .name = "avr64du32",
3019 .llvm_name = "avr64du32",
3020 .features = featureSet(&[_]Feature{
3021 .xmega2,
3022 }),
3023 };
3024 pub const avr64ea28: CpuModel = .{
3025 .name = "avr64ea28",
3026 .llvm_name = "avr64ea28",
3027 .features = featureSet(&[_]Feature{
3028 .xmega2,
3029 }),
3030 };
3031 pub const avr64ea32: CpuModel = .{
3032 .name = "avr64ea32",
3033 .llvm_name = "avr64ea32",
3034 .features = featureSet(&[_]Feature{
3035 .xmega2,
3036 }),
3037 };
3038 pub const avr64ea48: CpuModel = .{
3039 .name = "avr64ea48",
3040 .llvm_name = "avr64ea48",
3041 .features = featureSet(&[_]Feature{
3042 .xmega2,
3043 }),
3044 };
3045 pub const avr64sd28: CpuModel = .{
3046 .name = "avr64sd28",
3047 .llvm_name = "avr64sd28",
3048 .features = featureSet(&[_]Feature{
3049 .xmega2,
3050 }),
3051 };
3052 pub const avr64sd32: CpuModel = .{
3053 .name = "avr64sd32",
3054 .llvm_name = "avr64sd32",
3055 .features = featureSet(&[_]Feature{
3056 .xmega2,
3057 }),
3058 };
3059 pub const avr64sd48: CpuModel = .{
3060 .name = "avr64sd48",
3061 .llvm_name = "avr64sd48",
3062 .features = featureSet(&[_]Feature{
3063 .xmega2,
3064 }),
3065 };
3066 pub const avrtiny: CpuModel = .{
3067 .name = "avrtiny",
3068 .llvm_name = "avrtiny",
3069 .features = featureSet(&[_]Feature{
3070 .avrtiny,
3071 }),
3072 };
3073 pub const avrxmega1: CpuModel = .{
3074 .name = "avrxmega1",
3075 .llvm_name = "avrxmega1",
3076 .features = featureSet(&[_]Feature{
3077 .xmega,
3078 }),
3079 };
3080 pub const avrxmega2: CpuModel = .{
3081 .name = "avrxmega2",
3082 .llvm_name = "avrxmega2",
3083 .features = featureSet(&[_]Feature{
3084 .xmega,
3085 }),
3086 };
3087 pub const avrxmega3: CpuModel = .{
3088 .name = "avrxmega3",
3089 .llvm_name = "avrxmega3",
3090 .features = featureSet(&[_]Feature{
3091 .xmega3,
3092 }),
3093 };
3094 pub const avrxmega4: CpuModel = .{
3095 .name = "avrxmega4",
3096 .llvm_name = "avrxmega4",
3097 .features = featureSet(&[_]Feature{
3098 .xmega,
3099 }),
3100 };
3101 pub const avrxmega5: CpuModel = .{
3102 .name = "avrxmega5",
3103 .llvm_name = "avrxmega5",
3104 .features = featureSet(&[_]Feature{
3105 .xmega,
3106 }),
3107 };
3108 pub const avrxmega6: CpuModel = .{
3109 .name = "avrxmega6",
3110 .llvm_name = "avrxmega6",
3111 .features = featureSet(&[_]Feature{
3112 .xmega,
3113 }),
3114 };
3115 pub const avrxmega7: CpuModel = .{
3116 .name = "avrxmega7",
3117 .llvm_name = "avrxmega7",
3118 .features = featureSet(&[_]Feature{
3119 .xmega,
3120 }),
3121 };
3122 pub const m3000: CpuModel = .{
3123 .name = "m3000",
3124 .llvm_name = "m3000",
3125 .features = featureSet(&[_]Feature{
3126 .avr5,
3127 }),
3128 };
3129};