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};