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    @"10e60",
   9    @"2e3",
  10    @"3e3r1",
  11    @"3e3r2",
  12    @"3e3r3",
  13    @"3e7",
  14    @"7e10",
  15    btst16,
  16    cache,
  17    ccrt,
  18    ck801,
  19    ck802,
  20    ck803,
  21    ck803s,
  22    ck804,
  23    ck805,
  24    ck807,
  25    ck810,
  26    ck810v,
  27    ck860,
  28    ck860v,
  29    constpool,
  30    doloop,
  31    dsp1e2,
  32    dsp_silan,
  33    dspe60,
  34    dspv2,
  35    e1,
  36    e2,
  37    edsp,
  38    elrw,
  39    fdivdu,
  40    float1e2,
  41    float1e3,
  42    float3e4,
  43    float7e60,
  44    floate1,
  45    fpuv2_df,
  46    fpuv2_sf,
  47    fpuv3_df,
  48    fpuv3_hf,
  49    fpuv3_hi,
  50    fpuv3_sf,
  51    hard_float,
  52    hard_float_abi,
  53    hard_tp,
  54    high_registers,
  55    hwdiv,
  56    istack,
  57    java,
  58    mp,
  59    mp1e2,
  60    multiple_stld,
  61    nvic,
  62    pushpop,
  63    smart,
  64    soft_tp,
  65    stack_size,
  66    trust,
  67    vdsp2e3,
  68    vdsp2e60f,
  69    vdspv1,
  70    vdspv2,
  71};
  72
  73pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
  74pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
  75pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
  76pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
  77
  78pub const all_features = blk: {
  79    const len = @typeInfo(Feature).@"enum".fields.len;
  80    std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
  81    var result: [len]CpuFeature = undefined;
  82    result[@intFromEnum(Feature.@"10e60")] = .{
  83        .llvm_name = "10e60",
  84        .description = "Support CSKY 10e60 instructions",
  85        .dependencies = featureSet(&[_]Feature{
  86            .@"7e10",
  87        }),
  88    };
  89    result[@intFromEnum(Feature.@"2e3")] = .{
  90        .llvm_name = "2e3",
  91        .description = "Support CSKY 2e3 instructions",
  92        .dependencies = featureSet(&[_]Feature{
  93            .e2,
  94        }),
  95    };
  96    result[@intFromEnum(Feature.@"3e3r1")] = .{
  97        .llvm_name = "3e3r1",
  98        .description = "Support CSKY 3e3r1 instructions",
  99        .dependencies = featureSet(&[_]Feature{}),
 100    };
 101    result[@intFromEnum(Feature.@"3e3r2")] = .{
 102        .llvm_name = "3e3r2",
 103        .description = "Support CSKY 3e3r2 instructions",
 104        .dependencies = featureSet(&[_]Feature{
 105            .@"3e3r1",
 106            .doloop,
 107        }),
 108    };
 109    result[@intFromEnum(Feature.@"3e3r3")] = .{
 110        .llvm_name = "3e3r3",
 111        .description = "Support CSKY 3e3r3 instructions",
 112        .dependencies = featureSet(&[_]Feature{
 113            .doloop,
 114        }),
 115    };
 116    result[@intFromEnum(Feature.@"3e7")] = .{
 117        .llvm_name = "3e7",
 118        .description = "Support CSKY 3e7 instructions",
 119        .dependencies = featureSet(&[_]Feature{
 120            .@"2e3",
 121        }),
 122    };
 123    result[@intFromEnum(Feature.@"7e10")] = .{
 124        .llvm_name = "7e10",
 125        .description = "Support CSKY 7e10 instructions",
 126        .dependencies = featureSet(&[_]Feature{
 127            .@"3e7",
 128        }),
 129    };
 130    result[@intFromEnum(Feature.btst16)] = .{
 131        .llvm_name = "btst16",
 132        .description = "Use the 16-bit btsti instruction",
 133        .dependencies = featureSet(&[_]Feature{}),
 134    };
 135    result[@intFromEnum(Feature.cache)] = .{
 136        .llvm_name = "cache",
 137        .description = "Enable cache",
 138        .dependencies = featureSet(&[_]Feature{}),
 139    };
 140    result[@intFromEnum(Feature.ccrt)] = .{
 141        .llvm_name = "ccrt",
 142        .description = "Use CSKY compiler runtime",
 143        .dependencies = featureSet(&[_]Feature{}),
 144    };
 145    result[@intFromEnum(Feature.ck801)] = .{
 146        .llvm_name = "ck801",
 147        .description = "CSKY ck801 processors",
 148        .dependencies = featureSet(&[_]Feature{}),
 149    };
 150    result[@intFromEnum(Feature.ck802)] = .{
 151        .llvm_name = "ck802",
 152        .description = "CSKY ck802 processors",
 153        .dependencies = featureSet(&[_]Feature{}),
 154    };
 155    result[@intFromEnum(Feature.ck803)] = .{
 156        .llvm_name = "ck803",
 157        .description = "CSKY ck803 processors",
 158        .dependencies = featureSet(&[_]Feature{}),
 159    };
 160    result[@intFromEnum(Feature.ck803s)] = .{
 161        .llvm_name = "ck803s",
 162        .description = "CSKY ck803s processors",
 163        .dependencies = featureSet(&[_]Feature{}),
 164    };
 165    result[@intFromEnum(Feature.ck804)] = .{
 166        .llvm_name = "ck804",
 167        .description = "CSKY ck804 processors",
 168        .dependencies = featureSet(&[_]Feature{}),
 169    };
 170    result[@intFromEnum(Feature.ck805)] = .{
 171        .llvm_name = "ck805",
 172        .description = "CSKY ck805 processors",
 173        .dependencies = featureSet(&[_]Feature{}),
 174    };
 175    result[@intFromEnum(Feature.ck807)] = .{
 176        .llvm_name = "ck807",
 177        .description = "CSKY ck807 processors",
 178        .dependencies = featureSet(&[_]Feature{}),
 179    };
 180    result[@intFromEnum(Feature.ck810)] = .{
 181        .llvm_name = "ck810",
 182        .description = "CSKY ck810 processors",
 183        .dependencies = featureSet(&[_]Feature{}),
 184    };
 185    result[@intFromEnum(Feature.ck810v)] = .{
 186        .llvm_name = "ck810v",
 187        .description = "CSKY ck810v processors",
 188        .dependencies = featureSet(&[_]Feature{}),
 189    };
 190    result[@intFromEnum(Feature.ck860)] = .{
 191        .llvm_name = "ck860",
 192        .description = "CSKY ck860 processors",
 193        .dependencies = featureSet(&[_]Feature{}),
 194    };
 195    result[@intFromEnum(Feature.ck860v)] = .{
 196        .llvm_name = "ck860v",
 197        .description = "CSKY ck860v processors",
 198        .dependencies = featureSet(&[_]Feature{}),
 199    };
 200    result[@intFromEnum(Feature.constpool)] = .{
 201        .llvm_name = "constpool",
 202        .description = "Dump the constant pool by compiler",
 203        .dependencies = featureSet(&[_]Feature{}),
 204    };
 205    result[@intFromEnum(Feature.doloop)] = .{
 206        .llvm_name = "doloop",
 207        .description = "Enable doloop instructions",
 208        .dependencies = featureSet(&[_]Feature{}),
 209    };
 210    result[@intFromEnum(Feature.dsp1e2)] = .{
 211        .llvm_name = "dsp1e2",
 212        .description = "Support CSKY dsp1e2 instructions",
 213        .dependencies = featureSet(&[_]Feature{}),
 214    };
 215    result[@intFromEnum(Feature.dsp_silan)] = .{
 216        .llvm_name = "dsp_silan",
 217        .description = "Enable DSP Silan instructions",
 218        .dependencies = featureSet(&[_]Feature{}),
 219    };
 220    result[@intFromEnum(Feature.dspe60)] = .{
 221        .llvm_name = "dspe60",
 222        .description = "Support CSKY dspe60 instructions",
 223        .dependencies = featureSet(&[_]Feature{}),
 224    };
 225    result[@intFromEnum(Feature.dspv2)] = .{
 226        .llvm_name = "dspv2",
 227        .description = "Enable DSP V2.0 instructions",
 228        .dependencies = featureSet(&[_]Feature{}),
 229    };
 230    result[@intFromEnum(Feature.e1)] = .{
 231        .llvm_name = "e1",
 232        .description = "Support CSKY e1 instructions",
 233        .dependencies = featureSet(&[_]Feature{
 234            .elrw,
 235        }),
 236    };
 237    result[@intFromEnum(Feature.e2)] = .{
 238        .llvm_name = "e2",
 239        .description = "Support CSKY e2 instructions",
 240        .dependencies = featureSet(&[_]Feature{
 241            .e1,
 242        }),
 243    };
 244    result[@intFromEnum(Feature.edsp)] = .{
 245        .llvm_name = "edsp",
 246        .description = "Enable DSP instructions",
 247        .dependencies = featureSet(&[_]Feature{}),
 248    };
 249    result[@intFromEnum(Feature.elrw)] = .{
 250        .llvm_name = "elrw",
 251        .description = "Use the extend LRW instruction",
 252        .dependencies = featureSet(&[_]Feature{}),
 253    };
 254    result[@intFromEnum(Feature.fdivdu)] = .{
 255        .llvm_name = "fdivdu",
 256        .description = "Enable float divide instructions",
 257        .dependencies = featureSet(&[_]Feature{}),
 258    };
 259    result[@intFromEnum(Feature.float1e2)] = .{
 260        .llvm_name = "float1e2",
 261        .description = "Support CSKY float1e2 instructions",
 262        .dependencies = featureSet(&[_]Feature{}),
 263    };
 264    result[@intFromEnum(Feature.float1e3)] = .{
 265        .llvm_name = "float1e3",
 266        .description = "Support CSKY float1e3 instructions",
 267        .dependencies = featureSet(&[_]Feature{}),
 268    };
 269    result[@intFromEnum(Feature.float3e4)] = .{
 270        .llvm_name = "float3e4",
 271        .description = "Support CSKY float3e4 instructions",
 272        .dependencies = featureSet(&[_]Feature{}),
 273    };
 274    result[@intFromEnum(Feature.float7e60)] = .{
 275        .llvm_name = "float7e60",
 276        .description = "Support CSKY float7e60 instructions",
 277        .dependencies = featureSet(&[_]Feature{}),
 278    };
 279    result[@intFromEnum(Feature.floate1)] = .{
 280        .llvm_name = "floate1",
 281        .description = "Support CSKY floate1 instructions",
 282        .dependencies = featureSet(&[_]Feature{}),
 283    };
 284    result[@intFromEnum(Feature.fpuv2_df)] = .{
 285        .llvm_name = "fpuv2_df",
 286        .description = "Enable FPUv2 double float instructions",
 287        .dependencies = featureSet(&[_]Feature{}),
 288    };
 289    result[@intFromEnum(Feature.fpuv2_sf)] = .{
 290        .llvm_name = "fpuv2_sf",
 291        .description = "Enable FPUv2 single float instructions",
 292        .dependencies = featureSet(&[_]Feature{}),
 293    };
 294    result[@intFromEnum(Feature.fpuv3_df)] = .{
 295        .llvm_name = "fpuv3_df",
 296        .description = "Enable FPUv3 double float instructions",
 297        .dependencies = featureSet(&[_]Feature{}),
 298    };
 299    result[@intFromEnum(Feature.fpuv3_hf)] = .{
 300        .llvm_name = "fpuv3_hf",
 301        .description = "Enable FPUv3 half precision operate instructions",
 302        .dependencies = featureSet(&[_]Feature{}),
 303    };
 304    result[@intFromEnum(Feature.fpuv3_hi)] = .{
 305        .llvm_name = "fpuv3_hi",
 306        .description = "Enable FPUv3 half word converting instructions",
 307        .dependencies = featureSet(&[_]Feature{}),
 308    };
 309    result[@intFromEnum(Feature.fpuv3_sf)] = .{
 310        .llvm_name = "fpuv3_sf",
 311        .description = "Enable FPUv3 single float instructions",
 312        .dependencies = featureSet(&[_]Feature{}),
 313    };
 314    result[@intFromEnum(Feature.hard_float)] = .{
 315        .llvm_name = "hard-float",
 316        .description = "Use hard floating point features",
 317        .dependencies = featureSet(&[_]Feature{}),
 318    };
 319    result[@intFromEnum(Feature.hard_float_abi)] = .{
 320        .llvm_name = "hard-float-abi",
 321        .description = "Use hard floating point ABI to pass args",
 322        .dependencies = featureSet(&[_]Feature{}),
 323    };
 324    result[@intFromEnum(Feature.hard_tp)] = .{
 325        .llvm_name = "hard-tp",
 326        .description = "Enable TLS Pointer register",
 327        .dependencies = featureSet(&[_]Feature{}),
 328    };
 329    result[@intFromEnum(Feature.high_registers)] = .{
 330        .llvm_name = "high-registers",
 331        .description = "Enable r16-r31 registers",
 332        .dependencies = featureSet(&[_]Feature{}),
 333    };
 334    result[@intFromEnum(Feature.hwdiv)] = .{
 335        .llvm_name = "hwdiv",
 336        .description = "Enable divide instructions",
 337        .dependencies = featureSet(&[_]Feature{}),
 338    };
 339    result[@intFromEnum(Feature.istack)] = .{
 340        .llvm_name = "istack",
 341        .description = "Enable interrupt attribute",
 342        .dependencies = featureSet(&[_]Feature{}),
 343    };
 344    result[@intFromEnum(Feature.java)] = .{
 345        .llvm_name = "java",
 346        .description = "Enable java instructions",
 347        .dependencies = featureSet(&[_]Feature{}),
 348    };
 349    result[@intFromEnum(Feature.mp)] = .{
 350        .llvm_name = "mp",
 351        .description = "Support CSKY mp instructions",
 352        .dependencies = featureSet(&[_]Feature{
 353            .@"2e3",
 354        }),
 355    };
 356    result[@intFromEnum(Feature.mp1e2)] = .{
 357        .llvm_name = "mp1e2",
 358        .description = "Support CSKY mp1e2 instructions",
 359        .dependencies = featureSet(&[_]Feature{
 360            .@"3e7",
 361        }),
 362    };
 363    result[@intFromEnum(Feature.multiple_stld)] = .{
 364        .llvm_name = "multiple_stld",
 365        .description = "Enable multiple load/store instructions",
 366        .dependencies = featureSet(&[_]Feature{}),
 367    };
 368    result[@intFromEnum(Feature.nvic)] = .{
 369        .llvm_name = "nvic",
 370        .description = "Enable NVIC",
 371        .dependencies = featureSet(&[_]Feature{}),
 372    };
 373    result[@intFromEnum(Feature.pushpop)] = .{
 374        .llvm_name = "pushpop",
 375        .description = "Enable push/pop instructions",
 376        .dependencies = featureSet(&[_]Feature{}),
 377    };
 378    result[@intFromEnum(Feature.smart)] = .{
 379        .llvm_name = "smart",
 380        .description = "Let CPU work in Smart Mode",
 381        .dependencies = featureSet(&[_]Feature{}),
 382    };
 383    result[@intFromEnum(Feature.soft_tp)] = .{
 384        .llvm_name = "soft-tp",
 385        .description = "Disable TLS Pointer register",
 386        .dependencies = featureSet(&[_]Feature{}),
 387    };
 388    result[@intFromEnum(Feature.stack_size)] = .{
 389        .llvm_name = "stack-size",
 390        .description = "Output stack size information",
 391        .dependencies = featureSet(&[_]Feature{}),
 392    };
 393    result[@intFromEnum(Feature.trust)] = .{
 394        .llvm_name = "trust",
 395        .description = "Enable trust instructions",
 396        .dependencies = featureSet(&[_]Feature{}),
 397    };
 398    result[@intFromEnum(Feature.vdsp2e3)] = .{
 399        .llvm_name = "vdsp2e3",
 400        .description = "Support CSKY vdsp2e3 instructions",
 401        .dependencies = featureSet(&[_]Feature{}),
 402    };
 403    result[@intFromEnum(Feature.vdsp2e60f)] = .{
 404        .llvm_name = "vdsp2e60f",
 405        .description = "Support CSKY vdsp2e60f instructions",
 406        .dependencies = featureSet(&[_]Feature{}),
 407    };
 408    result[@intFromEnum(Feature.vdspv1)] = .{
 409        .llvm_name = "vdspv1",
 410        .description = "Enable 128bit vdsp-v1 instructions",
 411        .dependencies = featureSet(&[_]Feature{}),
 412    };
 413    result[@intFromEnum(Feature.vdspv2)] = .{
 414        .llvm_name = "vdspv2",
 415        .description = "Enable vdsp-v2 instructions",
 416        .dependencies = featureSet(&[_]Feature{}),
 417    };
 418    const ti = @typeInfo(Feature);
 419    for (&result, 0..) |*elem, i| {
 420        elem.index = i;
 421        elem.name = ti.@"enum".fields[i].name;
 422    }
 423    break :blk result;
 424};
 425
 426pub const cpu = struct {
 427    pub const c807: CpuModel = .{
 428        .name = "c807",
 429        .llvm_name = "c807",
 430        .features = featureSet(&[_]Feature{
 431            .cache,
 432            .ck807,
 433            .dsp1e2,
 434            .dspe60,
 435            .edsp,
 436            .hard_tp,
 437            .high_registers,
 438            .hwdiv,
 439            .mp,
 440            .mp1e2,
 441            .nvic,
 442            .trust,
 443        }),
 444    };
 445    pub const c807f: CpuModel = .{
 446        .name = "c807f",
 447        .llvm_name = "c807f",
 448        .features = featureSet(&[_]Feature{
 449            .cache,
 450            .ck807,
 451            .dsp1e2,
 452            .dspe60,
 453            .edsp,
 454            .fdivdu,
 455            .float1e2,
 456            .float1e3,
 457            .float3e4,
 458            .floate1,
 459            .fpuv2_df,
 460            .fpuv2_sf,
 461            .hard_tp,
 462            .high_registers,
 463            .hwdiv,
 464            .mp,
 465            .mp1e2,
 466            .nvic,
 467            .trust,
 468        }),
 469    };
 470    pub const c810: CpuModel = .{
 471        .name = "c810",
 472        .llvm_name = "c810",
 473        .features = featureSet(&[_]Feature{
 474            .@"7e10",
 475            .cache,
 476            .ck810,
 477            .dsp1e2,
 478            .dspe60,
 479            .edsp,
 480            .fdivdu,
 481            .float1e2,
 482            .floate1,
 483            .fpuv2_df,
 484            .fpuv2_sf,
 485            .hard_tp,
 486            .high_registers,
 487            .hwdiv,
 488            .mp,
 489            .mp1e2,
 490            .nvic,
 491            .trust,
 492        }),
 493    };
 494    pub const c810t: CpuModel = .{
 495        .name = "c810t",
 496        .llvm_name = "c810t",
 497        .features = featureSet(&[_]Feature{
 498            .@"7e10",
 499            .cache,
 500            .ck810,
 501            .dsp1e2,
 502            .dspe60,
 503            .edsp,
 504            .fdivdu,
 505            .float1e2,
 506            .floate1,
 507            .fpuv2_df,
 508            .fpuv2_sf,
 509            .hard_tp,
 510            .high_registers,
 511            .hwdiv,
 512            .mp,
 513            .mp1e2,
 514            .nvic,
 515            .trust,
 516        }),
 517    };
 518    pub const c810tv: CpuModel = .{
 519        .name = "c810tv",
 520        .llvm_name = "c810tv",
 521        .features = featureSet(&[_]Feature{
 522            .@"7e10",
 523            .cache,
 524            .ck810,
 525            .ck810v,
 526            .dsp1e2,
 527            .dspe60,
 528            .edsp,
 529            .fdivdu,
 530            .float1e2,
 531            .floate1,
 532            .fpuv2_df,
 533            .fpuv2_sf,
 534            .hard_tp,
 535            .high_registers,
 536            .hwdiv,
 537            .mp,
 538            .mp1e2,
 539            .nvic,
 540            .trust,
 541            .vdspv1,
 542        }),
 543    };
 544    pub const c810v: CpuModel = .{
 545        .name = "c810v",
 546        .llvm_name = "c810v",
 547        .features = featureSet(&[_]Feature{
 548            .@"7e10",
 549            .cache,
 550            .ck810,
 551            .ck810v,
 552            .dsp1e2,
 553            .dspe60,
 554            .edsp,
 555            .fdivdu,
 556            .float1e2,
 557            .floate1,
 558            .fpuv2_df,
 559            .fpuv2_sf,
 560            .hard_tp,
 561            .high_registers,
 562            .hwdiv,
 563            .mp,
 564            .mp1e2,
 565            .nvic,
 566            .trust,
 567            .vdspv1,
 568        }),
 569    };
 570    pub const c860: CpuModel = .{
 571        .name = "c860",
 572        .llvm_name = "c860",
 573        .features = featureSet(&[_]Feature{
 574            .@"10e60",
 575            .@"3e3r2",
 576            .@"3e3r3",
 577            .btst16,
 578            .cache,
 579            .ck860,
 580            .dspe60,
 581            .float7e60,
 582            .fpuv3_df,
 583            .fpuv3_hf,
 584            .fpuv3_hi,
 585            .fpuv3_sf,
 586            .hard_tp,
 587            .high_registers,
 588            .hwdiv,
 589            .mp,
 590            .mp1e2,
 591            .nvic,
 592            .trust,
 593        }),
 594    };
 595    pub const c860v: CpuModel = .{
 596        .name = "c860v",
 597        .llvm_name = "c860v",
 598        .features = featureSet(&[_]Feature{
 599            .@"10e60",
 600            .@"3e3r2",
 601            .@"3e3r3",
 602            .btst16,
 603            .cache,
 604            .ck860,
 605            .ck860v,
 606            .dspe60,
 607            .float7e60,
 608            .fpuv3_df,
 609            .fpuv3_hf,
 610            .fpuv3_hi,
 611            .fpuv3_sf,
 612            .hard_tp,
 613            .high_registers,
 614            .hwdiv,
 615            .mp,
 616            .mp1e2,
 617            .nvic,
 618            .trust,
 619            .vdsp2e60f,
 620            .vdspv2,
 621        }),
 622    };
 623    pub const ck801: CpuModel = .{
 624        .name = "ck801",
 625        .llvm_name = "ck801",
 626        .features = featureSet(&[_]Feature{
 627            .btst16,
 628            .ck801,
 629            .e1,
 630            .trust,
 631        }),
 632    };
 633    pub const ck801t: CpuModel = .{
 634        .name = "ck801t",
 635        .llvm_name = "ck801t",
 636        .features = featureSet(&[_]Feature{
 637            .btst16,
 638            .ck801,
 639            .e1,
 640            .trust,
 641        }),
 642    };
 643    pub const ck802: CpuModel = .{
 644        .name = "ck802",
 645        .llvm_name = "ck802",
 646        .features = featureSet(&[_]Feature{
 647            .btst16,
 648            .ck802,
 649            .e2,
 650            .nvic,
 651            .trust,
 652        }),
 653    };
 654    pub const ck802j: CpuModel = .{
 655        .name = "ck802j",
 656        .llvm_name = "ck802j",
 657        .features = featureSet(&[_]Feature{
 658            .btst16,
 659            .ck802,
 660            .e2,
 661            .java,
 662            .nvic,
 663            .trust,
 664        }),
 665    };
 666    pub const ck802t: CpuModel = .{
 667        .name = "ck802t",
 668        .llvm_name = "ck802t",
 669        .features = featureSet(&[_]Feature{
 670            .btst16,
 671            .ck802,
 672            .e2,
 673            .nvic,
 674            .trust,
 675        }),
 676    };
 677    pub const ck803: CpuModel = .{
 678        .name = "ck803",
 679        .llvm_name = "ck803",
 680        .features = featureSet(&[_]Feature{
 681            .btst16,
 682            .ck803,
 683            .hwdiv,
 684            .mp,
 685            .nvic,
 686            .trust,
 687        }),
 688    };
 689    pub const ck803e: CpuModel = .{
 690        .name = "ck803e",
 691        .llvm_name = "ck803e",
 692        .features = featureSet(&[_]Feature{
 693            .btst16,
 694            .ck803,
 695            .dsp1e2,
 696            .dspe60,
 697            .edsp,
 698            .hwdiv,
 699            .mp,
 700            .nvic,
 701            .trust,
 702        }),
 703    };
 704    pub const ck803ef: CpuModel = .{
 705        .name = "ck803ef",
 706        .llvm_name = "ck803ef",
 707        .features = featureSet(&[_]Feature{
 708            .btst16,
 709            .ck803,
 710            .dsp1e2,
 711            .dspe60,
 712            .edsp,
 713            .float1e3,
 714            .floate1,
 715            .fpuv2_sf,
 716            .hwdiv,
 717            .mp,
 718            .nvic,
 719            .trust,
 720        }),
 721    };
 722    pub const ck803efh: CpuModel = .{
 723        .name = "ck803efh",
 724        .llvm_name = "ck803efh",
 725        .features = featureSet(&[_]Feature{
 726            .btst16,
 727            .ck803,
 728            .dsp1e2,
 729            .dspe60,
 730            .edsp,
 731            .float1e3,
 732            .floate1,
 733            .fpuv2_sf,
 734            .hwdiv,
 735            .mp,
 736            .nvic,
 737            .trust,
 738        }),
 739    };
 740    pub const ck803efhr1: CpuModel = .{
 741        .name = "ck803efhr1",
 742        .llvm_name = "ck803efhr1",
 743        .features = featureSet(&[_]Feature{
 744            .@"3e3r1",
 745            .btst16,
 746            .ck803,
 747            .dsp1e2,
 748            .dspe60,
 749            .dspv2,
 750            .edsp,
 751            .float1e3,
 752            .floate1,
 753            .fpuv2_sf,
 754            .high_registers,
 755            .hwdiv,
 756            .mp,
 757            .nvic,
 758            .trust,
 759        }),
 760    };
 761    pub const ck803efhr2: CpuModel = .{
 762        .name = "ck803efhr2",
 763        .llvm_name = "ck803efhr2",
 764        .features = featureSet(&[_]Feature{
 765            .@"3e3r2",
 766            .@"3e3r3",
 767            .btst16,
 768            .ck803,
 769            .dsp1e2,
 770            .dspe60,
 771            .dspv2,
 772            .edsp,
 773            .float1e3,
 774            .floate1,
 775            .fpuv2_sf,
 776            .high_registers,
 777            .hwdiv,
 778            .mp,
 779            .nvic,
 780            .trust,
 781        }),
 782    };
 783    pub const ck803efhr3: CpuModel = .{
 784        .name = "ck803efhr3",
 785        .llvm_name = "ck803efhr3",
 786        .features = featureSet(&[_]Feature{
 787            .@"3e3r2",
 788            .@"3e3r3",
 789            .btst16,
 790            .ck803,
 791            .dsp1e2,
 792            .dspe60,
 793            .dspv2,
 794            .edsp,
 795            .float1e3,
 796            .floate1,
 797            .fpuv2_sf,
 798            .high_registers,
 799            .hwdiv,
 800            .mp,
 801            .nvic,
 802            .trust,
 803        }),
 804    };
 805    pub const ck803efht: CpuModel = .{
 806        .name = "ck803efht",
 807        .llvm_name = "ck803efht",
 808        .features = featureSet(&[_]Feature{
 809            .btst16,
 810            .ck803,
 811            .dsp1e2,
 812            .dspe60,
 813            .edsp,
 814            .float1e3,
 815            .floate1,
 816            .fpuv2_sf,
 817            .hwdiv,
 818            .mp,
 819            .nvic,
 820            .trust,
 821        }),
 822    };
 823    pub const ck803efhtr1: CpuModel = .{
 824        .name = "ck803efhtr1",
 825        .llvm_name = "ck803efhtr1",
 826        .features = featureSet(&[_]Feature{
 827            .@"3e3r1",
 828            .btst16,
 829            .ck803,
 830            .dsp1e2,
 831            .dspe60,
 832            .dspv2,
 833            .edsp,
 834            .float1e3,
 835            .floate1,
 836            .fpuv2_sf,
 837            .high_registers,
 838            .hwdiv,
 839            .mp,
 840            .nvic,
 841            .trust,
 842        }),
 843    };
 844    pub const ck803efhtr2: CpuModel = .{
 845        .name = "ck803efhtr2",
 846        .llvm_name = "ck803efhtr2",
 847        .features = featureSet(&[_]Feature{
 848            .@"3e3r2",
 849            .@"3e3r3",
 850            .btst16,
 851            .ck803,
 852            .dsp1e2,
 853            .dspe60,
 854            .dspv2,
 855            .edsp,
 856            .float1e3,
 857            .floate1,
 858            .fpuv2_sf,
 859            .high_registers,
 860            .hwdiv,
 861            .mp,
 862            .nvic,
 863            .trust,
 864        }),
 865    };
 866    pub const ck803efhtr3: CpuModel = .{
 867        .name = "ck803efhtr3",
 868        .llvm_name = "ck803efhtr3",
 869        .features = featureSet(&[_]Feature{
 870            .@"3e3r2",
 871            .@"3e3r3",
 872            .btst16,
 873            .ck803,
 874            .dsp1e2,
 875            .dspe60,
 876            .dspv2,
 877            .edsp,
 878            .float1e3,
 879            .floate1,
 880            .fpuv2_sf,
 881            .high_registers,
 882            .hwdiv,
 883            .mp,
 884            .nvic,
 885            .trust,
 886        }),
 887    };
 888    pub const ck803efr1: CpuModel = .{
 889        .name = "ck803efr1",
 890        .llvm_name = "ck803efr1",
 891        .features = featureSet(&[_]Feature{
 892            .@"3e3r1",
 893            .btst16,
 894            .ck803,
 895            .dsp1e2,
 896            .dspe60,
 897            .dspv2,
 898            .edsp,
 899            .float1e3,
 900            .floate1,
 901            .fpuv2_sf,
 902            .high_registers,
 903            .hwdiv,
 904            .mp,
 905            .nvic,
 906            .trust,
 907        }),
 908    };
 909    pub const ck803efr2: CpuModel = .{
 910        .name = "ck803efr2",
 911        .llvm_name = "ck803efr2",
 912        .features = featureSet(&[_]Feature{
 913            .@"3e3r2",
 914            .@"3e3r3",
 915            .btst16,
 916            .ck803,
 917            .dsp1e2,
 918            .dspe60,
 919            .dspv2,
 920            .edsp,
 921            .float1e3,
 922            .floate1,
 923            .fpuv2_sf,
 924            .high_registers,
 925            .hwdiv,
 926            .mp,
 927            .nvic,
 928            .trust,
 929        }),
 930    };
 931    pub const ck803efr3: CpuModel = .{
 932        .name = "ck803efr3",
 933        .llvm_name = "ck803efr3",
 934        .features = featureSet(&[_]Feature{
 935            .@"3e3r2",
 936            .@"3e3r3",
 937            .btst16,
 938            .ck803,
 939            .dsp1e2,
 940            .dspe60,
 941            .dspv2,
 942            .edsp,
 943            .float1e3,
 944            .floate1,
 945            .fpuv2_sf,
 946            .high_registers,
 947            .hwdiv,
 948            .mp,
 949            .nvic,
 950            .trust,
 951        }),
 952    };
 953    pub const ck803eft: CpuModel = .{
 954        .name = "ck803eft",
 955        .llvm_name = "ck803eft",
 956        .features = featureSet(&[_]Feature{
 957            .btst16,
 958            .ck803,
 959            .dsp1e2,
 960            .dspe60,
 961            .edsp,
 962            .float1e3,
 963            .floate1,
 964            .fpuv2_sf,
 965            .hwdiv,
 966            .mp,
 967            .nvic,
 968            .trust,
 969        }),
 970    };
 971    pub const ck803eftr1: CpuModel = .{
 972        .name = "ck803eftr1",
 973        .llvm_name = "ck803eftr1",
 974        .features = featureSet(&[_]Feature{
 975            .@"3e3r1",
 976            .btst16,
 977            .ck803,
 978            .dsp1e2,
 979            .dspe60,
 980            .dspv2,
 981            .edsp,
 982            .float1e3,
 983            .floate1,
 984            .fpuv2_sf,
 985            .high_registers,
 986            .hwdiv,
 987            .mp,
 988            .nvic,
 989            .trust,
 990        }),
 991    };
 992    pub const ck803eftr2: CpuModel = .{
 993        .name = "ck803eftr2",
 994        .llvm_name = "ck803eftr2",
 995        .features = featureSet(&[_]Feature{
 996            .@"3e3r2",
 997            .@"3e3r3",
 998            .btst16,
 999            .ck803,
1000            .dsp1e2,
1001            .dspe60,
1002            .dspv2,
1003            .edsp,
1004            .float1e3,
1005            .floate1,
1006            .fpuv2_sf,
1007            .high_registers,
1008            .hwdiv,
1009            .mp,
1010            .nvic,
1011            .trust,
1012        }),
1013    };
1014    pub const ck803eftr3: CpuModel = .{
1015        .name = "ck803eftr3",
1016        .llvm_name = "ck803eftr3",
1017        .features = featureSet(&[_]Feature{
1018            .@"3e3r2",
1019            .@"3e3r3",
1020            .btst16,
1021            .ck803,
1022            .dsp1e2,
1023            .dspe60,
1024            .dspv2,
1025            .edsp,
1026            .float1e3,
1027            .floate1,
1028            .fpuv2_sf,
1029            .high_registers,
1030            .hwdiv,
1031            .mp,
1032            .nvic,
1033            .trust,
1034        }),
1035    };
1036    pub const ck803eh: CpuModel = .{
1037        .name = "ck803eh",
1038        .llvm_name = "ck803eh",
1039        .features = featureSet(&[_]Feature{
1040            .btst16,
1041            .ck803,
1042            .dsp1e2,
1043            .dspe60,
1044            .edsp,
1045            .hwdiv,
1046            .mp,
1047            .nvic,
1048            .trust,
1049        }),
1050    };
1051    pub const ck803ehr1: CpuModel = .{
1052        .name = "ck803ehr1",
1053        .llvm_name = "ck803ehr1",
1054        .features = featureSet(&[_]Feature{
1055            .@"3e3r1",
1056            .@"3e3r3",
1057            .btst16,
1058            .ck803,
1059            .dsp1e2,
1060            .dspe60,
1061            .dspv2,
1062            .edsp,
1063            .high_registers,
1064            .hwdiv,
1065            .mp,
1066            .nvic,
1067            .trust,
1068        }),
1069    };
1070    pub const ck803ehr2: CpuModel = .{
1071        .name = "ck803ehr2",
1072        .llvm_name = "ck803ehr2",
1073        .features = featureSet(&[_]Feature{
1074            .@"3e3r2",
1075            .@"3e3r3",
1076            .btst16,
1077            .ck803,
1078            .dsp1e2,
1079            .dspe60,
1080            .dspv2,
1081            .edsp,
1082            .high_registers,
1083            .hwdiv,
1084            .mp,
1085            .nvic,
1086            .trust,
1087        }),
1088    };
1089    pub const ck803ehr3: CpuModel = .{
1090        .name = "ck803ehr3",
1091        .llvm_name = "ck803ehr3",
1092        .features = featureSet(&[_]Feature{
1093            .@"3e3r2",
1094            .@"3e3r3",
1095            .btst16,
1096            .ck803,
1097            .dsp1e2,
1098            .dspe60,
1099            .dspv2,
1100            .edsp,
1101            .high_registers,
1102            .hwdiv,
1103            .mp,
1104            .nvic,
1105            .trust,
1106        }),
1107    };
1108    pub const ck803eht: CpuModel = .{
1109        .name = "ck803eht",
1110        .llvm_name = "ck803eht",
1111        .features = featureSet(&[_]Feature{
1112            .btst16,
1113            .ck803,
1114            .dsp1e2,
1115            .dspe60,
1116            .edsp,
1117            .hwdiv,
1118            .mp,
1119            .nvic,
1120            .trust,
1121        }),
1122    };
1123    pub const ck803ehtr1: CpuModel = .{
1124        .name = "ck803ehtr1",
1125        .llvm_name = "ck803ehtr1",
1126        .features = featureSet(&[_]Feature{
1127            .@"3e3r1",
1128            .@"3e3r3",
1129            .btst16,
1130            .ck803,
1131            .dsp1e2,
1132            .dspe60,
1133            .dspv2,
1134            .edsp,
1135            .high_registers,
1136            .hwdiv,
1137            .mp,
1138            .nvic,
1139            .trust,
1140        }),
1141    };
1142    pub const ck803ehtr2: CpuModel = .{
1143        .name = "ck803ehtr2",
1144        .llvm_name = "ck803ehtr2",
1145        .features = featureSet(&[_]Feature{
1146            .@"3e3r2",
1147            .@"3e3r3",
1148            .btst16,
1149            .ck803,
1150            .dsp1e2,
1151            .dspe60,
1152            .dspv2,
1153            .edsp,
1154            .high_registers,
1155            .hwdiv,
1156            .mp,
1157            .nvic,
1158            .trust,
1159        }),
1160    };
1161    pub const ck803ehtr3: CpuModel = .{
1162        .name = "ck803ehtr3",
1163        .llvm_name = "ck803ehtr3",
1164        .features = featureSet(&[_]Feature{
1165            .@"3e3r2",
1166            .@"3e3r3",
1167            .btst16,
1168            .ck803,
1169            .dsp1e2,
1170            .dspe60,
1171            .dspv2,
1172            .edsp,
1173            .high_registers,
1174            .hwdiv,
1175            .mp,
1176            .nvic,
1177            .trust,
1178        }),
1179    };
1180    pub const ck803er1: CpuModel = .{
1181        .name = "ck803er1",
1182        .llvm_name = "ck803er1",
1183        .features = featureSet(&[_]Feature{
1184            .@"3e3r1",
1185            .@"3e3r3",
1186            .btst16,
1187            .ck803,
1188            .dsp1e2,
1189            .dspe60,
1190            .dspv2,
1191            .edsp,
1192            .high_registers,
1193            .hwdiv,
1194            .mp,
1195            .nvic,
1196            .trust,
1197        }),
1198    };
1199    pub const ck803er2: CpuModel = .{
1200        .name = "ck803er2",
1201        .llvm_name = "ck803er2",
1202        .features = featureSet(&[_]Feature{
1203            .@"3e3r2",
1204            .@"3e3r3",
1205            .btst16,
1206            .ck803,
1207            .dsp1e2,
1208            .dspe60,
1209            .dspv2,
1210            .edsp,
1211            .high_registers,
1212            .hwdiv,
1213            .mp,
1214            .nvic,
1215            .trust,
1216        }),
1217    };
1218    pub const ck803er3: CpuModel = .{
1219        .name = "ck803er3",
1220        .llvm_name = "ck803er3",
1221        .features = featureSet(&[_]Feature{
1222            .@"3e3r2",
1223            .@"3e3r3",
1224            .btst16,
1225            .ck803,
1226            .dsp1e2,
1227            .dspe60,
1228            .dspv2,
1229            .edsp,
1230            .high_registers,
1231            .hwdiv,
1232            .mp,
1233            .nvic,
1234            .trust,
1235        }),
1236    };
1237    pub const ck803et: CpuModel = .{
1238        .name = "ck803et",
1239        .llvm_name = "ck803et",
1240        .features = featureSet(&[_]Feature{
1241            .btst16,
1242            .ck803,
1243            .dsp1e2,
1244            .dspe60,
1245            .edsp,
1246            .hwdiv,
1247            .mp,
1248            .nvic,
1249            .trust,
1250        }),
1251    };
1252    pub const ck803etr1: CpuModel = .{
1253        .name = "ck803etr1",
1254        .llvm_name = "ck803etr1",
1255        .features = featureSet(&[_]Feature{
1256            .@"3e3r1",
1257            .@"3e3r3",
1258            .btst16,
1259            .ck803,
1260            .dsp1e2,
1261            .dspe60,
1262            .dspv2,
1263            .edsp,
1264            .high_registers,
1265            .hwdiv,
1266            .mp,
1267            .nvic,
1268            .trust,
1269        }),
1270    };
1271    pub const ck803etr2: CpuModel = .{
1272        .name = "ck803etr2",
1273        .llvm_name = "ck803etr2",
1274        .features = featureSet(&[_]Feature{
1275            .@"3e3r2",
1276            .@"3e3r3",
1277            .btst16,
1278            .ck803,
1279            .dsp1e2,
1280            .dspe60,
1281            .dspv2,
1282            .edsp,
1283            .high_registers,
1284            .hwdiv,
1285            .mp,
1286            .nvic,
1287            .trust,
1288        }),
1289    };
1290    pub const ck803etr3: CpuModel = .{
1291        .name = "ck803etr3",
1292        .llvm_name = "ck803etr3",
1293        .features = featureSet(&[_]Feature{
1294            .@"3e3r2",
1295            .@"3e3r3",
1296            .btst16,
1297            .ck803,
1298            .dsp1e2,
1299            .dspe60,
1300            .dspv2,
1301            .edsp,
1302            .high_registers,
1303            .hwdiv,
1304            .mp,
1305            .nvic,
1306            .trust,
1307        }),
1308    };
1309    pub const ck803f: CpuModel = .{
1310        .name = "ck803f",
1311        .llvm_name = "ck803f",
1312        .features = featureSet(&[_]Feature{
1313            .btst16,
1314            .ck803,
1315            .float1e3,
1316            .floate1,
1317            .fpuv2_sf,
1318            .hwdiv,
1319            .mp,
1320            .nvic,
1321            .trust,
1322        }),
1323    };
1324    pub const ck803fh: CpuModel = .{
1325        .name = "ck803fh",
1326        .llvm_name = "ck803fh",
1327        .features = featureSet(&[_]Feature{
1328            .btst16,
1329            .ck803,
1330            .float1e3,
1331            .floate1,
1332            .fpuv2_sf,
1333            .hwdiv,
1334            .mp,
1335            .nvic,
1336            .trust,
1337        }),
1338    };
1339    pub const ck803fhr1: CpuModel = .{
1340        .name = "ck803fhr1",
1341        .llvm_name = "ck803fhr1",
1342        .features = featureSet(&[_]Feature{
1343            .@"3e3r1",
1344            .@"3e3r3",
1345            .btst16,
1346            .ck803,
1347            .dspv2,
1348            .float1e3,
1349            .floate1,
1350            .fpuv2_sf,
1351            .hwdiv,
1352            .mp,
1353            .nvic,
1354            .trust,
1355        }),
1356    };
1357    pub const ck803fhr2: CpuModel = .{
1358        .name = "ck803fhr2",
1359        .llvm_name = "ck803fhr2",
1360        .features = featureSet(&[_]Feature{
1361            .@"3e3r2",
1362            .@"3e3r3",
1363            .btst16,
1364            .ck803,
1365            .dspv2,
1366            .float1e3,
1367            .floate1,
1368            .fpuv2_sf,
1369            .hwdiv,
1370            .mp,
1371            .nvic,
1372            .trust,
1373        }),
1374    };
1375    pub const ck803fhr3: CpuModel = .{
1376        .name = "ck803fhr3",
1377        .llvm_name = "ck803fhr3",
1378        .features = featureSet(&[_]Feature{
1379            .@"3e3r2",
1380            .@"3e3r3",
1381            .btst16,
1382            .ck803,
1383            .dspv2,
1384            .float1e3,
1385            .floate1,
1386            .fpuv2_sf,
1387            .hwdiv,
1388            .mp,
1389            .nvic,
1390            .trust,
1391        }),
1392    };
1393    pub const ck803fr1: CpuModel = .{
1394        .name = "ck803fr1",
1395        .llvm_name = "ck803fr1",
1396        .features = featureSet(&[_]Feature{
1397            .@"3e3r1",
1398            .@"3e3r3",
1399            .btst16,
1400            .ck803,
1401            .dspv2,
1402            .float1e3,
1403            .floate1,
1404            .fpuv2_sf,
1405            .hwdiv,
1406            .mp,
1407            .nvic,
1408            .trust,
1409        }),
1410    };
1411    pub const ck803fr2: CpuModel = .{
1412        .name = "ck803fr2",
1413        .llvm_name = "ck803fr2",
1414        .features = featureSet(&[_]Feature{
1415            .@"3e3r2",
1416            .@"3e3r3",
1417            .btst16,
1418            .ck803,
1419            .dspv2,
1420            .float1e3,
1421            .floate1,
1422            .fpuv2_sf,
1423            .hwdiv,
1424            .mp,
1425            .nvic,
1426            .trust,
1427        }),
1428    };
1429    pub const ck803fr3: CpuModel = .{
1430        .name = "ck803fr3",
1431        .llvm_name = "ck803fr3",
1432        .features = featureSet(&[_]Feature{
1433            .@"3e3r2",
1434            .@"3e3r3",
1435            .btst16,
1436            .ck803,
1437            .dspv2,
1438            .float1e3,
1439            .floate1,
1440            .fpuv2_sf,
1441            .hwdiv,
1442            .mp,
1443            .nvic,
1444            .trust,
1445        }),
1446    };
1447    pub const ck803ft: CpuModel = .{
1448        .name = "ck803ft",
1449        .llvm_name = "ck803ft",
1450        .features = featureSet(&[_]Feature{
1451            .btst16,
1452            .ck803,
1453            .float1e3,
1454            .floate1,
1455            .fpuv2_sf,
1456            .hwdiv,
1457            .mp,
1458            .nvic,
1459            .trust,
1460        }),
1461    };
1462    pub const ck803ftr1: CpuModel = .{
1463        .name = "ck803ftr1",
1464        .llvm_name = "ck803ftr1",
1465        .features = featureSet(&[_]Feature{
1466            .@"3e3r1",
1467            .btst16,
1468            .ck803,
1469            .dspv2,
1470            .float1e3,
1471            .floate1,
1472            .fpuv2_sf,
1473            .hwdiv,
1474            .mp,
1475            .nvic,
1476            .trust,
1477        }),
1478    };
1479    pub const ck803ftr2: CpuModel = .{
1480        .name = "ck803ftr2",
1481        .llvm_name = "ck803ftr2",
1482        .features = featureSet(&[_]Feature{
1483            .@"3e3r2",
1484            .@"3e3r3",
1485            .btst16,
1486            .ck803,
1487            .dspv2,
1488            .float1e3,
1489            .floate1,
1490            .fpuv2_sf,
1491            .hwdiv,
1492            .mp,
1493            .nvic,
1494            .trust,
1495        }),
1496    };
1497    pub const ck803ftr3: CpuModel = .{
1498        .name = "ck803ftr3",
1499        .llvm_name = "ck803ftr3",
1500        .features = featureSet(&[_]Feature{
1501            .@"3e3r2",
1502            .@"3e3r3",
1503            .btst16,
1504            .ck803,
1505            .dspv2,
1506            .float1e3,
1507            .floate1,
1508            .fpuv2_sf,
1509            .hwdiv,
1510            .mp,
1511            .nvic,
1512            .trust,
1513        }),
1514    };
1515    pub const ck803h: CpuModel = .{
1516        .name = "ck803h",
1517        .llvm_name = "ck803h",
1518        .features = featureSet(&[_]Feature{
1519            .btst16,
1520            .ck803,
1521            .hwdiv,
1522            .mp,
1523            .nvic,
1524            .trust,
1525        }),
1526    };
1527    pub const ck803hr1: CpuModel = .{
1528        .name = "ck803hr1",
1529        .llvm_name = "ck803hr1",
1530        .features = featureSet(&[_]Feature{
1531            .@"3e3r1",
1532            .@"3e3r3",
1533            .btst16,
1534            .ck803,
1535            .dspv2,
1536            .hwdiv,
1537            .mp,
1538            .nvic,
1539            .trust,
1540        }),
1541    };
1542    pub const ck803hr2: CpuModel = .{
1543        .name = "ck803hr2",
1544        .llvm_name = "ck803hr2",
1545        .features = featureSet(&[_]Feature{
1546            .@"3e3r2",
1547            .@"3e3r3",
1548            .btst16,
1549            .ck803,
1550            .dspv2,
1551            .hwdiv,
1552            .mp,
1553            .nvic,
1554            .trust,
1555        }),
1556    };
1557    pub const ck803hr3: CpuModel = .{
1558        .name = "ck803hr3",
1559        .llvm_name = "ck803hr3",
1560        .features = featureSet(&[_]Feature{
1561            .@"3e3r2",
1562            .@"3e3r3",
1563            .btst16,
1564            .ck803,
1565            .dspv2,
1566            .hwdiv,
1567            .mp,
1568            .nvic,
1569            .trust,
1570        }),
1571    };
1572    pub const ck803ht: CpuModel = .{
1573        .name = "ck803ht",
1574        .llvm_name = "ck803ht",
1575        .features = featureSet(&[_]Feature{
1576            .btst16,
1577            .ck803,
1578            .hwdiv,
1579            .mp,
1580            .nvic,
1581            .trust,
1582        }),
1583    };
1584    pub const ck803htr1: CpuModel = .{
1585        .name = "ck803htr1",
1586        .llvm_name = "ck803htr1",
1587        .features = featureSet(&[_]Feature{
1588            .@"3e3r1",
1589            .@"3e3r3",
1590            .btst16,
1591            .ck803,
1592            .dspv2,
1593            .hwdiv,
1594            .mp,
1595            .nvic,
1596            .trust,
1597        }),
1598    };
1599    pub const ck803htr2: CpuModel = .{
1600        .name = "ck803htr2",
1601        .llvm_name = "ck803htr2",
1602        .features = featureSet(&[_]Feature{
1603            .@"3e3r2",
1604            .@"3e3r3",
1605            .btst16,
1606            .ck803,
1607            .dspv2,
1608            .hwdiv,
1609            .mp,
1610            .nvic,
1611            .trust,
1612        }),
1613    };
1614    pub const ck803htr3: CpuModel = .{
1615        .name = "ck803htr3",
1616        .llvm_name = "ck803htr3",
1617        .features = featureSet(&[_]Feature{
1618            .@"3e3r2",
1619            .@"3e3r3",
1620            .btst16,
1621            .ck803,
1622            .dspv2,
1623            .hwdiv,
1624            .mp,
1625            .nvic,
1626            .trust,
1627        }),
1628    };
1629    pub const ck803r1: CpuModel = .{
1630        .name = "ck803r1",
1631        .llvm_name = "ck803r1",
1632        .features = featureSet(&[_]Feature{
1633            .@"3e3r1",
1634            .@"3e3r3",
1635            .btst16,
1636            .ck803,
1637            .dspv2,
1638            .hwdiv,
1639            .mp,
1640            .nvic,
1641            .trust,
1642        }),
1643    };
1644    pub const ck803r2: CpuModel = .{
1645        .name = "ck803r2",
1646        .llvm_name = "ck803r2",
1647        .features = featureSet(&[_]Feature{
1648            .@"3e3r2",
1649            .@"3e3r3",
1650            .btst16,
1651            .ck803,
1652            .dspv2,
1653            .hwdiv,
1654            .mp,
1655            .nvic,
1656            .trust,
1657        }),
1658    };
1659    pub const ck803r3: CpuModel = .{
1660        .name = "ck803r3",
1661        .llvm_name = "ck803r3",
1662        .features = featureSet(&[_]Feature{
1663            .@"3e3r2",
1664            .@"3e3r3",
1665            .btst16,
1666            .ck803,
1667            .dspv2,
1668            .hwdiv,
1669            .mp,
1670            .nvic,
1671            .trust,
1672        }),
1673    };
1674    pub const ck803s: CpuModel = .{
1675        .name = "ck803s",
1676        .llvm_name = "ck803s",
1677        .features = featureSet(&[_]Feature{
1678            .@"3e3r1",
1679            .btst16,
1680            .ck803,
1681            .ck803s,
1682            .hwdiv,
1683            .mp,
1684            .nvic,
1685            .trust,
1686        }),
1687    };
1688    pub const ck803se: CpuModel = .{
1689        .name = "ck803se",
1690        .llvm_name = "ck803se",
1691        .features = featureSet(&[_]Feature{
1692            .@"3e3r1",
1693            .btst16,
1694            .ck803,
1695            .ck803s,
1696            .dsp1e2,
1697            .dspe60,
1698            .edsp,
1699            .hwdiv,
1700            .mp,
1701            .nvic,
1702            .trust,
1703        }),
1704    };
1705    pub const ck803sef: CpuModel = .{
1706        .name = "ck803sef",
1707        .llvm_name = "ck803sef",
1708        .features = featureSet(&[_]Feature{
1709            .@"3e3r1",
1710            .btst16,
1711            .ck803,
1712            .ck803s,
1713            .dsp1e2,
1714            .dspe60,
1715            .edsp,
1716            .float1e3,
1717            .floate1,
1718            .fpuv2_sf,
1719            .hwdiv,
1720            .mp,
1721            .nvic,
1722            .trust,
1723        }),
1724    };
1725    pub const ck803sefn: CpuModel = .{
1726        .name = "ck803sefn",
1727        .llvm_name = "ck803sefn",
1728        .features = featureSet(&[_]Feature{
1729            .@"3e3r1",
1730            .btst16,
1731            .ck803,
1732            .ck803s,
1733            .dsp1e2,
1734            .dsp_silan,
1735            .dspe60,
1736            .edsp,
1737            .float1e3,
1738            .floate1,
1739            .fpuv2_sf,
1740            .hwdiv,
1741            .mp,
1742            .nvic,
1743            .trust,
1744        }),
1745    };
1746    pub const ck803sefnt: CpuModel = .{
1747        .name = "ck803sefnt",
1748        .llvm_name = "ck803sefnt",
1749        .features = featureSet(&[_]Feature{
1750            .@"3e3r1",
1751            .btst16,
1752            .ck803,
1753            .ck803s,
1754            .dsp1e2,
1755            .dsp_silan,
1756            .dspe60,
1757            .edsp,
1758            .float1e3,
1759            .floate1,
1760            .fpuv2_sf,
1761            .hwdiv,
1762            .mp,
1763            .nvic,
1764            .trust,
1765        }),
1766    };
1767    pub const ck803seft: CpuModel = .{
1768        .name = "ck803seft",
1769        .llvm_name = "ck803seft",
1770        .features = featureSet(&[_]Feature{
1771            .@"3e3r1",
1772            .btst16,
1773            .ck803,
1774            .ck803s,
1775            .dsp1e2,
1776            .dspe60,
1777            .edsp,
1778            .float1e3,
1779            .floate1,
1780            .fpuv2_sf,
1781            .hwdiv,
1782            .mp,
1783            .nvic,
1784            .trust,
1785        }),
1786    };
1787    pub const ck803sen: CpuModel = .{
1788        .name = "ck803sen",
1789        .llvm_name = "ck803sen",
1790        .features = featureSet(&[_]Feature{
1791            .@"3e3r1",
1792            .btst16,
1793            .ck803,
1794            .ck803s,
1795            .dsp1e2,
1796            .dsp_silan,
1797            .dspe60,
1798            .edsp,
1799            .hwdiv,
1800            .mp,
1801            .nvic,
1802            .trust,
1803        }),
1804    };
1805    pub const ck803sf: CpuModel = .{
1806        .name = "ck803sf",
1807        .llvm_name = "ck803sf",
1808        .features = featureSet(&[_]Feature{
1809            .@"3e3r1",
1810            .btst16,
1811            .ck803,
1812            .ck803s,
1813            .float1e3,
1814            .floate1,
1815            .fpuv2_sf,
1816            .hwdiv,
1817            .mp,
1818            .nvic,
1819            .trust,
1820        }),
1821    };
1822    pub const ck803sfn: CpuModel = .{
1823        .name = "ck803sfn",
1824        .llvm_name = "ck803sfn",
1825        .features = featureSet(&[_]Feature{
1826            .@"3e3r1",
1827            .btst16,
1828            .ck803,
1829            .ck803s,
1830            .dsp_silan,
1831            .float1e3,
1832            .floate1,
1833            .fpuv2_sf,
1834            .hwdiv,
1835            .mp,
1836            .nvic,
1837            .trust,
1838        }),
1839    };
1840    pub const ck803sn: CpuModel = .{
1841        .name = "ck803sn",
1842        .llvm_name = "ck803sn",
1843        .features = featureSet(&[_]Feature{
1844            .@"3e3r1",
1845            .btst16,
1846            .ck803,
1847            .ck803s,
1848            .dsp_silan,
1849            .hwdiv,
1850            .mp,
1851            .nvic,
1852            .trust,
1853        }),
1854    };
1855    pub const ck803snt: CpuModel = .{
1856        .name = "ck803snt",
1857        .llvm_name = "ck803snt",
1858        .features = featureSet(&[_]Feature{
1859            .@"3e3r1",
1860            .btst16,
1861            .ck803,
1862            .ck803s,
1863            .dsp_silan,
1864            .hwdiv,
1865            .mp,
1866            .nvic,
1867            .trust,
1868        }),
1869    };
1870    pub const ck803st: CpuModel = .{
1871        .name = "ck803st",
1872        .llvm_name = "ck803st",
1873        .features = featureSet(&[_]Feature{
1874            .@"3e3r1",
1875            .btst16,
1876            .ck803,
1877            .ck803s,
1878            .hwdiv,
1879            .mp,
1880            .nvic,
1881            .trust,
1882        }),
1883    };
1884    pub const ck803t: CpuModel = .{
1885        .name = "ck803t",
1886        .llvm_name = "ck803t",
1887        .features = featureSet(&[_]Feature{
1888            .btst16,
1889            .ck803,
1890            .hwdiv,
1891            .mp,
1892            .nvic,
1893            .trust,
1894        }),
1895    };
1896    pub const ck803tr1: CpuModel = .{
1897        .name = "ck803tr1",
1898        .llvm_name = "ck803tr1",
1899        .features = featureSet(&[_]Feature{
1900            .@"3e3r1",
1901            .@"3e3r3",
1902            .btst16,
1903            .ck803,
1904            .dspv2,
1905            .hwdiv,
1906            .mp,
1907            .nvic,
1908            .trust,
1909        }),
1910    };
1911    pub const ck803tr2: CpuModel = .{
1912        .name = "ck803tr2",
1913        .llvm_name = "ck803tr2",
1914        .features = featureSet(&[_]Feature{
1915            .@"3e3r2",
1916            .@"3e3r3",
1917            .btst16,
1918            .ck803,
1919            .dspv2,
1920            .hwdiv,
1921            .mp,
1922            .nvic,
1923            .trust,
1924        }),
1925    };
1926    pub const ck803tr3: CpuModel = .{
1927        .name = "ck803tr3",
1928        .llvm_name = "ck803tr3",
1929        .features = featureSet(&[_]Feature{
1930            .@"3e3r2",
1931            .@"3e3r3",
1932            .btst16,
1933            .ck803,
1934            .dspv2,
1935            .hwdiv,
1936            .mp,
1937            .nvic,
1938            .trust,
1939        }),
1940    };
1941    pub const ck804: CpuModel = .{
1942        .name = "ck804",
1943        .llvm_name = "ck804",
1944        .features = featureSet(&[_]Feature{
1945            .@"3e3r2",
1946            .@"3e3r3",
1947            .btst16,
1948            .ck803,
1949            .ck804,
1950            .hwdiv,
1951            .mp,
1952            .nvic,
1953            .trust,
1954        }),
1955    };
1956    pub const ck804e: CpuModel = .{
1957        .name = "ck804e",
1958        .llvm_name = "ck804e",
1959        .features = featureSet(&[_]Feature{
1960            .@"3e3r2",
1961            .@"3e3r3",
1962            .btst16,
1963            .ck803,
1964            .ck804,
1965            .dspv2,
1966            .high_registers,
1967            .hwdiv,
1968            .mp,
1969            .nvic,
1970            .trust,
1971        }),
1972    };
1973    pub const ck804ef: CpuModel = .{
1974        .name = "ck804ef",
1975        .llvm_name = "ck804ef",
1976        .features = featureSet(&[_]Feature{
1977            .@"3e3r2",
1978            .@"3e3r3",
1979            .btst16,
1980            .ck803,
1981            .ck804,
1982            .dspv2,
1983            .float1e3,
1984            .floate1,
1985            .fpuv2_sf,
1986            .high_registers,
1987            .hwdiv,
1988            .mp,
1989            .nvic,
1990            .trust,
1991        }),
1992    };
1993    pub const ck804efh: CpuModel = .{
1994        .name = "ck804efh",
1995        .llvm_name = "ck804efh",
1996        .features = featureSet(&[_]Feature{
1997            .@"3e3r2",
1998            .@"3e3r3",
1999            .btst16,
2000            .ck803,
2001            .ck804,
2002            .dspv2,
2003            .float1e3,
2004            .floate1,
2005            .fpuv2_sf,
2006            .high_registers,
2007            .hwdiv,
2008            .mp,
2009            .nvic,
2010            .trust,
2011        }),
2012    };
2013    pub const ck804efht: CpuModel = .{
2014        .name = "ck804efht",
2015        .llvm_name = "ck804efht",
2016        .features = featureSet(&[_]Feature{
2017            .@"3e3r2",
2018            .@"3e3r3",
2019            .btst16,
2020            .ck803,
2021            .ck804,
2022            .dspv2,
2023            .float1e3,
2024            .floate1,
2025            .fpuv2_sf,
2026            .high_registers,
2027            .hwdiv,
2028            .mp,
2029            .nvic,
2030            .trust,
2031        }),
2032    };
2033    pub const ck804eft: CpuModel = .{
2034        .name = "ck804eft",
2035        .llvm_name = "ck804eft",
2036        .features = featureSet(&[_]Feature{
2037            .@"3e3r2",
2038            .@"3e3r3",
2039            .btst16,
2040            .ck803,
2041            .ck804,
2042            .dspv2,
2043            .float1e3,
2044            .floate1,
2045            .fpuv2_sf,
2046            .high_registers,
2047            .hwdiv,
2048            .mp,
2049            .nvic,
2050            .trust,
2051        }),
2052    };
2053    pub const ck804eh: CpuModel = .{
2054        .name = "ck804eh",
2055        .llvm_name = "ck804eh",
2056        .features = featureSet(&[_]Feature{
2057            .@"3e3r2",
2058            .@"3e3r3",
2059            .btst16,
2060            .ck803,
2061            .ck804,
2062            .dspv2,
2063            .high_registers,
2064            .hwdiv,
2065            .mp,
2066            .nvic,
2067            .trust,
2068        }),
2069    };
2070    pub const ck804eht: CpuModel = .{
2071        .name = "ck804eht",
2072        .llvm_name = "ck804eht",
2073        .features = featureSet(&[_]Feature{
2074            .@"3e3r2",
2075            .@"3e3r3",
2076            .btst16,
2077            .ck803,
2078            .ck804,
2079            .dspv2,
2080            .high_registers,
2081            .hwdiv,
2082            .mp,
2083            .nvic,
2084            .trust,
2085        }),
2086    };
2087    pub const ck804et: CpuModel = .{
2088        .name = "ck804et",
2089        .llvm_name = "ck804et",
2090        .features = featureSet(&[_]Feature{
2091            .@"3e3r2",
2092            .@"3e3r3",
2093            .btst16,
2094            .ck803,
2095            .ck804,
2096            .dspv2,
2097            .high_registers,
2098            .hwdiv,
2099            .mp,
2100            .nvic,
2101            .trust,
2102        }),
2103    };
2104    pub const ck804f: CpuModel = .{
2105        .name = "ck804f",
2106        .llvm_name = "ck804f",
2107        .features = featureSet(&[_]Feature{
2108            .@"3e3r2",
2109            .@"3e3r3",
2110            .btst16,
2111            .ck803,
2112            .ck804,
2113            .float1e3,
2114            .floate1,
2115            .fpuv2_sf,
2116            .hwdiv,
2117            .mp,
2118            .nvic,
2119            .trust,
2120        }),
2121    };
2122    pub const ck804fh: CpuModel = .{
2123        .name = "ck804fh",
2124        .llvm_name = "ck804fh",
2125        .features = featureSet(&[_]Feature{
2126            .@"3e3r2",
2127            .@"3e3r3",
2128            .btst16,
2129            .ck803,
2130            .ck804,
2131            .float1e3,
2132            .floate1,
2133            .fpuv2_sf,
2134            .hwdiv,
2135            .mp,
2136            .nvic,
2137            .trust,
2138        }),
2139    };
2140    pub const ck804ft: CpuModel = .{
2141        .name = "ck804ft",
2142        .llvm_name = "ck804ft",
2143        .features = featureSet(&[_]Feature{
2144            .@"3e3r2",
2145            .@"3e3r3",
2146            .btst16,
2147            .ck803,
2148            .ck804,
2149            .float1e3,
2150            .floate1,
2151            .fpuv2_sf,
2152            .hwdiv,
2153            .mp,
2154            .nvic,
2155            .trust,
2156        }),
2157    };
2158    pub const ck804h: CpuModel = .{
2159        .name = "ck804h",
2160        .llvm_name = "ck804h",
2161        .features = featureSet(&[_]Feature{
2162            .@"3e3r2",
2163            .@"3e3r3",
2164            .btst16,
2165            .ck803,
2166            .ck804,
2167            .hwdiv,
2168            .mp,
2169            .nvic,
2170            .trust,
2171        }),
2172    };
2173    pub const ck804ht: CpuModel = .{
2174        .name = "ck804ht",
2175        .llvm_name = "ck804ht",
2176        .features = featureSet(&[_]Feature{
2177            .@"3e3r2",
2178            .@"3e3r3",
2179            .btst16,
2180            .ck803,
2181            .ck804,
2182            .hwdiv,
2183            .mp,
2184            .nvic,
2185            .trust,
2186        }),
2187    };
2188    pub const ck804t: CpuModel = .{
2189        .name = "ck804t",
2190        .llvm_name = "ck804t",
2191        .features = featureSet(&[_]Feature{
2192            .@"3e3r2",
2193            .@"3e3r3",
2194            .btst16,
2195            .ck803,
2196            .ck804,
2197            .hwdiv,
2198            .mp,
2199            .nvic,
2200            .trust,
2201        }),
2202    };
2203    pub const ck805: CpuModel = .{
2204        .name = "ck805",
2205        .llvm_name = "ck805",
2206        .features = featureSet(&[_]Feature{
2207            .@"3e3r2",
2208            .@"3e3r3",
2209            .btst16,
2210            .ck803,
2211            .ck805,
2212            .high_registers,
2213            .hwdiv,
2214            .mp,
2215            .nvic,
2216            .trust,
2217            .vdsp2e3,
2218            .vdspv2,
2219        }),
2220    };
2221    pub const ck805e: CpuModel = .{
2222        .name = "ck805e",
2223        .llvm_name = "ck805e",
2224        .features = featureSet(&[_]Feature{
2225            .@"3e3r2",
2226            .@"3e3r3",
2227            .btst16,
2228            .ck803,
2229            .ck805,
2230            .dspv2,
2231            .high_registers,
2232            .hwdiv,
2233            .mp,
2234            .nvic,
2235            .trust,
2236            .vdsp2e3,
2237            .vdspv2,
2238        }),
2239    };
2240    pub const ck805ef: CpuModel = .{
2241        .name = "ck805ef",
2242        .llvm_name = "ck805ef",
2243        .features = featureSet(&[_]Feature{
2244            .@"3e3r2",
2245            .@"3e3r3",
2246            .btst16,
2247            .ck803,
2248            .ck805,
2249            .dspv2,
2250            .float1e3,
2251            .floate1,
2252            .fpuv2_sf,
2253            .high_registers,
2254            .hwdiv,
2255            .mp,
2256            .nvic,
2257            .trust,
2258            .vdsp2e3,
2259            .vdspv2,
2260        }),
2261    };
2262    pub const ck805eft: CpuModel = .{
2263        .name = "ck805eft",
2264        .llvm_name = "ck805eft",
2265        .features = featureSet(&[_]Feature{
2266            .@"3e3r2",
2267            .@"3e3r3",
2268            .btst16,
2269            .ck803,
2270            .ck805,
2271            .dspv2,
2272            .float1e3,
2273            .floate1,
2274            .fpuv2_sf,
2275            .high_registers,
2276            .hwdiv,
2277            .mp,
2278            .nvic,
2279            .trust,
2280            .vdsp2e3,
2281            .vdspv2,
2282        }),
2283    };
2284    pub const ck805et: CpuModel = .{
2285        .name = "ck805et",
2286        .llvm_name = "ck805et",
2287        .features = featureSet(&[_]Feature{
2288            .@"3e3r2",
2289            .@"3e3r3",
2290            .btst16,
2291            .ck803,
2292            .ck805,
2293            .dspv2,
2294            .high_registers,
2295            .hwdiv,
2296            .mp,
2297            .nvic,
2298            .trust,
2299            .vdsp2e3,
2300            .vdspv2,
2301        }),
2302    };
2303    pub const ck805f: CpuModel = .{
2304        .name = "ck805f",
2305        .llvm_name = "ck805f",
2306        .features = featureSet(&[_]Feature{
2307            .@"3e3r2",
2308            .@"3e3r3",
2309            .btst16,
2310            .ck803,
2311            .ck805,
2312            .float1e3,
2313            .floate1,
2314            .fpuv2_sf,
2315            .high_registers,
2316            .hwdiv,
2317            .mp,
2318            .nvic,
2319            .trust,
2320            .vdsp2e3,
2321            .vdspv2,
2322        }),
2323    };
2324    pub const ck805ft: CpuModel = .{
2325        .name = "ck805ft",
2326        .llvm_name = "ck805ft",
2327        .features = featureSet(&[_]Feature{
2328            .@"3e3r2",
2329            .@"3e3r3",
2330            .btst16,
2331            .ck803,
2332            .ck805,
2333            .float1e3,
2334            .floate1,
2335            .fpuv2_sf,
2336            .high_registers,
2337            .hwdiv,
2338            .mp,
2339            .nvic,
2340            .trust,
2341            .vdsp2e3,
2342            .vdspv2,
2343        }),
2344    };
2345    pub const ck805t: CpuModel = .{
2346        .name = "ck805t",
2347        .llvm_name = "ck805t",
2348        .features = featureSet(&[_]Feature{
2349            .@"3e3r2",
2350            .@"3e3r3",
2351            .btst16,
2352            .ck803,
2353            .ck805,
2354            .high_registers,
2355            .hwdiv,
2356            .mp,
2357            .nvic,
2358            .trust,
2359            .vdsp2e3,
2360            .vdspv2,
2361        }),
2362    };
2363    pub const ck807: CpuModel = .{
2364        .name = "ck807",
2365        .llvm_name = "ck807",
2366        .features = featureSet(&[_]Feature{
2367            .cache,
2368            .ck807,
2369            .dsp1e2,
2370            .dspe60,
2371            .edsp,
2372            .hard_tp,
2373            .high_registers,
2374            .hwdiv,
2375            .mp,
2376            .mp1e2,
2377            .nvic,
2378            .trust,
2379        }),
2380    };
2381    pub const ck807e: CpuModel = .{
2382        .name = "ck807e",
2383        .llvm_name = "ck807e",
2384        .features = featureSet(&[_]Feature{
2385            .cache,
2386            .ck807,
2387            .dsp1e2,
2388            .dspe60,
2389            .edsp,
2390            .hard_tp,
2391            .high_registers,
2392            .hwdiv,
2393            .mp,
2394            .mp1e2,
2395            .nvic,
2396            .trust,
2397        }),
2398    };
2399    pub const ck807ef: CpuModel = .{
2400        .name = "ck807ef",
2401        .llvm_name = "ck807ef",
2402        .features = featureSet(&[_]Feature{
2403            .cache,
2404            .ck807,
2405            .dsp1e2,
2406            .dspe60,
2407            .edsp,
2408            .fdivdu,
2409            .float1e2,
2410            .float1e3,
2411            .float3e4,
2412            .floate1,
2413            .fpuv2_df,
2414            .fpuv2_sf,
2415            .hard_tp,
2416            .high_registers,
2417            .hwdiv,
2418            .mp,
2419            .mp1e2,
2420            .nvic,
2421            .trust,
2422        }),
2423    };
2424    pub const ck807f: CpuModel = .{
2425        .name = "ck807f",
2426        .llvm_name = "ck807f",
2427        .features = featureSet(&[_]Feature{
2428            .cache,
2429            .ck807,
2430            .dsp1e2,
2431            .dspe60,
2432            .edsp,
2433            .fdivdu,
2434            .float1e2,
2435            .float1e3,
2436            .float3e4,
2437            .floate1,
2438            .fpuv2_df,
2439            .fpuv2_sf,
2440            .hard_tp,
2441            .high_registers,
2442            .hwdiv,
2443            .mp,
2444            .mp1e2,
2445            .nvic,
2446            .trust,
2447        }),
2448    };
2449    pub const ck810: CpuModel = .{
2450        .name = "ck810",
2451        .llvm_name = "ck810",
2452        .features = featureSet(&[_]Feature{
2453            .@"7e10",
2454            .cache,
2455            .ck810,
2456            .dsp1e2,
2457            .dspe60,
2458            .edsp,
2459            .hard_tp,
2460            .high_registers,
2461            .hwdiv,
2462            .mp,
2463            .mp1e2,
2464            .nvic,
2465            .trust,
2466        }),
2467    };
2468    pub const ck810e: CpuModel = .{
2469        .name = "ck810e",
2470        .llvm_name = "ck810e",
2471        .features = featureSet(&[_]Feature{
2472            .@"7e10",
2473            .cache,
2474            .ck810,
2475            .dsp1e2,
2476            .dspe60,
2477            .edsp,
2478            .hard_tp,
2479            .high_registers,
2480            .hwdiv,
2481            .mp,
2482            .mp1e2,
2483            .nvic,
2484            .trust,
2485        }),
2486    };
2487    pub const ck810ef: CpuModel = .{
2488        .name = "ck810ef",
2489        .llvm_name = "ck810ef",
2490        .features = featureSet(&[_]Feature{
2491            .@"7e10",
2492            .cache,
2493            .ck810,
2494            .dsp1e2,
2495            .dspe60,
2496            .edsp,
2497            .fdivdu,
2498            .float1e2,
2499            .floate1,
2500            .fpuv2_df,
2501            .fpuv2_sf,
2502            .hard_tp,
2503            .high_registers,
2504            .hwdiv,
2505            .mp,
2506            .mp1e2,
2507            .nvic,
2508            .trust,
2509        }),
2510    };
2511    pub const ck810eft: CpuModel = .{
2512        .name = "ck810eft",
2513        .llvm_name = "ck810eft",
2514        .features = featureSet(&[_]Feature{
2515            .@"7e10",
2516            .cache,
2517            .ck810,
2518            .dsp1e2,
2519            .dspe60,
2520            .edsp,
2521            .fdivdu,
2522            .float1e2,
2523            .floate1,
2524            .fpuv2_df,
2525            .fpuv2_sf,
2526            .hard_tp,
2527            .high_registers,
2528            .hwdiv,
2529            .mp,
2530            .mp1e2,
2531            .nvic,
2532            .trust,
2533        }),
2534    };
2535    pub const ck810eftv: CpuModel = .{
2536        .name = "ck810eftv",
2537        .llvm_name = "ck810eftv",
2538        .features = featureSet(&[_]Feature{
2539            .@"7e10",
2540            .cache,
2541            .ck810,
2542            .ck810v,
2543            .dsp1e2,
2544            .dspe60,
2545            .edsp,
2546            .fdivdu,
2547            .float1e2,
2548            .floate1,
2549            .fpuv2_df,
2550            .fpuv2_sf,
2551            .hard_tp,
2552            .high_registers,
2553            .hwdiv,
2554            .mp,
2555            .mp1e2,
2556            .nvic,
2557            .trust,
2558            .vdspv1,
2559        }),
2560    };
2561    pub const ck810efv: CpuModel = .{
2562        .name = "ck810efv",
2563        .llvm_name = "ck810efv",
2564        .features = featureSet(&[_]Feature{
2565            .@"7e10",
2566            .cache,
2567            .ck810,
2568            .ck810v,
2569            .dsp1e2,
2570            .dspe60,
2571            .edsp,
2572            .fdivdu,
2573            .float1e2,
2574            .floate1,
2575            .fpuv2_df,
2576            .fpuv2_sf,
2577            .hard_tp,
2578            .high_registers,
2579            .hwdiv,
2580            .mp,
2581            .mp1e2,
2582            .nvic,
2583            .trust,
2584            .vdspv1,
2585        }),
2586    };
2587    pub const ck810et: CpuModel = .{
2588        .name = "ck810et",
2589        .llvm_name = "ck810et",
2590        .features = featureSet(&[_]Feature{
2591            .@"7e10",
2592            .cache,
2593            .ck810,
2594            .dsp1e2,
2595            .dspe60,
2596            .edsp,
2597            .hard_tp,
2598            .high_registers,
2599            .hwdiv,
2600            .mp,
2601            .mp1e2,
2602            .nvic,
2603            .trust,
2604        }),
2605    };
2606    pub const ck810etv: CpuModel = .{
2607        .name = "ck810etv",
2608        .llvm_name = "ck810etv",
2609        .features = featureSet(&[_]Feature{
2610            .@"7e10",
2611            .cache,
2612            .ck810,
2613            .ck810v,
2614            .dsp1e2,
2615            .dspe60,
2616            .edsp,
2617            .hard_tp,
2618            .high_registers,
2619            .hwdiv,
2620            .mp,
2621            .mp1e2,
2622            .nvic,
2623            .trust,
2624            .vdspv1,
2625        }),
2626    };
2627    pub const ck810ev: CpuModel = .{
2628        .name = "ck810ev",
2629        .llvm_name = "ck810ev",
2630        .features = featureSet(&[_]Feature{
2631            .@"7e10",
2632            .cache,
2633            .ck810,
2634            .ck810v,
2635            .dsp1e2,
2636            .dspe60,
2637            .edsp,
2638            .hard_tp,
2639            .high_registers,
2640            .hwdiv,
2641            .mp,
2642            .mp1e2,
2643            .nvic,
2644            .trust,
2645            .vdspv1,
2646        }),
2647    };
2648    pub const ck810f: CpuModel = .{
2649        .name = "ck810f",
2650        .llvm_name = "ck810f",
2651        .features = featureSet(&[_]Feature{
2652            .@"7e10",
2653            .cache,
2654            .ck810,
2655            .dsp1e2,
2656            .dspe60,
2657            .edsp,
2658            .fdivdu,
2659            .float1e2,
2660            .floate1,
2661            .fpuv2_df,
2662            .fpuv2_sf,
2663            .hard_tp,
2664            .high_registers,
2665            .hwdiv,
2666            .mp,
2667            .mp1e2,
2668            .nvic,
2669            .trust,
2670        }),
2671    };
2672    pub const ck810ft: CpuModel = .{
2673        .name = "ck810ft",
2674        .llvm_name = "ck810ft",
2675        .features = featureSet(&[_]Feature{
2676            .@"7e10",
2677            .cache,
2678            .ck810,
2679            .dsp1e2,
2680            .dspe60,
2681            .edsp,
2682            .fdivdu,
2683            .float1e2,
2684            .floate1,
2685            .fpuv2_df,
2686            .fpuv2_sf,
2687            .hard_tp,
2688            .high_registers,
2689            .hwdiv,
2690            .mp,
2691            .mp1e2,
2692            .nvic,
2693            .trust,
2694        }),
2695    };
2696    pub const ck810ftv: CpuModel = .{
2697        .name = "ck810ftv",
2698        .llvm_name = "ck810ftv",
2699        .features = featureSet(&[_]Feature{
2700            .@"7e10",
2701            .cache,
2702            .ck810,
2703            .ck810v,
2704            .dsp1e2,
2705            .dspe60,
2706            .edsp,
2707            .fdivdu,
2708            .float1e2,
2709            .floate1,
2710            .fpuv2_df,
2711            .fpuv2_sf,
2712            .hard_tp,
2713            .high_registers,
2714            .hwdiv,
2715            .mp,
2716            .mp1e2,
2717            .nvic,
2718            .trust,
2719            .vdspv1,
2720        }),
2721    };
2722    pub const ck810fv: CpuModel = .{
2723        .name = "ck810fv",
2724        .llvm_name = "ck810fv",
2725        .features = featureSet(&[_]Feature{
2726            .@"7e10",
2727            .cache,
2728            .ck810,
2729            .ck810v,
2730            .dsp1e2,
2731            .dspe60,
2732            .edsp,
2733            .fdivdu,
2734            .float1e2,
2735            .floate1,
2736            .fpuv2_df,
2737            .fpuv2_sf,
2738            .hard_tp,
2739            .high_registers,
2740            .hwdiv,
2741            .mp,
2742            .mp1e2,
2743            .nvic,
2744            .trust,
2745            .vdspv1,
2746        }),
2747    };
2748    pub const ck810t: CpuModel = .{
2749        .name = "ck810t",
2750        .llvm_name = "ck810t",
2751        .features = featureSet(&[_]Feature{
2752            .@"7e10",
2753            .cache,
2754            .ck810,
2755            .dsp1e2,
2756            .dspe60,
2757            .edsp,
2758            .hard_tp,
2759            .high_registers,
2760            .hwdiv,
2761            .mp,
2762            .mp1e2,
2763            .nvic,
2764            .trust,
2765        }),
2766    };
2767    pub const ck810tv: CpuModel = .{
2768        .name = "ck810tv",
2769        .llvm_name = "ck810tv",
2770        .features = featureSet(&[_]Feature{
2771            .@"7e10",
2772            .cache,
2773            .ck810,
2774            .ck810v,
2775            .dsp1e2,
2776            .dspe60,
2777            .edsp,
2778            .hard_tp,
2779            .high_registers,
2780            .hwdiv,
2781            .mp,
2782            .mp1e2,
2783            .nvic,
2784            .trust,
2785            .vdspv1,
2786        }),
2787    };
2788    pub const ck810v: CpuModel = .{
2789        .name = "ck810v",
2790        .llvm_name = "ck810v",
2791        .features = featureSet(&[_]Feature{
2792            .@"7e10",
2793            .cache,
2794            .ck810,
2795            .ck810v,
2796            .dsp1e2,
2797            .dspe60,
2798            .edsp,
2799            .hard_tp,
2800            .high_registers,
2801            .hwdiv,
2802            .mp,
2803            .mp1e2,
2804            .nvic,
2805            .trust,
2806            .vdspv1,
2807        }),
2808    };
2809    pub const ck860: CpuModel = .{
2810        .name = "ck860",
2811        .llvm_name = "ck860",
2812        .features = featureSet(&[_]Feature{
2813            .@"10e60",
2814            .@"3e3r2",
2815            .@"3e3r3",
2816            .btst16,
2817            .cache,
2818            .ck860,
2819            .dspe60,
2820            .hard_tp,
2821            .high_registers,
2822            .hwdiv,
2823            .mp,
2824            .mp1e2,
2825            .nvic,
2826            .trust,
2827        }),
2828    };
2829    pub const ck860f: CpuModel = .{
2830        .name = "ck860f",
2831        .llvm_name = "ck860f",
2832        .features = featureSet(&[_]Feature{
2833            .@"10e60",
2834            .@"3e3r2",
2835            .@"3e3r3",
2836            .btst16,
2837            .cache,
2838            .ck860,
2839            .dspe60,
2840            .float7e60,
2841            .fpuv3_df,
2842            .fpuv3_hf,
2843            .fpuv3_hi,
2844            .fpuv3_sf,
2845            .hard_tp,
2846            .high_registers,
2847            .hwdiv,
2848            .mp,
2849            .mp1e2,
2850            .nvic,
2851            .trust,
2852        }),
2853    };
2854    pub const ck860fv: CpuModel = .{
2855        .name = "ck860fv",
2856        .llvm_name = "ck860fv",
2857        .features = featureSet(&[_]Feature{
2858            .@"10e60",
2859            .@"3e3r2",
2860            .@"3e3r3",
2861            .btst16,
2862            .cache,
2863            .ck860,
2864            .ck860v,
2865            .dspe60,
2866            .float7e60,
2867            .fpuv3_df,
2868            .fpuv3_hf,
2869            .fpuv3_hi,
2870            .fpuv3_sf,
2871            .hard_tp,
2872            .high_registers,
2873            .hwdiv,
2874            .mp,
2875            .mp1e2,
2876            .nvic,
2877            .trust,
2878            .vdsp2e60f,
2879            .vdspv2,
2880        }),
2881    };
2882    pub const ck860v: CpuModel = .{
2883        .name = "ck860v",
2884        .llvm_name = "ck860v",
2885        .features = featureSet(&[_]Feature{
2886            .@"10e60",
2887            .@"3e3r2",
2888            .@"3e3r3",
2889            .btst16,
2890            .cache,
2891            .ck860,
2892            .ck860v,
2893            .dspe60,
2894            .hard_tp,
2895            .high_registers,
2896            .hwdiv,
2897            .mp,
2898            .mp1e2,
2899            .nvic,
2900            .trust,
2901            .vdsp2e60f,
2902            .vdspv2,
2903        }),
2904    };
2905    pub const e801: CpuModel = .{
2906        .name = "e801",
2907        .llvm_name = "e801",
2908        .features = featureSet(&[_]Feature{
2909            .btst16,
2910            .ck801,
2911            .e1,
2912            .trust,
2913        }),
2914    };
2915    pub const e802: CpuModel = .{
2916        .name = "e802",
2917        .llvm_name = "e802",
2918        .features = featureSet(&[_]Feature{
2919            .btst16,
2920            .ck802,
2921            .e2,
2922            .nvic,
2923            .trust,
2924        }),
2925    };
2926    pub const e802t: CpuModel = .{
2927        .name = "e802t",
2928        .llvm_name = "e802t",
2929        .features = featureSet(&[_]Feature{
2930            .btst16,
2931            .ck802,
2932            .e2,
2933            .nvic,
2934            .trust,
2935        }),
2936    };
2937    pub const e803: CpuModel = .{
2938        .name = "e803",
2939        .llvm_name = "e803",
2940        .features = featureSet(&[_]Feature{
2941            .@"3e3r2",
2942            .@"3e3r3",
2943            .btst16,
2944            .ck803,
2945            .hwdiv,
2946            .mp,
2947            .nvic,
2948            .trust,
2949        }),
2950    };
2951    pub const e803t: CpuModel = .{
2952        .name = "e803t",
2953        .llvm_name = "e803t",
2954        .features = featureSet(&[_]Feature{
2955            .@"3e3r2",
2956            .@"3e3r3",
2957            .btst16,
2958            .ck803,
2959            .hwdiv,
2960            .mp,
2961            .nvic,
2962            .trust,
2963        }),
2964    };
2965    pub const e804d: CpuModel = .{
2966        .name = "e804d",
2967        .llvm_name = "e804d",
2968        .features = featureSet(&[_]Feature{
2969            .@"3e3r2",
2970            .@"3e3r3",
2971            .btst16,
2972            .ck803,
2973            .ck804,
2974            .dspv2,
2975            .high_registers,
2976            .hwdiv,
2977            .mp,
2978            .nvic,
2979            .trust,
2980        }),
2981    };
2982    pub const e804df: CpuModel = .{
2983        .name = "e804df",
2984        .llvm_name = "e804df",
2985        .features = featureSet(&[_]Feature{
2986            .@"3e3r2",
2987            .@"3e3r3",
2988            .btst16,
2989            .ck803,
2990            .ck804,
2991            .dspv2,
2992            .float1e3,
2993            .floate1,
2994            .fpuv2_sf,
2995            .high_registers,
2996            .hwdiv,
2997            .mp,
2998            .nvic,
2999            .trust,
3000        }),
3001    };
3002    pub const e804dft: CpuModel = .{
3003        .name = "e804dft",
3004        .llvm_name = "e804dft",
3005        .features = featureSet(&[_]Feature{
3006            .@"3e3r2",
3007            .@"3e3r3",
3008            .btst16,
3009            .ck803,
3010            .ck804,
3011            .dspv2,
3012            .float1e3,
3013            .floate1,
3014            .fpuv2_sf,
3015            .high_registers,
3016            .hwdiv,
3017            .mp,
3018            .nvic,
3019            .trust,
3020        }),
3021    };
3022    pub const e804dt: CpuModel = .{
3023        .name = "e804dt",
3024        .llvm_name = "e804dt",
3025        .features = featureSet(&[_]Feature{
3026            .@"3e3r2",
3027            .@"3e3r3",
3028            .btst16,
3029            .ck803,
3030            .ck804,
3031            .dspv2,
3032            .high_registers,
3033            .hwdiv,
3034            .mp,
3035            .nvic,
3036            .trust,
3037        }),
3038    };
3039    pub const e804f: CpuModel = .{
3040        .name = "e804f",
3041        .llvm_name = "e804f",
3042        .features = featureSet(&[_]Feature{
3043            .@"3e3r2",
3044            .@"3e3r3",
3045            .btst16,
3046            .ck803,
3047            .ck804,
3048            .float1e3,
3049            .floate1,
3050            .fpuv2_sf,
3051            .hwdiv,
3052            .mp,
3053            .nvic,
3054            .trust,
3055        }),
3056    };
3057    pub const e804ft: CpuModel = .{
3058        .name = "e804ft",
3059        .llvm_name = "e804ft",
3060        .features = featureSet(&[_]Feature{
3061            .@"3e3r2",
3062            .@"3e3r3",
3063            .btst16,
3064            .ck803,
3065            .ck804,
3066            .float1e3,
3067            .floate1,
3068            .fpuv2_sf,
3069            .hwdiv,
3070            .mp,
3071            .nvic,
3072            .trust,
3073        }),
3074    };
3075    pub const generic: CpuModel = .{
3076        .name = "generic",
3077        .llvm_name = "generic",
3078        .features = featureSet(&[_]Feature{
3079            .btst16,
3080        }),
3081    };
3082    pub const @"i805": CpuModel = .{
3083        .name = "i805",
3084        .llvm_name = "i805",
3085        .features = featureSet(&[_]Feature{
3086            .@"3e3r2",
3087            .@"3e3r3",
3088            .btst16,
3089            .ck803,
3090            .ck805,
3091            .high_registers,
3092            .hwdiv,
3093            .mp,
3094            .nvic,
3095            .trust,
3096            .vdsp2e3,
3097            .vdspv2,
3098        }),
3099    };
3100    pub const i805f: CpuModel = .{
3101        .name = "i805f",
3102        .llvm_name = "i805f",
3103        .features = featureSet(&[_]Feature{
3104            .@"3e3r2",
3105            .@"3e3r3",
3106            .btst16,
3107            .ck803,
3108            .ck805,
3109            .float1e3,
3110            .floate1,
3111            .fpuv2_sf,
3112            .high_registers,
3113            .hwdiv,
3114            .mp,
3115            .nvic,
3116            .trust,
3117            .vdsp2e3,
3118            .vdspv2,
3119        }),
3120    };
3121    pub const r807: CpuModel = .{
3122        .name = "r807",
3123        .llvm_name = "r807",
3124        .features = featureSet(&[_]Feature{
3125            .cache,
3126            .ck807,
3127            .dsp1e2,
3128            .dspe60,
3129            .edsp,
3130            .hard_tp,
3131            .high_registers,
3132            .hwdiv,
3133            .mp,
3134            .mp1e2,
3135            .nvic,
3136            .trust,
3137        }),
3138    };
3139    pub const r807f: CpuModel = .{
3140        .name = "r807f",
3141        .llvm_name = "r807f",
3142        .features = featureSet(&[_]Feature{
3143            .cache,
3144            .ck807,
3145            .dsp1e2,
3146            .dspe60,
3147            .edsp,
3148            .fdivdu,
3149            .float1e2,
3150            .float1e3,
3151            .float3e4,
3152            .floate1,
3153            .fpuv2_df,
3154            .fpuv2_sf,
3155            .hard_tp,
3156            .high_registers,
3157            .hwdiv,
3158            .mp,
3159            .mp1e2,
3160            .nvic,
3161            .trust,
3162        }),
3163    };
3164    pub const s802: CpuModel = .{
3165        .name = "s802",
3166        .llvm_name = "s802",
3167        .features = featureSet(&[_]Feature{
3168            .btst16,
3169            .ck802,
3170            .e2,
3171            .nvic,
3172            .trust,
3173        }),
3174    };
3175    pub const s802t: CpuModel = .{
3176        .name = "s802t",
3177        .llvm_name = "s802t",
3178        .features = featureSet(&[_]Feature{
3179            .btst16,
3180            .ck802,
3181            .e2,
3182            .nvic,
3183            .trust,
3184        }),
3185    };
3186    pub const s803: CpuModel = .{
3187        .name = "s803",
3188        .llvm_name = "s803",
3189        .features = featureSet(&[_]Feature{
3190            .@"3e3r2",
3191            .@"3e3r3",
3192            .btst16,
3193            .ck803,
3194            .hwdiv,
3195            .mp,
3196            .nvic,
3197            .trust,
3198        }),
3199    };
3200    pub const s803t: CpuModel = .{
3201        .name = "s803t",
3202        .llvm_name = "s803t",
3203        .features = featureSet(&[_]Feature{
3204            .@"3e3r2",
3205            .@"3e3r3",
3206            .btst16,
3207            .ck803,
3208            .hwdiv,
3209            .mp,
3210            .nvic,
3211            .trust,
3212        }),
3213    };
3214};