authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-20 09:52:48+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-20 09:52:48+02:00
loge771583d88f18548b3b012df004ea9ef5201e5cf
treef527f4b6a4159d1d25681c2268e1bd9e3da23898
parent099361c14699cc28eb3fcefd1adf3bfd509883a0
parentffe1510d292ce7cf21dab97a7d33c3627d23ebf9

Merge pull request '`std.Target`: more fixes' (#37334) from alexrp/zig:target-fixes into master

Reviewed-on: https://codeberg.org/ziglang/zig/pulls/37334

15 files changed, 1142 insertions(+), 1030 deletions(-)

lib/compiler_rt/atomics.zig+1-1
......@@ -13,7 +13,7 @@ const symbol = compiler_rt.symbol;
1313// detail to keep the export logic clean and because we need some kind of CAS to
1414// implement the spinlocks.
1515const supports_atomic_ops = switch (arch) {
16 .msp430, .avr, .bpfel, .bpfeb => false,
16 .msp430, .avr, .bpfel, .bpfeb, .lanai => false,
1717 .arm, .armeb, .thumb, .thumbeb =>
1818 // The ARM v6m ISA has no ldrex/strex and so it's impossible to do CAS
1919 // operations (unless we're targeting Linux, the kernel provides a way to
lib/std/Target.zig+113-101
......@@ -2069,10 +2069,12 @@ pub const Cpu = struct {
20692069 .riscv64, .riscv64be => &riscv.cpu.generic_rv64,
20702070 .sparc => &sparc.cpu.v7,
20712071 .sparc64 => &sparc.cpu.v9, // SPARC can only be 64-bit from v9 and up.
2072 .ve => &ve.cpu.ve10,
20722073 .wasm32, .wasm64 => &wasm.cpu.mvp,
20732074 .x86_16 => &x86.cpu.i86,
20742075 .x86 => &x86.cpu.i386,
20752076 .x86_64 => &x86.cpu.x86_64,
2077 .xcore => &xcore.cpu.xs1b,
20762078 inline else => |a| &@field(Target, @tagName(a.family())).cpu.generic,
20772079 };
20782080 }
......@@ -2087,16 +2089,16 @@ pub const Cpu = struct {
20872089 /// `Os.Tag.freestanding`.
20882090 pub fn baseline(arch: Arch, os: Os) *const Model {
20892091 return switch (arch) {
2090 .alpha => &alpha.cpu.ev6,
2092 .alpha => &alpha.cpu.ev56,
20912093 .amdgcn => &amdgcn.cpu.gfx906,
20922094 .arm => switch (os.tag) {
20932095 .@"3ds" => &arm.cpu.mpcore,
2094 .vita => &arm.cpu.cortex_a9,
2096 .vita => &arm.cpu.kermit,
20952097 .gba => &arm.cpu.arm7tdmi,
20962098 else => &arm.cpu.baseline,
20972099 },
20982100 .thumb => switch (os.tag) {
2099 .vita => &arm.cpu.cortex_a9,
2101 .vita => &arm.cpu.kermit,
21002102 .gba => &arm.cpu.arm7tdmi,
21012103 else => &arm.cpu.baseline,
21022104 },
......@@ -2114,8 +2116,7 @@ pub const Cpu = struct {
21142116 .bpfel, .bpfeb => &bpf.cpu.v3,
21152117 .csky => &csky.cpu.ck810, // gcc/clang do not have a generic csky model.
21162118 .hexagon => &hexagon.cpu.hexagonv68, // gcc/clang do not have a generic hexagon model.
2117 .hppa => &hppa.cpu.pa_7300lc,
2118 .kvx => &kvx.cpu.coolidge_v2,
2119 .hppa => &hppa.cpu.pa_7000,
21192120 .lanai => &lanai.cpu.v11, // clang does not have a generic lanai model.
21202121 .loongarch32 => &loongarch.cpu.la32v1_0,
21212122 .loongarch64 => &loongarch.cpu.la64v1_0,
......@@ -2160,7 +2161,6 @@ pub const Cpu = struct {
21602161 .ps5 => &x86.cpu.znver2,
21612162 else => generic(arch),
21622163 },
2163 .xcore => &xcore.cpu.xs1b_generic,
21642164 .xtensa => &xtensa.cpu.esp32,
21652165 .wasm32, .wasm64 => &wasm.cpu.lime1,
21662166
......@@ -2599,6 +2599,16 @@ pub const DynamicLinker = struct {
25992599 if (ptrBitWidth_cpu_abi(cpu, abi) == 64) "64" else "",
26002600 }) else none,
26012601
2602 else => none,
2603 }
2604 else if (abi.isOpenHarmony())
2605 switch (cpu.arch) {
2606 .aarch64,
2607 .x86_64,
2608 => |arch| if (abi == .ohos) initFmt("/lib/ld-musl-{s}.so.1", .{@tagName(arch)}) else none,
2609
2610 .arm => if (abi == .ohoseabi) init("/lib/ld-musl-arm.so.1") else none,
2611
26022612 else => none,
26032613 }
26042614 else if (abi.isMusl())
......@@ -2750,7 +2760,6 @@ pub const DynamicLinker = struct {
27502760 },
27512761 }),
27522762
2753 .hppa,
27542763 .m68k,
27552764 .microblaze,
27562765 .microblazeel,
......@@ -2780,7 +2789,9 @@ pub const DynamicLinker = struct {
27802789 if (cpu.has(.mips, .nan2008)) "-linux-mipsn8" else "",
27812790 }),
27822791
2783 .powerpc => switch (abi) {
2792 .hppa,
2793 .powerpc,
2794 => switch (abi) {
27842795 .gnueabi,
27852796 .gnueabihf,
27862797 => init("/lib/ld.so.1"),
......@@ -3058,14 +3069,17 @@ pub fn ptrBitWidth(target: *const Target) u16 {
30583069pub fn stackAlignment(target: *const Target) u16 {
30593070 // Overrides for when the stack alignment is not equal to the pointer width.
30603071 switch (target.cpu.arch) {
3061 .ez80 => return 1,
3072 .avr,
3073 .ez80,
3074 => return 1,
30623075
3063 .m68k => return 2,
3076 .m68k => if (target.os.tag != .netbsd) return 2,
30643077
30653078 .amdgcn => return 4,
30663079
30673080 .arm,
30683081 .armeb,
3082 .hexagon,
30693083 .hppa,
30703084 .lanai,
30713085 .mips,
......@@ -3083,28 +3097,34 @@ pub fn stackAlignment(target: *const Target) u16 {
30833097 .hppa64,
30843098 .loongarch32,
30853099 .loongarch64,
3100 .m88k,
30863101 .mips64,
30873102 .mips64el,
3103 .powerpc,
3104 .powerpcle,
3105 .powerpc64,
3106 .powerpc64le,
30883107 .sparc64,
30893108 .ve,
30903109 .wasm32,
30913110 .wasm64,
30923111 .x86_64,
3112 .xtensa,
3113 .xtensaeb,
30933114 => return 16,
30943115
3095 // Some of the following prongs should really be testing the ABI, but our current `Abi` enum
3096 // can't handle that level of nuance yet.
3097 .powerpc64,
3098 .powerpc64le,
3099 => if (target.os.tag == .linux) return 16,
3100
31013116 .riscv32,
31023117 .riscv32be,
31033118 .riscv64,
31043119 .riscv64be,
31053120 => if (!target.cpu.has(.riscv, .e)) return 16,
31063121
3107 .x86 => if (target.os.tag != .windows and target.os.tag != .uefi) return 16,
3122 .x86 => switch (target.os.tag) {
3123 .hurd,
3124 .linux,
3125 => return 16,
3126 else => {},
3127 },
31083128
31093129 .kvx => return 32,
31103130
......@@ -3160,6 +3180,7 @@ pub fn cCharSignedness(target: *const Target) ?std.builtin.Signedness {
31603180 .powerpcle,
31613181 .powerpc64,
31623182 .powerpc64le,
3183 .propeller,
31633184 .s390x,
31643185 .riscv32,
31653186 .riscv32be,
......@@ -3223,6 +3244,7 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 {
32233244 .freestanding,
32243245 .other,
32253246 .ashetos,
3247 .tios,
32263248 => switch (target.cpu.arch) {
32273249 .msp430,
32283250 .x86_16,
......@@ -3245,6 +3267,13 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 {
32453267 .long, .ulong, .float => 32,
32463268 .double, .longdouble, .longlong, .ulonglong => 64,
32473269 },
3270 .ez80 => switch (c_type) {
3271 .char => 8,
3272 .short, .ushort => 16,
3273 .int, .uint => 24,
3274 .long, .ulong, .float, .double => 32,
3275 .longlong, .ulonglong, .longdouble => 64,
3276 },
32483277 else => switch (c_type) {
32493278 .char => 8,
32503279 .short, .ushort => 16,
......@@ -3302,88 +3331,73 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 {
33023331
33033332 .wasi,
33043333 .emscripten,
3305 => switch (target.cpu.arch) {
3306 .mips64,
3307 .mips64el,
3308 => switch (c_type) {
3309 .char => 8,
3310 .short, .ushort => 16,
3311 .int, .uint, .float => 32,
3312 .long, .ulong => switch (target.abi) {
3313 .gnuabin32, .muslabin32, .abin32 => 32,
3314 else => 64,
3315 },
3316 .longlong, .ulonglong, .double => 64,
3317 .longdouble => 128,
3334 => switch (c_type) {
3335 .char => 8,
3336 .short, .ushort => 16,
3337 .int, .uint, .float => 32,
3338 .long, .ulong => switch (target.os.tag) {
3339 .plan9 => 32, // This is certainly A Choice.
3340 else => target.ptrBitWidth(),
33183341 },
3319 .x86_64 => switch (c_type) {
3320 .char => 8,
3321 .short, .ushort => 16,
3322 .int, .uint, .float => 32,
3323 .long, .ulong => switch (target.abi) {
3324 .gnux32, .muslx32, .x32 => 32,
3325 else => 64,
3342 .longlong, .ulonglong, .double => 64,
3343 .longdouble => switch (target.cpu.arch) {
3344 .x86,
3345 .x86_64,
3346 => switch (target.abi) {
3347 .android, .ohos => 64,
3348 else => 80,
33263349 },
3327 .longlong, .ulonglong, .double => 64,
3328 .longdouble => 80,
3329 },
3330 else => switch (c_type) {
3331 .char => 8,
3332 .short, .ushort => 16,
3333 .int, .uint, .float => 32,
3334 .long, .ulong => target.ptrBitWidth(),
3335 .longlong, .ulonglong, .double => 64,
3336 .longdouble => switch (target.cpu.arch) {
3337 .x86 => switch (target.abi) {
3338 .android => 64,
3339 else => 80,
3340 },
33413350
3342 .powerpc,
3343 .powerpcle,
3344 => switch (target.abi) {
3345 .musleabi, .musleabihf => 64,
3346 else => switch (target.os.tag) {
3347 .netbsd,
3348 .openbsd,
3349 => 64,
3350 else => 128,
3351 },
3351 .powerpc,
3352 .powerpcle,
3353 => switch (target.abi) {
3354 .musleabi, .musleabihf => 64,
3355 else => switch (target.os.tag) {
3356 .netbsd,
3357 .openbsd,
3358 => 64,
3359 else => 128,
33523360 },
3361 },
33533362
3354 .powerpc64,
3355 .powerpc64le,
3356 => switch (target.abi) {
3357 .musl => 64,
3358 else => switch (target.os.tag) {
3359 .freebsd,
3360 .openbsd,
3361 => 64,
3362 else => 128,
3363 },
3363 .powerpc64,
3364 .powerpc64le,
3365 => switch (target.abi) {
3366 .musl => 64,
3367 else => switch (target.os.tag) {
3368 .freebsd,
3369 .openbsd,
3370 => 64,
3371 else => 128,
33643372 },
3373 },
33653374
3366 .alpha,
3367 .riscv32,
3368 .riscv32be,
3369 .riscv64,
3370 .riscv64be,
3371 .aarch64,
3372 .aarch64_be,
3373 .s390x,
3374 .mips64,
3375 .mips64el,
3376 .sparc,
3377 .sparc64,
3378 .wasm32,
3379 .wasm64,
3380 .loongarch32,
3381 .loongarch64,
3382 .ve,
3383 => 128,
3384
3385 else => 64,
3375 .alpha => switch (target.os.tag) {
3376 .netbsd,
3377 .openbsd,
3378 => 64,
3379 else => 128,
33863380 },
3381
3382 .riscv32,
3383 .riscv32be,
3384 .riscv64,
3385 .riscv64be,
3386 .aarch64,
3387 .aarch64_be,
3388 .s390x,
3389 .mips64,
3390 .mips64el,
3391 .sparc,
3392 .sparc64,
3393 .wasm32,
3394 .wasm64,
3395 .loongarch32,
3396 .loongarch64,
3397 .ve,
3398 => 128,
3399
3400 else => 64,
33873401 },
33883402 },
33893403
......@@ -3481,14 +3495,6 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 {
34813495 .longdouble => 80,
34823496 },
34833497
3484 .tios => switch (c_type) {
3485 .char => 8,
3486 .short, .ushort => 16,
3487 .int, .uint => 24,
3488 .long, .ulong, .float, .double => 32,
3489 .longlong, .ulonglong, .longdouble => 64,
3490 },
3491
34923498 .opengl => null,
34933499 };
34943500}
......@@ -3739,7 +3745,10 @@ pub fn cCallingConvention(target: *const Target) ?std.builtin.CallingConvention
37393745 .lanai => .{ .lanai_sysv = .{} },
37403746 .loongarch64 => .{ .loongarch64_lp64 = .{} },
37413747 .loongarch32 => .{ .loongarch32_ilp32 = .{} },
3742 .m68k => .{ .m68k_gnu = .{} },
3748 .m68k => switch (target.os.tag) {
3749 .netbsd => .{ .m68k_sysv = .{} },
3750 else => .{ .m68k_gnu = .{} },
3751 },
37433752 .m88k => .{ .m88k_sysv = .{} },
37443753 .microblaze, .microblazeel => .{ .microblaze_std = .{} },
37453754 .msp430 => .{ .msp430_eabi = .{} },
......@@ -3749,7 +3758,10 @@ pub fn cCallingConvention(target: *const Target) ?std.builtin.CallingConvention
37493758 .sh, .sheb => .{ .sh_gnu = .{} },
37503759 .ve => .{ .ve_sysv = .{} },
37513760 .xcore => .{ .xcore_xs1 = .{} },
3752 .xtensa, .xtensaeb => .{ .xtensa_call0 = .{} },
3761 .xtensa, .xtensaeb => switch (target.abi) {
3762 .call0 => .{ .xtensa_call0 = .{} },
3763 else => .{ .xtensa_windowed = .{} },
3764 },
37533765 .amdgcn => .{ .amdgcn_device = .{} },
37543766 .nvptx, .nvptx64 => .nvptx_device,
37553767 .spirv32, .spirv64 => .spirv_device,
lib/std/Target/alpha.zig+1-1
......@@ -32,7 +32,7 @@ pub const all_features = blk: {
3232 };
3333 result[@backingInt(Feature.fix)] = .{
3434 .llvm_name = null,
35 .description = "Enable floating point move and square root extensions",
35 .description = "Enable FPR-to-GPR move and square root extensions",
3636 .dependencies = featureSet(&[_]Feature{}),
3737 };
3838 result[@backingInt(Feature.max)] = .{
lib/std/Target/arm.zig+37-39
......@@ -1200,7 +1200,6 @@ pub const all_features = blk: {
12001200 .db,
12011201 .dsp,
12021202 .has_v7,
1203 .neon,
12041203 .perfmon,
12051204 }),
12061205 };
......@@ -1250,7 +1249,6 @@ pub const all_features = blk: {
12501249 .dsp,
12511250 .has_v7,
12521251 .mp,
1253 .neon,
12541252 .perfmon,
12551253 .trustzone,
12561254 .virtualization,
......@@ -1262,12 +1260,12 @@ pub const all_features = blk: {
12621260 .dependencies = featureSet(&[_]Feature{
12631261 .aclass,
12641262 .crc,
1265 .crypto,
12661263 .db,
12671264 .dsp,
12681265 .fp_armv8,
12691266 .has_v8_1a,
12701267 .mp,
1268 .neon,
12711269 .trustzone,
12721270 .virtualization,
12731271 }),
......@@ -1276,7 +1274,6 @@ pub const all_features = blk: {
12761274 .llvm_name = "armv8.1-m.main",
12771275 .description = "ARMv81mMainline architecture",
12781276 .dependencies = featureSet(&[_]Feature{
1279 .@"8msecext",
12801277 .acquire_release,
12811278 .db,
12821279 .has_v8_1m_main,
......@@ -1294,12 +1291,12 @@ pub const all_features = blk: {
12941291 .dependencies = featureSet(&[_]Feature{
12951292 .aclass,
12961293 .crc,
1297 .crypto,
12981294 .db,
12991295 .dsp,
13001296 .fp_armv8,
13011297 .has_v8_2a,
13021298 .mp,
1299 .neon,
13031300 .ras,
13041301 .trustzone,
13051302 .virtualization,
......@@ -1311,12 +1308,12 @@ pub const all_features = blk: {
13111308 .dependencies = featureSet(&[_]Feature{
13121309 .aclass,
13131310 .crc,
1314 .crypto,
13151311 .db,
13161312 .dsp,
13171313 .fp_armv8,
13181314 .has_v8_3a,
13191315 .mp,
1316 .neon,
13201317 .ras,
13211318 .trustzone,
13221319 .virtualization,
......@@ -1328,7 +1325,6 @@ pub const all_features = blk: {
13281325 .dependencies = featureSet(&[_]Feature{
13291326 .aclass,
13301327 .crc,
1331 .crypto,
13321328 .db,
13331329 .dsp,
13341330 .fp_armv8,
......@@ -1345,7 +1341,6 @@ pub const all_features = blk: {
13451341 .dependencies = featureSet(&[_]Feature{
13461342 .aclass,
13471343 .crc,
1348 .crypto,
13491344 .db,
13501345 .dsp,
13511346 .fp_armv8,
......@@ -1362,7 +1357,6 @@ pub const all_features = blk: {
13621357 .dependencies = featureSet(&[_]Feature{
13631358 .aclass,
13641359 .crc,
1365 .crypto,
13661360 .db,
13671361 .dsp,
13681362 .fp_armv8,
......@@ -1379,7 +1373,6 @@ pub const all_features = blk: {
13791373 .dependencies = featureSet(&[_]Feature{
13801374 .aclass,
13811375 .crc,
1382 .crypto,
13831376 .db,
13841377 .dsp,
13851378 .fp_armv8,
......@@ -1396,7 +1389,6 @@ pub const all_features = blk: {
13961389 .dependencies = featureSet(&[_]Feature{
13971390 .aclass,
13981391 .crc,
1399 .crypto,
14001392 .db,
14011393 .dsp,
14021394 .fp_armv8,
......@@ -1413,7 +1405,6 @@ pub const all_features = blk: {
14131405 .dependencies = featureSet(&[_]Feature{
14141406 .aclass,
14151407 .crc,
1416 .crypto,
14171408 .db,
14181409 .dsp,
14191410 .fp_armv8,
......@@ -1430,12 +1421,12 @@ pub const all_features = blk: {
14301421 .dependencies = featureSet(&[_]Feature{
14311422 .aclass,
14321423 .crc,
1433 .crypto,
14341424 .db,
14351425 .dsp,
14361426 .fp_armv8,
14371427 .has_v8,
14381428 .mp,
1429 .neon,
14391430 .trustzone,
14401431 .virtualization,
14411432 }),
......@@ -1444,7 +1435,6 @@ pub const all_features = blk: {
14441435 .llvm_name = "armv8-m.base",
14451436 .description = "ARMv8mBaseline architecture",
14461437 .dependencies = featureSet(&[_]Feature{
1447 .@"8msecext",
14481438 .acquire_release,
14491439 .db,
14501440 .has_v7clrex,
......@@ -1460,7 +1450,6 @@ pub const all_features = blk: {
14601450 .llvm_name = "armv8-m.main",
14611451 .description = "ARMv8mMainline architecture",
14621452 .dependencies = featureSet(&[_]Feature{
1463 .@"8msecext",
14641453 .acquire_release,
14651454 .db,
14661455 .has_v8m_main,
......@@ -1523,7 +1512,6 @@ pub const all_features = blk: {
15231512 .dependencies = featureSet(&[_]Feature{
15241513 .aclass,
15251514 .crc,
1526 .crypto,
15271515 .db,
15281516 .dsp,
15291517 .fp_armv8,
......@@ -1949,6 +1937,7 @@ pub const cpu = struct {
19491937 .llvm_name = "generic",
19501938 .features = featureSet(&[_]Feature{
19511939 .v7a,
1940 .vfp3d16,
19521941 }),
19531942 };
19541943 pub const cortex_a12: CpuModel = .{
......@@ -1960,7 +1949,6 @@ pub const cpu = struct {
19601949 .ret_addr_stack,
19611950 .trustzone,
19621951 .v7a,
1963 .vfp4,
19641952 .virtualization,
19651953 .vmlx_forwarding,
19661954 }),
......@@ -1976,7 +1964,6 @@ pub const cpu = struct {
19761964 .splat_vfp_neon,
19771965 .trustzone,
19781966 .v7a,
1979 .vfp4,
19801967 .virtualization,
19811968 .vldn_align,
19821969 }),
......@@ -1990,7 +1977,6 @@ pub const cpu = struct {
19901977 .ret_addr_stack,
19911978 .trustzone,
19921979 .v7a,
1993 .vfp4,
19941980 .virtualization,
19951981 .vmlx_forwarding,
19961982 }),
......@@ -2020,7 +2006,6 @@ pub const cpu = struct {
20202006 .slowfpvmlx,
20212007 .trustzone,
20222008 .v7a,
2023 .vfp4,
20242009 .vmlx_forwarding,
20252010 }),
20262011 };
......@@ -2072,7 +2057,6 @@ pub const cpu = struct {
20722057 .slowfpvmlx,
20732058 .trustzone,
20742059 .v7a,
2075 .vfp4,
20762060 .virtualization,
20772061 .vmlx_forwarding,
20782062 .vmlx_hazards,
......@@ -2186,7 +2170,6 @@ pub const cpu = struct {
21862170 .features = featureSet(&[_]Feature{
21872171 .avoid_partial_cpsr,
21882172 .expand_fp_mlx,
2189 .fp16,
21902173 .mp,
21912174 .muxed_units,
21922175 .neon_fpmovs,
......@@ -2285,12 +2268,10 @@ pub const cpu = struct {
22852268 .name = "cortex_m52",
22862269 .llvm_name = "cortex-m52",
22872270 .features = featureSet(&[_]Feature{
2288 .fp_armv8d16,
2271 .dsp,
22892272 .loop_align,
22902273 .mve1beat,
2291 .mve_fp,
22922274 .no_branch_predictor,
2293 .pacbti,
22942275 .slowfpvmlx,
22952276 .use_misched,
22962277 .v8_1m_main,
......@@ -2324,6 +2305,7 @@ pub const cpu = struct {
23242305 .name = "cortex_m85",
23252306 .llvm_name = "cortex-m85",
23262307 .features = featureSet(&[_]Feature{
2308 .@"8msecext",
23272309 .branch_align_64,
23282310 .dsp,
23292311 .m85,
......@@ -2364,16 +2346,13 @@ pub const cpu = struct {
23642346 .slowfpvfmx,
23652347 .slowfpvmlx,
23662348 .v7r,
2367 .vfp3d16,
23682349 }),
23692350 };
23702351 pub const cortex_r52: CpuModel = .{
23712352 .name = "cortex_r52",
23722353 .llvm_name = "cortex-r52",
23732354 .features = featureSet(&[_]Feature{
2374 .fp_armv8,
23752355 .fpao,
2376 .neon,
23772356 .use_misched,
23782357 .v8r,
23792358 }),
......@@ -2382,9 +2361,7 @@ pub const cpu = struct {
23822361 .name = "cortex_r52plus",
23832362 .llvm_name = "cortex-r52plus",
23842363 .features = featureSet(&[_]Feature{
2385 .fp_armv8,
23862364 .fpao,
2387 .neon,
23882365 .use_misched,
23892366 .v8r,
23902367 }),
......@@ -2394,7 +2371,6 @@ pub const cpu = struct {
23942371 .llvm_name = "cortex-r7",
23952372 .features = featureSet(&[_]Feature{
23962373 .avoid_partial_cpsr,
2397 .fp16,
23982374 .hwdiv_arm,
23992375 .mp,
24002376 .ret_addr_stack,
......@@ -2402,7 +2378,6 @@ pub const cpu = struct {
24022378 .slowfpvfmx,
24032379 .slowfpvmlx,
24042380 .v7r,
2405 .vfp3d16,
24062381 }),
24072382 };
24082383 pub const cortex_r8: CpuModel = .{
......@@ -2410,7 +2385,6 @@ pub const cpu = struct {
24102385 .llvm_name = "cortex-r8",
24112386 .features = featureSet(&[_]Feature{
24122387 .avoid_partial_cpsr,
2413 .fp16,
24142388 .hwdiv_arm,
24152389 .mp,
24162390 .ret_addr_stack,
......@@ -2418,7 +2392,6 @@ pub const cpu = struct {
24182392 .slowfpvfmx,
24192393 .slowfpvmlx,
24202394 .v7r,
2421 .vfp3d16,
24222395 }),
24232396 };
24242397 pub const cortex_x1: CpuModel = .{
......@@ -2445,6 +2418,7 @@ pub const cpu = struct {
24452418 .features = featureSet(&[_]Feature{
24462419 .avoid_movs_shop,
24472420 .avoid_partial_cpsr,
2421 .crypto,
24482422 .disable_postra_scheduler,
24492423 .neonfp,
24502424 .ret_addr_stack,
......@@ -2466,6 +2440,7 @@ pub const cpu = struct {
24662440 .name = "exynos_m1",
24672441 .llvm_name = null,
24682442 .features = featureSet(&[_]Feature{
2443 .crypto,
24692444 .expand_fp_mlx,
24702445 .fuse_aes,
24712446 .fuse_literals,
......@@ -2486,6 +2461,7 @@ pub const cpu = struct {
24862461 .name = "exynos_m2",
24872462 .llvm_name = null,
24882463 .features = featureSet(&[_]Feature{
2464 .crypto,
24892465 .expand_fp_mlx,
24902466 .fuse_aes,
24912467 .fuse_literals,
......@@ -2506,6 +2482,7 @@ pub const cpu = struct {
25062482 .name = "exynos_m3",
25072483 .llvm_name = "exynos-m3",
25082484 .features = featureSet(&[_]Feature{
2485 .crypto,
25092486 .expand_fp_mlx,
25102487 .fuse_aes,
25112488 .fuse_literals,
......@@ -2526,6 +2503,7 @@ pub const cpu = struct {
25262503 .name = "exynos_m4",
25272504 .llvm_name = "exynos-m4",
25282505 .features = featureSet(&[_]Feature{
2506 .crypto,
25292507 .dotprod,
25302508 .expand_fp_mlx,
25312509 .fullfp16,
......@@ -2548,6 +2526,7 @@ pub const cpu = struct {
25482526 .name = "exynos_m5",
25492527 .llvm_name = "exynos-m5",
25502528 .features = featureSet(&[_]Feature{
2529 .crypto,
25512530 .dotprod,
25522531 .expand_fp_mlx,
25532532 .fullfp16,
......@@ -2578,6 +2557,26 @@ pub const cpu = struct {
25782557 .v5te,
25792558 }),
25802559 };
2560 pub const kermit: CpuModel = .{
2561 .name = "kermit",
2562 .llvm_name = "cortex-a9",
2563 .features = featureSet(&[_]Feature{
2564 .avoid_partial_cpsr,
2565 .expand_fp_mlx,
2566 .fp16,
2567 .mp,
2568 .muxed_units,
2569 .neon,
2570 .neon_fpmovs,
2571 .prefer_vmovsr,
2572 .ret_addr_stack,
2573 .trustzone,
2574 .v7a,
2575 .vldn_align,
2576 .vmlx_forwarding,
2577 .vmlx_hazards,
2578 }),
2579 };
25812580 pub const krait: CpuModel = .{
25822581 .name = "krait",
25832582 .llvm_name = "krait",
......@@ -2586,6 +2585,7 @@ pub const cpu = struct {
25862585 .hwdiv,
25872586 .hwdiv_arm,
25882587 .muxed_units,
2588 .neon,
25892589 .ret_addr_stack,
25902590 .v7a,
25912591 .vfp4,
......@@ -2597,6 +2597,7 @@ pub const cpu = struct {
25972597 .name = "kryo",
25982598 .llvm_name = "kryo",
25992599 .features = featureSet(&[_]Feature{
2600 .crypto,
26002601 .v8a,
26012602 }),
26022603 };
......@@ -2666,9 +2667,7 @@ pub const cpu = struct {
26662667 .llvm_name = "star-mc1",
26672668 .features = featureSet(&[_]Feature{
26682669 .avoid_muls,
2669 .dsp,
26702670 .fix_cmse_cve_2021_35465,
2671 .fp_armv8d16sp,
26722671 .loop_align,
26732672 .no_branch_predictor,
26742673 .slowfpvfmx,
......@@ -2681,12 +2680,10 @@ pub const cpu = struct {
26812680 .name = "star_mc3",
26822681 .llvm_name = "star-mc3",
26832682 .features = featureSet(&[_]Feature{
2684 .fp_armv8d16,
2683 .dsp,
26852684 .loop_align,
26862685 .mve1beat,
2687 .mve_fp,
26882686 .no_branch_predictor,
2689 .pacbti,
26902687 .slowfpvmlx,
26912688 .use_misched,
26922689 .v8_1m_main,
......@@ -2730,6 +2727,7 @@ pub const cpu = struct {
27302727 .hwdiv,
27312728 .hwdiv_arm,
27322729 .mp,
2730 .neon,
27332731 .neonfp,
27342732 .prefer_ishst,
27352733 .prof_unpr,
lib/std/Target/bpf.zig-12
......@@ -7,8 +7,6 @@ const CpuModel = std.Target.Cpu.Model;
77pub const Feature = enum {
88 allows_misaligned_mem_access,
99 alu32,
10 dummy,
11 dwarfris,
1210};
1311
1412pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
......@@ -30,16 +28,6 @@ pub const all_features = blk: {
3028 .description = "Enable ALU32 instructions",
3129 .dependencies = featureSet(&[_]Feature{}),
3230 };
33 result[@backingInt(Feature.dummy)] = .{
34 .llvm_name = "dummy",
35 .description = "unused feature",
36 .dependencies = featureSet(&[_]Feature{}),
37 };
38 result[@backingInt(Feature.dwarfris)] = .{
39 .llvm_name = "dwarfris",
40 .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",
41 .dependencies = featureSet(&[_]Feature{}),
42 };
4331 const ti = @typeInfo(Feature);
4432 for (&result, 0..) |*elem, i| {
4533 elem.index = i;
lib/std/Target/csky.zig-457
......@@ -14,19 +14,6 @@ pub const Feature = enum {
1414 @"7e10",
1515 btst16,
1616 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,
3017 doloop,
3118 dsp1e2,
3219 dsp_silan,
......@@ -57,10 +44,6 @@ pub const Feature = enum {
5744 java,
5845 mp,
5946 mp1e2,
60 multiple_stld,
61 nvic,
62 pushpop,
63 smart,
6447 soft_tp,
6548 stack_size,
6649 trust,
......@@ -137,71 +120,6 @@ pub const all_features = blk: {
137120 .description = "Enable cache",
138121 .dependencies = featureSet(&[_]Feature{}),
139122 };
140 result[@backingInt(Feature.ccrt)] = .{
141 .llvm_name = "ccrt",
142 .description = "Use CSKY compiler runtime",
143 .dependencies = featureSet(&[_]Feature{}),
144 };
145 result[@backingInt(Feature.ck801)] = .{
146 .llvm_name = "ck801",
147 .description = "CSKY ck801 processors",
148 .dependencies = featureSet(&[_]Feature{}),
149 };
150 result[@backingInt(Feature.ck802)] = .{
151 .llvm_name = "ck802",
152 .description = "CSKY ck802 processors",
153 .dependencies = featureSet(&[_]Feature{}),
154 };
155 result[@backingInt(Feature.ck803)] = .{
156 .llvm_name = "ck803",
157 .description = "CSKY ck803 processors",
158 .dependencies = featureSet(&[_]Feature{}),
159 };
160 result[@backingInt(Feature.ck803s)] = .{
161 .llvm_name = "ck803s",
162 .description = "CSKY ck803s processors",
163 .dependencies = featureSet(&[_]Feature{}),
164 };
165 result[@backingInt(Feature.ck804)] = .{
166 .llvm_name = "ck804",
167 .description = "CSKY ck804 processors",
168 .dependencies = featureSet(&[_]Feature{}),
169 };
170 result[@backingInt(Feature.ck805)] = .{
171 .llvm_name = "ck805",
172 .description = "CSKY ck805 processors",
173 .dependencies = featureSet(&[_]Feature{}),
174 };
175 result[@backingInt(Feature.ck807)] = .{
176 .llvm_name = "ck807",
177 .description = "CSKY ck807 processors",
178 .dependencies = featureSet(&[_]Feature{}),
179 };
180 result[@backingInt(Feature.ck810)] = .{
181 .llvm_name = "ck810",
182 .description = "CSKY ck810 processors",
183 .dependencies = featureSet(&[_]Feature{}),
184 };
185 result[@backingInt(Feature.ck810v)] = .{
186 .llvm_name = "ck810v",
187 .description = "CSKY ck810v processors",
188 .dependencies = featureSet(&[_]Feature{}),
189 };
190 result[@backingInt(Feature.ck860)] = .{
191 .llvm_name = "ck860",
192 .description = "CSKY ck860 processors",
193 .dependencies = featureSet(&[_]Feature{}),
194 };
195 result[@backingInt(Feature.ck860v)] = .{
196 .llvm_name = "ck860v",
197 .description = "CSKY ck860v processors",
198 .dependencies = featureSet(&[_]Feature{}),
199 };
200 result[@backingInt(Feature.constpool)] = .{
201 .llvm_name = "constpool",
202 .description = "Dump the constant pool by compiler",
203 .dependencies = featureSet(&[_]Feature{}),
204 };
205123 result[@backingInt(Feature.doloop)] = .{
206124 .llvm_name = "doloop",
207125 .description = "Enable doloop instructions",
......@@ -360,26 +278,6 @@ pub const all_features = blk: {
360278 .@"3e7",
361279 }),
362280 };
363 result[@backingInt(Feature.multiple_stld)] = .{
364 .llvm_name = "multiple_stld",
365 .description = "Enable multiple load/store instructions",
366 .dependencies = featureSet(&[_]Feature{}),
367 };
368 result[@backingInt(Feature.nvic)] = .{
369 .llvm_name = "nvic",
370 .description = "Enable NVIC",
371 .dependencies = featureSet(&[_]Feature{}),
372 };
373 result[@backingInt(Feature.pushpop)] = .{
374 .llvm_name = "pushpop",
375 .description = "Enable push/pop instructions",
376 .dependencies = featureSet(&[_]Feature{}),
377 };
378 result[@backingInt(Feature.smart)] = .{
379 .llvm_name = "smart",
380 .description = "Let CPU work in Smart Mode",
381 .dependencies = featureSet(&[_]Feature{}),
382 };
383281 result[@backingInt(Feature.soft_tp)] = .{
384282 .llvm_name = "soft-tp",
385283 .description = "Disable TLS Pointer register",
......@@ -429,7 +327,6 @@ pub const cpu = struct {
429327 .llvm_name = "c807",
430328 .features = featureSet(&[_]Feature{
431329 .cache,
432 .ck807,
433330 .dsp1e2,
434331 .dspe60,
435332 .edsp,
......@@ -438,7 +335,6 @@ pub const cpu = struct {
438335 .hwdiv,
439336 .mp,
440337 .mp1e2,
441 .nvic,
442338 .trust,
443339 }),
444340 };
......@@ -447,7 +343,6 @@ pub const cpu = struct {
447343 .llvm_name = "c807f",
448344 .features = featureSet(&[_]Feature{
449345 .cache,
450 .ck807,
451346 .dsp1e2,
452347 .dspe60,
453348 .edsp,
......@@ -463,7 +358,6 @@ pub const cpu = struct {
463358 .hwdiv,
464359 .mp,
465360 .mp1e2,
466 .nvic,
467361 .trust,
468362 }),
469363 };
......@@ -473,7 +367,6 @@ pub const cpu = struct {
473367 .features = featureSet(&[_]Feature{
474368 .@"7e10",
475369 .cache,
476 .ck810,
477370 .dsp1e2,
478371 .dspe60,
479372 .edsp,
......@@ -487,7 +380,6 @@ pub const cpu = struct {
487380 .hwdiv,
488381 .mp,
489382 .mp1e2,
490 .nvic,
491383 .trust,
492384 }),
493385 };
......@@ -497,7 +389,6 @@ pub const cpu = struct {
497389 .features = featureSet(&[_]Feature{
498390 .@"7e10",
499391 .cache,
500 .ck810,
501392 .dsp1e2,
502393 .dspe60,
503394 .edsp,
......@@ -511,7 +402,6 @@ pub const cpu = struct {
511402 .hwdiv,
512403 .mp,
513404 .mp1e2,
514 .nvic,
515405 .trust,
516406 }),
517407 };
......@@ -521,8 +411,6 @@ pub const cpu = struct {
521411 .features = featureSet(&[_]Feature{
522412 .@"7e10",
523413 .cache,
524 .ck810,
525 .ck810v,
526414 .dsp1e2,
527415 .dspe60,
528416 .edsp,
......@@ -536,7 +424,6 @@ pub const cpu = struct {
536424 .hwdiv,
537425 .mp,
538426 .mp1e2,
539 .nvic,
540427 .trust,
541428 .vdspv1,
542429 }),
......@@ -547,8 +434,6 @@ pub const cpu = struct {
547434 .features = featureSet(&[_]Feature{
548435 .@"7e10",
549436 .cache,
550 .ck810,
551 .ck810v,
552437 .dsp1e2,
553438 .dspe60,
554439 .edsp,
......@@ -562,7 +447,6 @@ pub const cpu = struct {
562447 .hwdiv,
563448 .mp,
564449 .mp1e2,
565 .nvic,
566450 .trust,
567451 .vdspv1,
568452 }),
......@@ -576,7 +460,6 @@ pub const cpu = struct {
576460 .@"3e3r3",
577461 .btst16,
578462 .cache,
579 .ck860,
580463 .dspe60,
581464 .float7e60,
582465 .fpuv3_df,
......@@ -588,7 +471,6 @@ pub const cpu = struct {
588471 .hwdiv,
589472 .mp,
590473 .mp1e2,
591 .nvic,
592474 .trust,
593475 }),
594476 };
......@@ -601,8 +483,6 @@ pub const cpu = struct {
601483 .@"3e3r3",
602484 .btst16,
603485 .cache,
604 .ck860,
605 .ck860v,
606486 .dspe60,
607487 .float7e60,
608488 .fpuv3_df,
......@@ -614,7 +494,6 @@ pub const cpu = struct {
614494 .hwdiv,
615495 .mp,
616496 .mp1e2,
617 .nvic,
618497 .trust,
619498 .vdsp2e60f,
620499 .vdspv2,
......@@ -625,7 +504,6 @@ pub const cpu = struct {
625504 .llvm_name = "ck801",
626505 .features = featureSet(&[_]Feature{
627506 .btst16,
628 .ck801,
629507 .e1,
630508 .trust,
631509 }),
......@@ -635,7 +513,6 @@ pub const cpu = struct {
635513 .llvm_name = "ck801t",
636514 .features = featureSet(&[_]Feature{
637515 .btst16,
638 .ck801,
639516 .e1,
640517 .trust,
641518 }),
......@@ -645,9 +522,7 @@ pub const cpu = struct {
645522 .llvm_name = "ck802",
646523 .features = featureSet(&[_]Feature{
647524 .btst16,
648 .ck802,
649525 .e2,
650 .nvic,
651526 .trust,
652527 }),
653528 };
......@@ -656,10 +531,8 @@ pub const cpu = struct {
656531 .llvm_name = "ck802j",
657532 .features = featureSet(&[_]Feature{
658533 .btst16,
659 .ck802,
660534 .e2,
661535 .java,
662 .nvic,
663536 .trust,
664537 }),
665538 };
......@@ -668,9 +541,7 @@ pub const cpu = struct {
668541 .llvm_name = "ck802t",
669542 .features = featureSet(&[_]Feature{
670543 .btst16,
671 .ck802,
672544 .e2,
673 .nvic,
674545 .trust,
675546 }),
676547 };
......@@ -679,10 +550,8 @@ pub const cpu = struct {
679550 .llvm_name = "ck803",
680551 .features = featureSet(&[_]Feature{
681552 .btst16,
682 .ck803,
683553 .hwdiv,
684554 .mp,
685 .nvic,
686555 .trust,
687556 }),
688557 };
......@@ -691,13 +560,11 @@ pub const cpu = struct {
691560 .llvm_name = "ck803e",
692561 .features = featureSet(&[_]Feature{
693562 .btst16,
694 .ck803,
695563 .dsp1e2,
696564 .dspe60,
697565 .edsp,
698566 .hwdiv,
699567 .mp,
700 .nvic,
701568 .trust,
702569 }),
703570 };
......@@ -706,7 +573,6 @@ pub const cpu = struct {
706573 .llvm_name = "ck803ef",
707574 .features = featureSet(&[_]Feature{
708575 .btst16,
709 .ck803,
710576 .dsp1e2,
711577 .dspe60,
712578 .edsp,
......@@ -715,7 +581,6 @@ pub const cpu = struct {
715581 .fpuv2_sf,
716582 .hwdiv,
717583 .mp,
718 .nvic,
719584 .trust,
720585 }),
721586 };
......@@ -724,7 +589,6 @@ pub const cpu = struct {
724589 .llvm_name = "ck803efh",
725590 .features = featureSet(&[_]Feature{
726591 .btst16,
727 .ck803,
728592 .dsp1e2,
729593 .dspe60,
730594 .edsp,
......@@ -733,7 +597,6 @@ pub const cpu = struct {
733597 .fpuv2_sf,
734598 .hwdiv,
735599 .mp,
736 .nvic,
737600 .trust,
738601 }),
739602 };
......@@ -743,7 +606,6 @@ pub const cpu = struct {
743606 .features = featureSet(&[_]Feature{
744607 .@"3e3r1",
745608 .btst16,
746 .ck803,
747609 .dsp1e2,
748610 .dspe60,
749611 .dspv2,
......@@ -754,7 +616,6 @@ pub const cpu = struct {
754616 .high_registers,
755617 .hwdiv,
756618 .mp,
757 .nvic,
758619 .trust,
759620 }),
760621 };
......@@ -765,7 +626,6 @@ pub const cpu = struct {
765626 .@"3e3r2",
766627 .@"3e3r3",
767628 .btst16,
768 .ck803,
769629 .dsp1e2,
770630 .dspe60,
771631 .dspv2,
......@@ -776,7 +636,6 @@ pub const cpu = struct {
776636 .high_registers,
777637 .hwdiv,
778638 .mp,
779 .nvic,
780639 .trust,
781640 }),
782641 };
......@@ -787,7 +646,6 @@ pub const cpu = struct {
787646 .@"3e3r2",
788647 .@"3e3r3",
789648 .btst16,
790 .ck803,
791649 .dsp1e2,
792650 .dspe60,
793651 .dspv2,
......@@ -798,7 +656,6 @@ pub const cpu = struct {
798656 .high_registers,
799657 .hwdiv,
800658 .mp,
801 .nvic,
802659 .trust,
803660 }),
804661 };
......@@ -807,7 +664,6 @@ pub const cpu = struct {
807664 .llvm_name = "ck803efht",
808665 .features = featureSet(&[_]Feature{
809666 .btst16,
810 .ck803,
811667 .dsp1e2,
812668 .dspe60,
813669 .edsp,
......@@ -816,7 +672,6 @@ pub const cpu = struct {
816672 .fpuv2_sf,
817673 .hwdiv,
818674 .mp,
819 .nvic,
820675 .trust,
821676 }),
822677 };
......@@ -826,7 +681,6 @@ pub const cpu = struct {
826681 .features = featureSet(&[_]Feature{
827682 .@"3e3r1",
828683 .btst16,
829 .ck803,
830684 .dsp1e2,
831685 .dspe60,
832686 .dspv2,
......@@ -837,7 +691,6 @@ pub const cpu = struct {
837691 .high_registers,
838692 .hwdiv,
839693 .mp,
840 .nvic,
841694 .trust,
842695 }),
843696 };
......@@ -848,7 +701,6 @@ pub const cpu = struct {
848701 .@"3e3r2",
849702 .@"3e3r3",
850703 .btst16,
851 .ck803,
852704 .dsp1e2,
853705 .dspe60,
854706 .dspv2,
......@@ -859,7 +711,6 @@ pub const cpu = struct {
859711 .high_registers,
860712 .hwdiv,
861713 .mp,
862 .nvic,
863714 .trust,
864715 }),
865716 };
......@@ -870,7 +721,6 @@ pub const cpu = struct {
870721 .@"3e3r2",
871722 .@"3e3r3",
872723 .btst16,
873 .ck803,
874724 .dsp1e2,
875725 .dspe60,
876726 .dspv2,
......@@ -881,7 +731,6 @@ pub const cpu = struct {
881731 .high_registers,
882732 .hwdiv,
883733 .mp,
884 .nvic,
885734 .trust,
886735 }),
887736 };
......@@ -891,7 +740,6 @@ pub const cpu = struct {
891740 .features = featureSet(&[_]Feature{
892741 .@"3e3r1",
893742 .btst16,
894 .ck803,
895743 .dsp1e2,
896744 .dspe60,
897745 .dspv2,
......@@ -902,7 +750,6 @@ pub const cpu = struct {
902750 .high_registers,
903751 .hwdiv,
904752 .mp,
905 .nvic,
906753 .trust,
907754 }),
908755 };
......@@ -913,7 +760,6 @@ pub const cpu = struct {
913760 .@"3e3r2",
914761 .@"3e3r3",
915762 .btst16,
916 .ck803,
917763 .dsp1e2,
918764 .dspe60,
919765 .dspv2,
......@@ -924,7 +770,6 @@ pub const cpu = struct {
924770 .high_registers,
925771 .hwdiv,
926772 .mp,
927 .nvic,
928773 .trust,
929774 }),
930775 };
......@@ -935,7 +780,6 @@ pub const cpu = struct {
935780 .@"3e3r2",
936781 .@"3e3r3",
937782 .btst16,
938 .ck803,
939783 .dsp1e2,
940784 .dspe60,
941785 .dspv2,
......@@ -946,7 +790,6 @@ pub const cpu = struct {
946790 .high_registers,
947791 .hwdiv,
948792 .mp,
949 .nvic,
950793 .trust,
951794 }),
952795 };
......@@ -955,7 +798,6 @@ pub const cpu = struct {
955798 .llvm_name = "ck803eft",
956799 .features = featureSet(&[_]Feature{
957800 .btst16,
958 .ck803,
959801 .dsp1e2,
960802 .dspe60,
961803 .edsp,
......@@ -964,7 +806,6 @@ pub const cpu = struct {
964806 .fpuv2_sf,
965807 .hwdiv,
966808 .mp,
967 .nvic,
968809 .trust,
969810 }),
970811 };
......@@ -974,7 +815,6 @@ pub const cpu = struct {
974815 .features = featureSet(&[_]Feature{
975816 .@"3e3r1",
976817 .btst16,
977 .ck803,
978818 .dsp1e2,
979819 .dspe60,
980820 .dspv2,
......@@ -985,7 +825,6 @@ pub const cpu = struct {
985825 .high_registers,
986826 .hwdiv,
987827 .mp,
988 .nvic,
989828 .trust,
990829 }),
991830 };
......@@ -996,7 +835,6 @@ pub const cpu = struct {
996835 .@"3e3r2",
997836 .@"3e3r3",
998837 .btst16,
999 .ck803,
1000838 .dsp1e2,
1001839 .dspe60,
1002840 .dspv2,
......@@ -1007,7 +845,6 @@ pub const cpu = struct {
1007845 .high_registers,
1008846 .hwdiv,
1009847 .mp,
1010 .nvic,
1011848 .trust,
1012849 }),
1013850 };
......@@ -1018,7 +855,6 @@ pub const cpu = struct {
1018855 .@"3e3r2",
1019856 .@"3e3r3",
1020857 .btst16,
1021 .ck803,
1022858 .dsp1e2,
1023859 .dspe60,
1024860 .dspv2,
......@@ -1029,7 +865,6 @@ pub const cpu = struct {
1029865 .high_registers,
1030866 .hwdiv,
1031867 .mp,
1032 .nvic,
1033868 .trust,
1034869 }),
1035870 };
......@@ -1038,13 +873,11 @@ pub const cpu = struct {
1038873 .llvm_name = "ck803eh",
1039874 .features = featureSet(&[_]Feature{
1040875 .btst16,
1041 .ck803,
1042876 .dsp1e2,
1043877 .dspe60,
1044878 .edsp,
1045879 .hwdiv,
1046880 .mp,
1047 .nvic,
1048881 .trust,
1049882 }),
1050883 };
......@@ -1055,7 +888,6 @@ pub const cpu = struct {
1055888 .@"3e3r1",
1056889 .@"3e3r3",
1057890 .btst16,
1058 .ck803,
1059891 .dsp1e2,
1060892 .dspe60,
1061893 .dspv2,
......@@ -1063,7 +895,6 @@ pub const cpu = struct {
1063895 .high_registers,
1064896 .hwdiv,
1065897 .mp,
1066 .nvic,
1067898 .trust,
1068899 }),
1069900 };
......@@ -1074,7 +905,6 @@ pub const cpu = struct {
1074905 .@"3e3r2",
1075906 .@"3e3r3",
1076907 .btst16,
1077 .ck803,
1078908 .dsp1e2,
1079909 .dspe60,
1080910 .dspv2,
......@@ -1082,7 +912,6 @@ pub const cpu = struct {
1082912 .high_registers,
1083913 .hwdiv,
1084914 .mp,
1085 .nvic,
1086915 .trust,
1087916 }),
1088917 };
......@@ -1093,7 +922,6 @@ pub const cpu = struct {
1093922 .@"3e3r2",
1094923 .@"3e3r3",
1095924 .btst16,
1096 .ck803,
1097925 .dsp1e2,
1098926 .dspe60,
1099927 .dspv2,
......@@ -1101,7 +929,6 @@ pub const cpu = struct {
1101929 .high_registers,
1102930 .hwdiv,
1103931 .mp,
1104 .nvic,
1105932 .trust,
1106933 }),
1107934 };
......@@ -1110,13 +937,11 @@ pub const cpu = struct {
1110937 .llvm_name = "ck803eht",
1111938 .features = featureSet(&[_]Feature{
1112939 .btst16,
1113 .ck803,
1114940 .dsp1e2,
1115941 .dspe60,
1116942 .edsp,
1117943 .hwdiv,
1118944 .mp,
1119 .nvic,
1120945 .trust,
1121946 }),
1122947 };
......@@ -1127,7 +952,6 @@ pub const cpu = struct {
1127952 .@"3e3r1",
1128953 .@"3e3r3",
1129954 .btst16,
1130 .ck803,
1131955 .dsp1e2,
1132956 .dspe60,
1133957 .dspv2,
......@@ -1135,7 +959,6 @@ pub const cpu = struct {
1135959 .high_registers,
1136960 .hwdiv,
1137961 .mp,
1138 .nvic,
1139962 .trust,
1140963 }),
1141964 };
......@@ -1146,7 +969,6 @@ pub const cpu = struct {
1146969 .@"3e3r2",
1147970 .@"3e3r3",
1148971 .btst16,
1149 .ck803,
1150972 .dsp1e2,
1151973 .dspe60,
1152974 .dspv2,
......@@ -1154,7 +976,6 @@ pub const cpu = struct {
1154976 .high_registers,
1155977 .hwdiv,
1156978 .mp,
1157 .nvic,
1158979 .trust,
1159980 }),
1160981 };
......@@ -1165,7 +986,6 @@ pub const cpu = struct {
1165986 .@"3e3r2",
1166987 .@"3e3r3",
1167988 .btst16,
1168 .ck803,
1169989 .dsp1e2,
1170990 .dspe60,
1171991 .dspv2,
......@@ -1173,7 +993,6 @@ pub const cpu = struct {
1173993 .high_registers,
1174994 .hwdiv,
1175995 .mp,
1176 .nvic,
1177996 .trust,
1178997 }),
1179998 };
......@@ -1184,7 +1003,6 @@ pub const cpu = struct {
11841003 .@"3e3r1",
11851004 .@"3e3r3",
11861005 .btst16,
1187 .ck803,
11881006 .dsp1e2,
11891007 .dspe60,
11901008 .dspv2,
......@@ -1192,7 +1010,6 @@ pub const cpu = struct {
11921010 .high_registers,
11931011 .hwdiv,
11941012 .mp,
1195 .nvic,
11961013 .trust,
11971014 }),
11981015 };
......@@ -1203,7 +1020,6 @@ pub const cpu = struct {
12031020 .@"3e3r2",
12041021 .@"3e3r3",
12051022 .btst16,
1206 .ck803,
12071023 .dsp1e2,
12081024 .dspe60,
12091025 .dspv2,
......@@ -1211,7 +1027,6 @@ pub const cpu = struct {
12111027 .high_registers,
12121028 .hwdiv,
12131029 .mp,
1214 .nvic,
12151030 .trust,
12161031 }),
12171032 };
......@@ -1222,7 +1037,6 @@ pub const cpu = struct {
12221037 .@"3e3r2",
12231038 .@"3e3r3",
12241039 .btst16,
1225 .ck803,
12261040 .dsp1e2,
12271041 .dspe60,
12281042 .dspv2,
......@@ -1230,7 +1044,6 @@ pub const cpu = struct {
12301044 .high_registers,
12311045 .hwdiv,
12321046 .mp,
1233 .nvic,
12341047 .trust,
12351048 }),
12361049 };
......@@ -1239,13 +1052,11 @@ pub const cpu = struct {
12391052 .llvm_name = "ck803et",
12401053 .features = featureSet(&[_]Feature{
12411054 .btst16,
1242 .ck803,
12431055 .dsp1e2,
12441056 .dspe60,
12451057 .edsp,
12461058 .hwdiv,
12471059 .mp,
1248 .nvic,
12491060 .trust,
12501061 }),
12511062 };
......@@ -1256,7 +1067,6 @@ pub const cpu = struct {
12561067 .@"3e3r1",
12571068 .@"3e3r3",
12581069 .btst16,
1259 .ck803,
12601070 .dsp1e2,
12611071 .dspe60,
12621072 .dspv2,
......@@ -1264,7 +1074,6 @@ pub const cpu = struct {
12641074 .high_registers,
12651075 .hwdiv,
12661076 .mp,
1267 .nvic,
12681077 .trust,
12691078 }),
12701079 };
......@@ -1275,7 +1084,6 @@ pub const cpu = struct {
12751084 .@"3e3r2",
12761085 .@"3e3r3",
12771086 .btst16,
1278 .ck803,
12791087 .dsp1e2,
12801088 .dspe60,
12811089 .dspv2,
......@@ -1283,7 +1091,6 @@ pub const cpu = struct {
12831091 .high_registers,
12841092 .hwdiv,
12851093 .mp,
1286 .nvic,
12871094 .trust,
12881095 }),
12891096 };
......@@ -1294,7 +1101,6 @@ pub const cpu = struct {
12941101 .@"3e3r2",
12951102 .@"3e3r3",
12961103 .btst16,
1297 .ck803,
12981104 .dsp1e2,
12991105 .dspe60,
13001106 .dspv2,
......@@ -1302,7 +1108,6 @@ pub const cpu = struct {
13021108 .high_registers,
13031109 .hwdiv,
13041110 .mp,
1305 .nvic,
13061111 .trust,
13071112 }),
13081113 };
......@@ -1311,13 +1116,11 @@ pub const cpu = struct {
13111116 .llvm_name = "ck803f",
13121117 .features = featureSet(&[_]Feature{
13131118 .btst16,
1314 .ck803,
13151119 .float1e3,
13161120 .floate1,
13171121 .fpuv2_sf,
13181122 .hwdiv,
13191123 .mp,
1320 .nvic,
13211124 .trust,
13221125 }),
13231126 };
......@@ -1326,13 +1129,11 @@ pub const cpu = struct {
13261129 .llvm_name = "ck803fh",
13271130 .features = featureSet(&[_]Feature{
13281131 .btst16,
1329 .ck803,
13301132 .float1e3,
13311133 .floate1,
13321134 .fpuv2_sf,
13331135 .hwdiv,
13341136 .mp,
1335 .nvic,
13361137 .trust,
13371138 }),
13381139 };
......@@ -1343,14 +1144,12 @@ pub const cpu = struct {
13431144 .@"3e3r1",
13441145 .@"3e3r3",
13451146 .btst16,
1346 .ck803,
13471147 .dspv2,
13481148 .float1e3,
13491149 .floate1,
13501150 .fpuv2_sf,
13511151 .hwdiv,
13521152 .mp,
1353 .nvic,
13541153 .trust,
13551154 }),
13561155 };
......@@ -1361,14 +1160,12 @@ pub const cpu = struct {
13611160 .@"3e3r2",
13621161 .@"3e3r3",
13631162 .btst16,
1364 .ck803,
13651163 .dspv2,
13661164 .float1e3,
13671165 .floate1,
13681166 .fpuv2_sf,
13691167 .hwdiv,
13701168 .mp,
1371 .nvic,
13721169 .trust,
13731170 }),
13741171 };
......@@ -1379,14 +1176,12 @@ pub const cpu = struct {
13791176 .@"3e3r2",
13801177 .@"3e3r3",
13811178 .btst16,
1382 .ck803,
13831179 .dspv2,
13841180 .float1e3,
13851181 .floate1,
13861182 .fpuv2_sf,
13871183 .hwdiv,
13881184 .mp,
1389 .nvic,
13901185 .trust,
13911186 }),
13921187 };
......@@ -1397,14 +1192,12 @@ pub const cpu = struct {
13971192 .@"3e3r1",
13981193 .@"3e3r3",
13991194 .btst16,
1400 .ck803,
14011195 .dspv2,
14021196 .float1e3,
14031197 .floate1,
14041198 .fpuv2_sf,
14051199 .hwdiv,
14061200 .mp,
1407 .nvic,
14081201 .trust,
14091202 }),
14101203 };
......@@ -1415,14 +1208,12 @@ pub const cpu = struct {
14151208 .@"3e3r2",
14161209 .@"3e3r3",
14171210 .btst16,
1418 .ck803,
14191211 .dspv2,
14201212 .float1e3,
14211213 .floate1,
14221214 .fpuv2_sf,
14231215 .hwdiv,
14241216 .mp,
1425 .nvic,
14261217 .trust,
14271218 }),
14281219 };
......@@ -1433,14 +1224,12 @@ pub const cpu = struct {
14331224 .@"3e3r2",
14341225 .@"3e3r3",
14351226 .btst16,
1436 .ck803,
14371227 .dspv2,
14381228 .float1e3,
14391229 .floate1,
14401230 .fpuv2_sf,
14411231 .hwdiv,
14421232 .mp,
1443 .nvic,
14441233 .trust,
14451234 }),
14461235 };
......@@ -1449,13 +1238,11 @@ pub const cpu = struct {
14491238 .llvm_name = "ck803ft",
14501239 .features = featureSet(&[_]Feature{
14511240 .btst16,
1452 .ck803,
14531241 .float1e3,
14541242 .floate1,
14551243 .fpuv2_sf,
14561244 .hwdiv,
14571245 .mp,
1458 .nvic,
14591246 .trust,
14601247 }),
14611248 };
......@@ -1465,14 +1252,12 @@ pub const cpu = struct {
14651252 .features = featureSet(&[_]Feature{
14661253 .@"3e3r1",
14671254 .btst16,
1468 .ck803,
14691255 .dspv2,
14701256 .float1e3,
14711257 .floate1,
14721258 .fpuv2_sf,
14731259 .hwdiv,
14741260 .mp,
1475 .nvic,
14761261 .trust,
14771262 }),
14781263 };
......@@ -1483,14 +1268,12 @@ pub const cpu = struct {
14831268 .@"3e3r2",
14841269 .@"3e3r3",
14851270 .btst16,
1486 .ck803,
14871271 .dspv2,
14881272 .float1e3,
14891273 .floate1,
14901274 .fpuv2_sf,
14911275 .hwdiv,
14921276 .mp,
1493 .nvic,
14941277 .trust,
14951278 }),
14961279 };
......@@ -1501,14 +1284,12 @@ pub const cpu = struct {
15011284 .@"3e3r2",
15021285 .@"3e3r3",
15031286 .btst16,
1504 .ck803,
15051287 .dspv2,
15061288 .float1e3,
15071289 .floate1,
15081290 .fpuv2_sf,
15091291 .hwdiv,
15101292 .mp,
1511 .nvic,
15121293 .trust,
15131294 }),
15141295 };
......@@ -1517,10 +1298,8 @@ pub const cpu = struct {
15171298 .llvm_name = "ck803h",
15181299 .features = featureSet(&[_]Feature{
15191300 .btst16,
1520 .ck803,
15211301 .hwdiv,
15221302 .mp,
1523 .nvic,
15241303 .trust,
15251304 }),
15261305 };
......@@ -1531,11 +1310,9 @@ pub const cpu = struct {
15311310 .@"3e3r1",
15321311 .@"3e3r3",
15331312 .btst16,
1534 .ck803,
15351313 .dspv2,
15361314 .hwdiv,
15371315 .mp,
1538 .nvic,
15391316 .trust,
15401317 }),
15411318 };
......@@ -1546,11 +1323,9 @@ pub const cpu = struct {
15461323 .@"3e3r2",
15471324 .@"3e3r3",
15481325 .btst16,
1549 .ck803,
15501326 .dspv2,
15511327 .hwdiv,
15521328 .mp,
1553 .nvic,
15541329 .trust,
15551330 }),
15561331 };
......@@ -1561,11 +1336,9 @@ pub const cpu = struct {
15611336 .@"3e3r2",
15621337 .@"3e3r3",
15631338 .btst16,
1564 .ck803,
15651339 .dspv2,
15661340 .hwdiv,
15671341 .mp,
1568 .nvic,
15691342 .trust,
15701343 }),
15711344 };
......@@ -1574,10 +1347,8 @@ pub const cpu = struct {
15741347 .llvm_name = "ck803ht",
15751348 .features = featureSet(&[_]Feature{
15761349 .btst16,
1577 .ck803,
15781350 .hwdiv,
15791351 .mp,
1580 .nvic,
15811352 .trust,
15821353 }),
15831354 };
......@@ -1588,11 +1359,9 @@ pub const cpu = struct {
15881359 .@"3e3r1",
15891360 .@"3e3r3",
15901361 .btst16,
1591 .ck803,
15921362 .dspv2,
15931363 .hwdiv,
15941364 .mp,
1595 .nvic,
15961365 .trust,
15971366 }),
15981367 };
......@@ -1603,11 +1372,9 @@ pub const cpu = struct {
16031372 .@"3e3r2",
16041373 .@"3e3r3",
16051374 .btst16,
1606 .ck803,
16071375 .dspv2,
16081376 .hwdiv,
16091377 .mp,
1610 .nvic,
16111378 .trust,
16121379 }),
16131380 };
......@@ -1618,11 +1385,9 @@ pub const cpu = struct {
16181385 .@"3e3r2",
16191386 .@"3e3r3",
16201387 .btst16,
1621 .ck803,
16221388 .dspv2,
16231389 .hwdiv,
16241390 .mp,
1625 .nvic,
16261391 .trust,
16271392 }),
16281393 };
......@@ -1633,11 +1398,9 @@ pub const cpu = struct {
16331398 .@"3e3r1",
16341399 .@"3e3r3",
16351400 .btst16,
1636 .ck803,
16371401 .dspv2,
16381402 .hwdiv,
16391403 .mp,
1640 .nvic,
16411404 .trust,
16421405 }),
16431406 };
......@@ -1648,11 +1411,9 @@ pub const cpu = struct {
16481411 .@"3e3r2",
16491412 .@"3e3r3",
16501413 .btst16,
1651 .ck803,
16521414 .dspv2,
16531415 .hwdiv,
16541416 .mp,
1655 .nvic,
16561417 .trust,
16571418 }),
16581419 };
......@@ -1663,11 +1424,9 @@ pub const cpu = struct {
16631424 .@"3e3r2",
16641425 .@"3e3r3",
16651426 .btst16,
1666 .ck803,
16671427 .dspv2,
16681428 .hwdiv,
16691429 .mp,
1670 .nvic,
16711430 .trust,
16721431 }),
16731432 };
......@@ -1677,11 +1436,8 @@ pub const cpu = struct {
16771436 .features = featureSet(&[_]Feature{
16781437 .@"3e3r1",
16791438 .btst16,
1680 .ck803,
1681 .ck803s,
16821439 .hwdiv,
16831440 .mp,
1684 .nvic,
16851441 .trust,
16861442 }),
16871443 };
......@@ -1691,14 +1447,11 @@ pub const cpu = struct {
16911447 .features = featureSet(&[_]Feature{
16921448 .@"3e3r1",
16931449 .btst16,
1694 .ck803,
1695 .ck803s,
16961450 .dsp1e2,
16971451 .dspe60,
16981452 .edsp,
16991453 .hwdiv,
17001454 .mp,
1701 .nvic,
17021455 .trust,
17031456 }),
17041457 };
......@@ -1708,8 +1461,6 @@ pub const cpu = struct {
17081461 .features = featureSet(&[_]Feature{
17091462 .@"3e3r1",
17101463 .btst16,
1711 .ck803,
1712 .ck803s,
17131464 .dsp1e2,
17141465 .dspe60,
17151466 .edsp,
......@@ -1718,7 +1469,6 @@ pub const cpu = struct {
17181469 .fpuv2_sf,
17191470 .hwdiv,
17201471 .mp,
1721 .nvic,
17221472 .trust,
17231473 }),
17241474 };
......@@ -1728,8 +1478,6 @@ pub const cpu = struct {
17281478 .features = featureSet(&[_]Feature{
17291479 .@"3e3r1",
17301480 .btst16,
1731 .ck803,
1732 .ck803s,
17331481 .dsp1e2,
17341482 .dsp_silan,
17351483 .dspe60,
......@@ -1739,7 +1487,6 @@ pub const cpu = struct {
17391487 .fpuv2_sf,
17401488 .hwdiv,
17411489 .mp,
1742 .nvic,
17431490 .trust,
17441491 }),
17451492 };
......@@ -1749,8 +1496,6 @@ pub const cpu = struct {
17491496 .features = featureSet(&[_]Feature{
17501497 .@"3e3r1",
17511498 .btst16,
1752 .ck803,
1753 .ck803s,
17541499 .dsp1e2,
17551500 .dsp_silan,
17561501 .dspe60,
......@@ -1760,7 +1505,6 @@ pub const cpu = struct {
17601505 .fpuv2_sf,
17611506 .hwdiv,
17621507 .mp,
1763 .nvic,
17641508 .trust,
17651509 }),
17661510 };
......@@ -1770,8 +1514,6 @@ pub const cpu = struct {
17701514 .features = featureSet(&[_]Feature{
17711515 .@"3e3r1",
17721516 .btst16,
1773 .ck803,
1774 .ck803s,
17751517 .dsp1e2,
17761518 .dspe60,
17771519 .edsp,
......@@ -1780,7 +1522,6 @@ pub const cpu = struct {
17801522 .fpuv2_sf,
17811523 .hwdiv,
17821524 .mp,
1783 .nvic,
17841525 .trust,
17851526 }),
17861527 };
......@@ -1790,15 +1531,12 @@ pub const cpu = struct {
17901531 .features = featureSet(&[_]Feature{
17911532 .@"3e3r1",
17921533 .btst16,
1793 .ck803,
1794 .ck803s,
17951534 .dsp1e2,
17961535 .dsp_silan,
17971536 .dspe60,
17981537 .edsp,
17991538 .hwdiv,
18001539 .mp,
1801 .nvic,
18021540 .trust,
18031541 }),
18041542 };
......@@ -1808,14 +1546,11 @@ pub const cpu = struct {
18081546 .features = featureSet(&[_]Feature{
18091547 .@"3e3r1",
18101548 .btst16,
1811 .ck803,
1812 .ck803s,
18131549 .float1e3,
18141550 .floate1,
18151551 .fpuv2_sf,
18161552 .hwdiv,
18171553 .mp,
1818 .nvic,
18191554 .trust,
18201555 }),
18211556 };
......@@ -1825,15 +1560,12 @@ pub const cpu = struct {
18251560 .features = featureSet(&[_]Feature{
18261561 .@"3e3r1",
18271562 .btst16,
1828 .ck803,
1829 .ck803s,
18301563 .dsp_silan,
18311564 .float1e3,
18321565 .floate1,
18331566 .fpuv2_sf,
18341567 .hwdiv,
18351568 .mp,
1836 .nvic,
18371569 .trust,
18381570 }),
18391571 };
......@@ -1843,12 +1575,9 @@ pub const cpu = struct {
18431575 .features = featureSet(&[_]Feature{
18441576 .@"3e3r1",
18451577 .btst16,
1846 .ck803,
1847 .ck803s,
18481578 .dsp_silan,
18491579 .hwdiv,
18501580 .mp,
1851 .nvic,
18521581 .trust,
18531582 }),
18541583 };
......@@ -1858,12 +1587,9 @@ pub const cpu = struct {
18581587 .features = featureSet(&[_]Feature{
18591588 .@"3e3r1",
18601589 .btst16,
1861 .ck803,
1862 .ck803s,
18631590 .dsp_silan,
18641591 .hwdiv,
18651592 .mp,
1866 .nvic,
18671593 .trust,
18681594 }),
18691595 };
......@@ -1873,11 +1599,8 @@ pub const cpu = struct {
18731599 .features = featureSet(&[_]Feature{
18741600 .@"3e3r1",
18751601 .btst16,
1876 .ck803,
1877 .ck803s,
18781602 .hwdiv,
18791603 .mp,
1880 .nvic,
18811604 .trust,
18821605 }),
18831606 };
......@@ -1886,10 +1609,8 @@ pub const cpu = struct {
18861609 .llvm_name = "ck803t",
18871610 .features = featureSet(&[_]Feature{
18881611 .btst16,
1889 .ck803,
18901612 .hwdiv,
18911613 .mp,
1892 .nvic,
18931614 .trust,
18941615 }),
18951616 };
......@@ -1900,11 +1621,9 @@ pub const cpu = struct {
19001621 .@"3e3r1",
19011622 .@"3e3r3",
19021623 .btst16,
1903 .ck803,
19041624 .dspv2,
19051625 .hwdiv,
19061626 .mp,
1907 .nvic,
19081627 .trust,
19091628 }),
19101629 };
......@@ -1915,11 +1634,9 @@ pub const cpu = struct {
19151634 .@"3e3r2",
19161635 .@"3e3r3",
19171636 .btst16,
1918 .ck803,
19191637 .dspv2,
19201638 .hwdiv,
19211639 .mp,
1922 .nvic,
19231640 .trust,
19241641 }),
19251642 };
......@@ -1930,11 +1647,9 @@ pub const cpu = struct {
19301647 .@"3e3r2",
19311648 .@"3e3r3",
19321649 .btst16,
1933 .ck803,
19341650 .dspv2,
19351651 .hwdiv,
19361652 .mp,
1937 .nvic,
19381653 .trust,
19391654 }),
19401655 };
......@@ -1945,11 +1660,8 @@ pub const cpu = struct {
19451660 .@"3e3r2",
19461661 .@"3e3r3",
19471662 .btst16,
1948 .ck803,
1949 .ck804,
19501663 .hwdiv,
19511664 .mp,
1952 .nvic,
19531665 .trust,
19541666 }),
19551667 };
......@@ -1960,13 +1672,10 @@ pub const cpu = struct {
19601672 .@"3e3r2",
19611673 .@"3e3r3",
19621674 .btst16,
1963 .ck803,
1964 .ck804,
19651675 .dspv2,
19661676 .high_registers,
19671677 .hwdiv,
19681678 .mp,
1969 .nvic,
19701679 .trust,
19711680 }),
19721681 };
......@@ -1977,8 +1686,6 @@ pub const cpu = struct {
19771686 .@"3e3r2",
19781687 .@"3e3r3",
19791688 .btst16,
1980 .ck803,
1981 .ck804,
19821689 .dspv2,
19831690 .float1e3,
19841691 .floate1,
......@@ -1986,7 +1693,6 @@ pub const cpu = struct {
19861693 .high_registers,
19871694 .hwdiv,
19881695 .mp,
1989 .nvic,
19901696 .trust,
19911697 }),
19921698 };
......@@ -1997,8 +1703,6 @@ pub const cpu = struct {
19971703 .@"3e3r2",
19981704 .@"3e3r3",
19991705 .btst16,
2000 .ck803,
2001 .ck804,
20021706 .dspv2,
20031707 .float1e3,
20041708 .floate1,
......@@ -2006,7 +1710,6 @@ pub const cpu = struct {
20061710 .high_registers,
20071711 .hwdiv,
20081712 .mp,
2009 .nvic,
20101713 .trust,
20111714 }),
20121715 };
......@@ -2017,8 +1720,6 @@ pub const cpu = struct {
20171720 .@"3e3r2",
20181721 .@"3e3r3",
20191722 .btst16,
2020 .ck803,
2021 .ck804,
20221723 .dspv2,
20231724 .float1e3,
20241725 .floate1,
......@@ -2026,7 +1727,6 @@ pub const cpu = struct {
20261727 .high_registers,
20271728 .hwdiv,
20281729 .mp,
2029 .nvic,
20301730 .trust,
20311731 }),
20321732 };
......@@ -2037,8 +1737,6 @@ pub const cpu = struct {
20371737 .@"3e3r2",
20381738 .@"3e3r3",
20391739 .btst16,
2040 .ck803,
2041 .ck804,
20421740 .dspv2,
20431741 .float1e3,
20441742 .floate1,
......@@ -2046,7 +1744,6 @@ pub const cpu = struct {
20461744 .high_registers,
20471745 .hwdiv,
20481746 .mp,
2049 .nvic,
20501747 .trust,
20511748 }),
20521749 };
......@@ -2057,13 +1754,10 @@ pub const cpu = struct {
20571754 .@"3e3r2",
20581755 .@"3e3r3",
20591756 .btst16,
2060 .ck803,
2061 .ck804,
20621757 .dspv2,
20631758 .high_registers,
20641759 .hwdiv,
20651760 .mp,
2066 .nvic,
20671761 .trust,
20681762 }),
20691763 };
......@@ -2074,13 +1768,10 @@ pub const cpu = struct {
20741768 .@"3e3r2",
20751769 .@"3e3r3",
20761770 .btst16,
2077 .ck803,
2078 .ck804,
20791771 .dspv2,
20801772 .high_registers,
20811773 .hwdiv,
20821774 .mp,
2083 .nvic,
20841775 .trust,
20851776 }),
20861777 };
......@@ -2091,13 +1782,10 @@ pub const cpu = struct {
20911782 .@"3e3r2",
20921783 .@"3e3r3",
20931784 .btst16,
2094 .ck803,
2095 .ck804,
20961785 .dspv2,
20971786 .high_registers,
20981787 .hwdiv,
20991788 .mp,
2100 .nvic,
21011789 .trust,
21021790 }),
21031791 };
......@@ -2108,14 +1796,11 @@ pub const cpu = struct {
21081796 .@"3e3r2",
21091797 .@"3e3r3",
21101798 .btst16,
2111 .ck803,
2112 .ck804,
21131799 .float1e3,
21141800 .floate1,
21151801 .fpuv2_sf,
21161802 .hwdiv,
21171803 .mp,
2118 .nvic,
21191804 .trust,
21201805 }),
21211806 };
......@@ -2126,14 +1811,11 @@ pub const cpu = struct {
21261811 .@"3e3r2",
21271812 .@"3e3r3",
21281813 .btst16,
2129 .ck803,
2130 .ck804,
21311814 .float1e3,
21321815 .floate1,
21331816 .fpuv2_sf,
21341817 .hwdiv,
21351818 .mp,
2136 .nvic,
21371819 .trust,
21381820 }),
21391821 };
......@@ -2144,14 +1826,11 @@ pub const cpu = struct {
21441826 .@"3e3r2",
21451827 .@"3e3r3",
21461828 .btst16,
2147 .ck803,
2148 .ck804,
21491829 .float1e3,
21501830 .floate1,
21511831 .fpuv2_sf,
21521832 .hwdiv,
21531833 .mp,
2154 .nvic,
21551834 .trust,
21561835 }),
21571836 };
......@@ -2162,11 +1841,8 @@ pub const cpu = struct {
21621841 .@"3e3r2",
21631842 .@"3e3r3",
21641843 .btst16,
2165 .ck803,
2166 .ck804,
21671844 .hwdiv,
21681845 .mp,
2169 .nvic,
21701846 .trust,
21711847 }),
21721848 };
......@@ -2177,11 +1853,8 @@ pub const cpu = struct {
21771853 .@"3e3r2",
21781854 .@"3e3r3",
21791855 .btst16,
2180 .ck803,
2181 .ck804,
21821856 .hwdiv,
21831857 .mp,
2184 .nvic,
21851858 .trust,
21861859 }),
21871860 };
......@@ -2192,11 +1865,8 @@ pub const cpu = struct {
21921865 .@"3e3r2",
21931866 .@"3e3r3",
21941867 .btst16,
2195 .ck803,
2196 .ck804,
21971868 .hwdiv,
21981869 .mp,
2199 .nvic,
22001870 .trust,
22011871 }),
22021872 };
......@@ -2207,12 +1877,9 @@ pub const cpu = struct {
22071877 .@"3e3r2",
22081878 .@"3e3r3",
22091879 .btst16,
2210 .ck803,
2211 .ck805,
22121880 .high_registers,
22131881 .hwdiv,
22141882 .mp,
2215 .nvic,
22161883 .trust,
22171884 .vdsp2e3,
22181885 .vdspv2,
......@@ -2225,13 +1892,10 @@ pub const cpu = struct {
22251892 .@"3e3r2",
22261893 .@"3e3r3",
22271894 .btst16,
2228 .ck803,
2229 .ck805,
22301895 .dspv2,
22311896 .high_registers,
22321897 .hwdiv,
22331898 .mp,
2234 .nvic,
22351899 .trust,
22361900 .vdsp2e3,
22371901 .vdspv2,
......@@ -2244,8 +1908,6 @@ pub const cpu = struct {
22441908 .@"3e3r2",
22451909 .@"3e3r3",
22461910 .btst16,
2247 .ck803,
2248 .ck805,
22491911 .dspv2,
22501912 .float1e3,
22511913 .floate1,
......@@ -2253,7 +1915,6 @@ pub const cpu = struct {
22531915 .high_registers,
22541916 .hwdiv,
22551917 .mp,
2256 .nvic,
22571918 .trust,
22581919 .vdsp2e3,
22591920 .vdspv2,
......@@ -2266,8 +1927,6 @@ pub const cpu = struct {
22661927 .@"3e3r2",
22671928 .@"3e3r3",
22681929 .btst16,
2269 .ck803,
2270 .ck805,
22711930 .dspv2,
22721931 .float1e3,
22731932 .floate1,
......@@ -2275,7 +1934,6 @@ pub const cpu = struct {
22751934 .high_registers,
22761935 .hwdiv,
22771936 .mp,
2278 .nvic,
22791937 .trust,
22801938 .vdsp2e3,
22811939 .vdspv2,
......@@ -2288,13 +1946,10 @@ pub const cpu = struct {
22881946 .@"3e3r2",
22891947 .@"3e3r3",
22901948 .btst16,
2291 .ck803,
2292 .ck805,
22931949 .dspv2,
22941950 .high_registers,
22951951 .hwdiv,
22961952 .mp,
2297 .nvic,
22981953 .trust,
22991954 .vdsp2e3,
23001955 .vdspv2,
......@@ -2307,15 +1962,12 @@ pub const cpu = struct {
23071962 .@"3e3r2",
23081963 .@"3e3r3",
23091964 .btst16,
2310 .ck803,
2311 .ck805,
23121965 .float1e3,
23131966 .floate1,
23141967 .fpuv2_sf,
23151968 .high_registers,
23161969 .hwdiv,
23171970 .mp,
2318 .nvic,
23191971 .trust,
23201972 .vdsp2e3,
23211973 .vdspv2,
......@@ -2328,15 +1980,12 @@ pub const cpu = struct {
23281980 .@"3e3r2",
23291981 .@"3e3r3",
23301982 .btst16,
2331 .ck803,
2332 .ck805,
23331983 .float1e3,
23341984 .floate1,
23351985 .fpuv2_sf,
23361986 .high_registers,
23371987 .hwdiv,
23381988 .mp,
2339 .nvic,
23401989 .trust,
23411990 .vdsp2e3,
23421991 .vdspv2,
......@@ -2349,12 +1998,9 @@ pub const cpu = struct {
23491998 .@"3e3r2",
23501999 .@"3e3r3",
23512000 .btst16,
2352 .ck803,
2353 .ck805,
23542001 .high_registers,
23552002 .hwdiv,
23562003 .mp,
2357 .nvic,
23582004 .trust,
23592005 .vdsp2e3,
23602006 .vdspv2,
......@@ -2365,7 +2011,6 @@ pub const cpu = struct {
23652011 .llvm_name = "ck807",
23662012 .features = featureSet(&[_]Feature{
23672013 .cache,
2368 .ck807,
23692014 .dsp1e2,
23702015 .dspe60,
23712016 .edsp,
......@@ -2374,7 +2019,6 @@ pub const cpu = struct {
23742019 .hwdiv,
23752020 .mp,
23762021 .mp1e2,
2377 .nvic,
23782022 .trust,
23792023 }),
23802024 };
......@@ -2383,7 +2027,6 @@ pub const cpu = struct {
23832027 .llvm_name = "ck807e",
23842028 .features = featureSet(&[_]Feature{
23852029 .cache,
2386 .ck807,
23872030 .dsp1e2,
23882031 .dspe60,
23892032 .edsp,
......@@ -2392,7 +2035,6 @@ pub const cpu = struct {
23922035 .hwdiv,
23932036 .mp,
23942037 .mp1e2,
2395 .nvic,
23962038 .trust,
23972039 }),
23982040 };
......@@ -2401,7 +2043,6 @@ pub const cpu = struct {
24012043 .llvm_name = "ck807ef",
24022044 .features = featureSet(&[_]Feature{
24032045 .cache,
2404 .ck807,
24052046 .dsp1e2,
24062047 .dspe60,
24072048 .edsp,
......@@ -2417,7 +2058,6 @@ pub const cpu = struct {
24172058 .hwdiv,
24182059 .mp,
24192060 .mp1e2,
2420 .nvic,
24212061 .trust,
24222062 }),
24232063 };
......@@ -2426,7 +2066,6 @@ pub const cpu = struct {
24262066 .llvm_name = "ck807f",
24272067 .features = featureSet(&[_]Feature{
24282068 .cache,
2429 .ck807,
24302069 .dsp1e2,
24312070 .dspe60,
24322071 .edsp,
......@@ -2442,7 +2081,6 @@ pub const cpu = struct {
24422081 .hwdiv,
24432082 .mp,
24442083 .mp1e2,
2445 .nvic,
24462084 .trust,
24472085 }),
24482086 };
......@@ -2452,7 +2090,6 @@ pub const cpu = struct {
24522090 .features = featureSet(&[_]Feature{
24532091 .@"7e10",
24542092 .cache,
2455 .ck810,
24562093 .dsp1e2,
24572094 .dspe60,
24582095 .edsp,
......@@ -2461,7 +2098,6 @@ pub const cpu = struct {
24612098 .hwdiv,
24622099 .mp,
24632100 .mp1e2,
2464 .nvic,
24652101 .trust,
24662102 }),
24672103 };
......@@ -2471,7 +2107,6 @@ pub const cpu = struct {
24712107 .features = featureSet(&[_]Feature{
24722108 .@"7e10",
24732109 .cache,
2474 .ck810,
24752110 .dsp1e2,
24762111 .dspe60,
24772112 .edsp,
......@@ -2480,7 +2115,6 @@ pub const cpu = struct {
24802115 .hwdiv,
24812116 .mp,
24822117 .mp1e2,
2483 .nvic,
24842118 .trust,
24852119 }),
24862120 };
......@@ -2490,7 +2124,6 @@ pub const cpu = struct {
24902124 .features = featureSet(&[_]Feature{
24912125 .@"7e10",
24922126 .cache,
2493 .ck810,
24942127 .dsp1e2,
24952128 .dspe60,
24962129 .edsp,
......@@ -2504,7 +2137,6 @@ pub const cpu = struct {
25042137 .hwdiv,
25052138 .mp,
25062139 .mp1e2,
2507 .nvic,
25082140 .trust,
25092141 }),
25102142 };
......@@ -2514,7 +2146,6 @@ pub const cpu = struct {
25142146 .features = featureSet(&[_]Feature{
25152147 .@"7e10",
25162148 .cache,
2517 .ck810,
25182149 .dsp1e2,
25192150 .dspe60,
25202151 .edsp,
......@@ -2528,7 +2159,6 @@ pub const cpu = struct {
25282159 .hwdiv,
25292160 .mp,
25302161 .mp1e2,
2531 .nvic,
25322162 .trust,
25332163 }),
25342164 };
......@@ -2538,8 +2168,6 @@ pub const cpu = struct {
25382168 .features = featureSet(&[_]Feature{
25392169 .@"7e10",
25402170 .cache,
2541 .ck810,
2542 .ck810v,
25432171 .dsp1e2,
25442172 .dspe60,
25452173 .edsp,
......@@ -2553,7 +2181,6 @@ pub const cpu = struct {
25532181 .hwdiv,
25542182 .mp,
25552183 .mp1e2,
2556 .nvic,
25572184 .trust,
25582185 .vdspv1,
25592186 }),
......@@ -2564,8 +2191,6 @@ pub const cpu = struct {
25642191 .features = featureSet(&[_]Feature{
25652192 .@"7e10",
25662193 .cache,
2567 .ck810,
2568 .ck810v,
25692194 .dsp1e2,
25702195 .dspe60,
25712196 .edsp,
......@@ -2579,7 +2204,6 @@ pub const cpu = struct {
25792204 .hwdiv,
25802205 .mp,
25812206 .mp1e2,
2582 .nvic,
25832207 .trust,
25842208 .vdspv1,
25852209 }),
......@@ -2590,7 +2214,6 @@ pub const cpu = struct {
25902214 .features = featureSet(&[_]Feature{
25912215 .@"7e10",
25922216 .cache,
2593 .ck810,
25942217 .dsp1e2,
25952218 .dspe60,
25962219 .edsp,
......@@ -2599,7 +2222,6 @@ pub const cpu = struct {
25992222 .hwdiv,
26002223 .mp,
26012224 .mp1e2,
2602 .nvic,
26032225 .trust,
26042226 }),
26052227 };
......@@ -2609,8 +2231,6 @@ pub const cpu = struct {
26092231 .features = featureSet(&[_]Feature{
26102232 .@"7e10",
26112233 .cache,
2612 .ck810,
2613 .ck810v,
26142234 .dsp1e2,
26152235 .dspe60,
26162236 .edsp,
......@@ -2619,7 +2239,6 @@ pub const cpu = struct {
26192239 .hwdiv,
26202240 .mp,
26212241 .mp1e2,
2622 .nvic,
26232242 .trust,
26242243 .vdspv1,
26252244 }),
......@@ -2630,8 +2249,6 @@ pub const cpu = struct {
26302249 .features = featureSet(&[_]Feature{
26312250 .@"7e10",
26322251 .cache,
2633 .ck810,
2634 .ck810v,
26352252 .dsp1e2,
26362253 .dspe60,
26372254 .edsp,
......@@ -2640,7 +2257,6 @@ pub const cpu = struct {
26402257 .hwdiv,
26412258 .mp,
26422259 .mp1e2,
2643 .nvic,
26442260 .trust,
26452261 .vdspv1,
26462262 }),
......@@ -2651,7 +2267,6 @@ pub const cpu = struct {
26512267 .features = featureSet(&[_]Feature{
26522268 .@"7e10",
26532269 .cache,
2654 .ck810,
26552270 .dsp1e2,
26562271 .dspe60,
26572272 .edsp,
......@@ -2665,7 +2280,6 @@ pub const cpu = struct {
26652280 .hwdiv,
26662281 .mp,
26672282 .mp1e2,
2668 .nvic,
26692283 .trust,
26702284 }),
26712285 };
......@@ -2675,7 +2289,6 @@ pub const cpu = struct {
26752289 .features = featureSet(&[_]Feature{
26762290 .@"7e10",
26772291 .cache,
2678 .ck810,
26792292 .dsp1e2,
26802293 .dspe60,
26812294 .edsp,
......@@ -2689,7 +2302,6 @@ pub const cpu = struct {
26892302 .hwdiv,
26902303 .mp,
26912304 .mp1e2,
2692 .nvic,
26932305 .trust,
26942306 }),
26952307 };
......@@ -2699,8 +2311,6 @@ pub const cpu = struct {
26992311 .features = featureSet(&[_]Feature{
27002312 .@"7e10",
27012313 .cache,
2702 .ck810,
2703 .ck810v,
27042314 .dsp1e2,
27052315 .dspe60,
27062316 .edsp,
......@@ -2714,7 +2324,6 @@ pub const cpu = struct {
27142324 .hwdiv,
27152325 .mp,
27162326 .mp1e2,
2717 .nvic,
27182327 .trust,
27192328 .vdspv1,
27202329 }),
......@@ -2725,8 +2334,6 @@ pub const cpu = struct {
27252334 .features = featureSet(&[_]Feature{
27262335 .@"7e10",
27272336 .cache,
2728 .ck810,
2729 .ck810v,
27302337 .dsp1e2,
27312338 .dspe60,
27322339 .edsp,
......@@ -2740,7 +2347,6 @@ pub const cpu = struct {
27402347 .hwdiv,
27412348 .mp,
27422349 .mp1e2,
2743 .nvic,
27442350 .trust,
27452351 .vdspv1,
27462352 }),
......@@ -2751,7 +2357,6 @@ pub const cpu = struct {
27512357 .features = featureSet(&[_]Feature{
27522358 .@"7e10",
27532359 .cache,
2754 .ck810,
27552360 .dsp1e2,
27562361 .dspe60,
27572362 .edsp,
......@@ -2760,7 +2365,6 @@ pub const cpu = struct {
27602365 .hwdiv,
27612366 .mp,
27622367 .mp1e2,
2763 .nvic,
27642368 .trust,
27652369 }),
27662370 };
......@@ -2770,8 +2374,6 @@ pub const cpu = struct {
27702374 .features = featureSet(&[_]Feature{
27712375 .@"7e10",
27722376 .cache,
2773 .ck810,
2774 .ck810v,
27752377 .dsp1e2,
27762378 .dspe60,
27772379 .edsp,
......@@ -2780,7 +2382,6 @@ pub const cpu = struct {
27802382 .hwdiv,
27812383 .mp,
27822384 .mp1e2,
2783 .nvic,
27842385 .trust,
27852386 .vdspv1,
27862387 }),
......@@ -2791,8 +2392,6 @@ pub const cpu = struct {
27912392 .features = featureSet(&[_]Feature{
27922393 .@"7e10",
27932394 .cache,
2794 .ck810,
2795 .ck810v,
27962395 .dsp1e2,
27972396 .dspe60,
27982397 .edsp,
......@@ -2801,7 +2400,6 @@ pub const cpu = struct {
28012400 .hwdiv,
28022401 .mp,
28032402 .mp1e2,
2804 .nvic,
28052403 .trust,
28062404 .vdspv1,
28072405 }),
......@@ -2815,14 +2413,12 @@ pub const cpu = struct {
28152413 .@"3e3r3",
28162414 .btst16,
28172415 .cache,
2818 .ck860,
28192416 .dspe60,
28202417 .hard_tp,
28212418 .high_registers,
28222419 .hwdiv,
28232420 .mp,
28242421 .mp1e2,
2825 .nvic,
28262422 .trust,
28272423 }),
28282424 };
......@@ -2835,7 +2431,6 @@ pub const cpu = struct {
28352431 .@"3e3r3",
28362432 .btst16,
28372433 .cache,
2838 .ck860,
28392434 .dspe60,
28402435 .float7e60,
28412436 .fpuv3_df,
......@@ -2847,7 +2442,6 @@ pub const cpu = struct {
28472442 .hwdiv,
28482443 .mp,
28492444 .mp1e2,
2850 .nvic,
28512445 .trust,
28522446 }),
28532447 };
......@@ -2860,8 +2454,6 @@ pub const cpu = struct {
28602454 .@"3e3r3",
28612455 .btst16,
28622456 .cache,
2863 .ck860,
2864 .ck860v,
28652457 .dspe60,
28662458 .float7e60,
28672459 .fpuv3_df,
......@@ -2873,7 +2465,6 @@ pub const cpu = struct {
28732465 .hwdiv,
28742466 .mp,
28752467 .mp1e2,
2876 .nvic,
28772468 .trust,
28782469 .vdsp2e60f,
28792470 .vdspv2,
......@@ -2888,15 +2479,12 @@ pub const cpu = struct {
28882479 .@"3e3r3",
28892480 .btst16,
28902481 .cache,
2891 .ck860,
2892 .ck860v,
28932482 .dspe60,
28942483 .hard_tp,
28952484 .high_registers,
28962485 .hwdiv,
28972486 .mp,
28982487 .mp1e2,
2899 .nvic,
29002488 .trust,
29012489 .vdsp2e60f,
29022490 .vdspv2,
......@@ -2907,7 +2495,6 @@ pub const cpu = struct {
29072495 .llvm_name = "e801",
29082496 .features = featureSet(&[_]Feature{
29092497 .btst16,
2910 .ck801,
29112498 .e1,
29122499 .trust,
29132500 }),
......@@ -2917,9 +2504,7 @@ pub const cpu = struct {
29172504 .llvm_name = "e802",
29182505 .features = featureSet(&[_]Feature{
29192506 .btst16,
2920 .ck802,
29212507 .e2,
2922 .nvic,
29232508 .trust,
29242509 }),
29252510 };
......@@ -2928,9 +2513,7 @@ pub const cpu = struct {
29282513 .llvm_name = "e802t",
29292514 .features = featureSet(&[_]Feature{
29302515 .btst16,
2931 .ck802,
29322516 .e2,
2933 .nvic,
29342517 .trust,
29352518 }),
29362519 };
......@@ -2941,10 +2524,8 @@ pub const cpu = struct {
29412524 .@"3e3r2",
29422525 .@"3e3r3",
29432526 .btst16,
2944 .ck803,
29452527 .hwdiv,
29462528 .mp,
2947 .nvic,
29482529 .trust,
29492530 }),
29502531 };
......@@ -2955,10 +2536,8 @@ pub const cpu = struct {
29552536 .@"3e3r2",
29562537 .@"3e3r3",
29572538 .btst16,
2958 .ck803,
29592539 .hwdiv,
29602540 .mp,
2961 .nvic,
29622541 .trust,
29632542 }),
29642543 };
......@@ -2969,13 +2548,10 @@ pub const cpu = struct {
29692548 .@"3e3r2",
29702549 .@"3e3r3",
29712550 .btst16,
2972 .ck803,
2973 .ck804,
29742551 .dspv2,
29752552 .high_registers,
29762553 .hwdiv,
29772554 .mp,
2978 .nvic,
29792555 .trust,
29802556 }),
29812557 };
......@@ -2986,8 +2562,6 @@ pub const cpu = struct {
29862562 .@"3e3r2",
29872563 .@"3e3r3",
29882564 .btst16,
2989 .ck803,
2990 .ck804,
29912565 .dspv2,
29922566 .float1e3,
29932567 .floate1,
......@@ -2995,7 +2569,6 @@ pub const cpu = struct {
29952569 .high_registers,
29962570 .hwdiv,
29972571 .mp,
2998 .nvic,
29992572 .trust,
30002573 }),
30012574 };
......@@ -3006,8 +2579,6 @@ pub const cpu = struct {
30062579 .@"3e3r2",
30072580 .@"3e3r3",
30082581 .btst16,
3009 .ck803,
3010 .ck804,
30112582 .dspv2,
30122583 .float1e3,
30132584 .floate1,
......@@ -3015,7 +2586,6 @@ pub const cpu = struct {
30152586 .high_registers,
30162587 .hwdiv,
30172588 .mp,
3018 .nvic,
30192589 .trust,
30202590 }),
30212591 };
......@@ -3026,13 +2596,10 @@ pub const cpu = struct {
30262596 .@"3e3r2",
30272597 .@"3e3r3",
30282598 .btst16,
3029 .ck803,
3030 .ck804,
30312599 .dspv2,
30322600 .high_registers,
30332601 .hwdiv,
30342602 .mp,
3035 .nvic,
30362603 .trust,
30372604 }),
30382605 };
......@@ -3043,14 +2610,11 @@ pub const cpu = struct {
30432610 .@"3e3r2",
30442611 .@"3e3r3",
30452612 .btst16,
3046 .ck803,
3047 .ck804,
30482613 .float1e3,
30492614 .floate1,
30502615 .fpuv2_sf,
30512616 .hwdiv,
30522617 .mp,
3053 .nvic,
30542618 .trust,
30552619 }),
30562620 };
......@@ -3061,14 +2625,11 @@ pub const cpu = struct {
30612625 .@"3e3r2",
30622626 .@"3e3r3",
30632627 .btst16,
3064 .ck803,
3065 .ck804,
30662628 .float1e3,
30672629 .floate1,
30682630 .fpuv2_sf,
30692631 .hwdiv,
30702632 .mp,
3071 .nvic,
30722633 .trust,
30732634 }),
30742635 };
......@@ -3086,12 +2647,9 @@ pub const cpu = struct {
30862647 .@"3e3r2",
30872648 .@"3e3r3",
30882649 .btst16,
3089 .ck803,
3090 .ck805,
30912650 .high_registers,
30922651 .hwdiv,
30932652 .mp,
3094 .nvic,
30952653 .trust,
30962654 .vdsp2e3,
30972655 .vdspv2,
......@@ -3104,15 +2662,12 @@ pub const cpu = struct {
31042662 .@"3e3r2",
31052663 .@"3e3r3",
31062664 .btst16,
3107 .ck803,
3108 .ck805,
31092665 .float1e3,
31102666 .floate1,
31112667 .fpuv2_sf,
31122668 .high_registers,
31132669 .hwdiv,
31142670 .mp,
3115 .nvic,
31162671 .trust,
31172672 .vdsp2e3,
31182673 .vdspv2,
......@@ -3123,7 +2678,6 @@ pub const cpu = struct {
31232678 .llvm_name = "r807",
31242679 .features = featureSet(&[_]Feature{
31252680 .cache,
3126 .ck807,
31272681 .dsp1e2,
31282682 .dspe60,
31292683 .edsp,
......@@ -3132,7 +2686,6 @@ pub const cpu = struct {
31322686 .hwdiv,
31332687 .mp,
31342688 .mp1e2,
3135 .nvic,
31362689 .trust,
31372690 }),
31382691 };
......@@ -3141,7 +2694,6 @@ pub const cpu = struct {
31412694 .llvm_name = "r807f",
31422695 .features = featureSet(&[_]Feature{
31432696 .cache,
3144 .ck807,
31452697 .dsp1e2,
31462698 .dspe60,
31472699 .edsp,
......@@ -3157,7 +2709,6 @@ pub const cpu = struct {
31572709 .hwdiv,
31582710 .mp,
31592711 .mp1e2,
3160 .nvic,
31612712 .trust,
31622713 }),
31632714 };
......@@ -3166,9 +2717,7 @@ pub const cpu = struct {
31662717 .llvm_name = "s802",
31672718 .features = featureSet(&[_]Feature{
31682719 .btst16,
3169 .ck802,
31702720 .e2,
3171 .nvic,
31722721 .trust,
31732722 }),
31742723 };
......@@ -3177,9 +2726,7 @@ pub const cpu = struct {
31772726 .llvm_name = "s802t",
31782727 .features = featureSet(&[_]Feature{
31792728 .btst16,
3180 .ck802,
31812729 .e2,
3182 .nvic,
31832730 .trust,
31842731 }),
31852732 };
......@@ -3190,10 +2737,8 @@ pub const cpu = struct {
31902737 .@"3e3r2",
31912738 .@"3e3r3",
31922739 .btst16,
3193 .ck803,
31942740 .hwdiv,
31952741 .mp,
3196 .nvic,
31972742 .trust,
31982743 }),
31992744 };
......@@ -3204,10 +2749,8 @@ pub const cpu = struct {
32042749 .@"3e3r2",
32052750 .@"3e3r3",
32062751 .btst16,
3207 .ck803,
32082752 .hwdiv,
32092753 .mp,
3210 .nvic,
32112754 .trust,
32122755 }),
32132756 };
lib/std/Target/hppa.zig+7-15
......@@ -5,7 +5,6 @@ const CpuFeature = std.Target.Cpu.Feature;
55const CpuModel = std.Target.Cpu.Model;
66
77pub const Feature = enum {
8 @"64bit",
98 max_1,
109 max_2,
1110 v1_1,
......@@ -21,13 +20,6 @@ pub const all_features = blk: {
2120 const len = @typeInfo(Feature).@"enum".field_names.len;
2221 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
2322 var result: [len]CpuFeature = undefined;
24 result[@backingInt(Feature.@"64bit")] = .{
25 .llvm_name = null,
26 .description = "Enable 64-bit PA-RISC 2.0",
27 .dependencies = featureSet(&[_]Feature{
28 .v2_0,
29 }),
30 };
3123 result[@backingInt(Feature.max_1)] = .{
3224 .llvm_name = null,
3325 .description = "Enable MAX-1 multimedia acceleration extensions",
......@@ -120,49 +112,49 @@ pub const cpu = struct {
120112 .name = "pa_8000",
121113 .llvm_name = null,
122114 .features = featureSet(&[_]Feature{
123 .@"64bit",
115 .v2_0,
124116 }),
125117 };
126118 pub const pa_8200: CpuModel = .{
127119 .name = "pa_8200",
128120 .llvm_name = null,
129121 .features = featureSet(&[_]Feature{
130 .@"64bit",
122 .v2_0,
131123 }),
132124 };
133125 pub const pa_8500: CpuModel = .{
134126 .name = "pa_8500",
135127 .llvm_name = null,
136128 .features = featureSet(&[_]Feature{
137 .@"64bit",
129 .v2_0,
138130 }),
139131 };
140132 pub const pa_8600: CpuModel = .{
141133 .name = "pa_8600",
142134 .llvm_name = null,
143135 .features = featureSet(&[_]Feature{
144 .@"64bit",
136 .v2_0,
145137 }),
146138 };
147139 pub const pa_8700: CpuModel = .{
148140 .name = "pa_8700",
149141 .llvm_name = null,
150142 .features = featureSet(&[_]Feature{
151 .@"64bit",
143 .v2_0,
152144 }),
153145 };
154146 pub const pa_8800: CpuModel = .{
155147 .name = "pa_8800",
156148 .llvm_name = null,
157149 .features = featureSet(&[_]Feature{
158 .@"64bit",
150 .v2_0,
159151 }),
160152 };
161153 pub const pa_8900: CpuModel = .{
162154 .name = "pa_8900",
163155 .llvm_name = null,
164156 .features = featureSet(&[_]Feature{
165 .@"64bit",
157 .v2_0,
166158 }),
167159 };
168160 pub const pcx: CpuModel = .{
lib/std/Target/kvx.zig+1-3
......@@ -27,9 +27,7 @@ pub const all_features = blk: {
2727 result[@backingInt(Feature.v3_2)] = .{
2828 .llvm_name = null,
2929 .description = "Enable ISA v3.2",
30 .dependencies = featureSet(&[_]Feature{
31 .v3_1,
32 }),
30 .dependencies = featureSet(&[_]Feature{}),
3331 };
3432 result[@backingInt(Feature.v4_1)] = .{
3533 .llvm_name = null,
lib/std/Target/ve.zig+24-3
......@@ -5,6 +5,7 @@ const CpuFeature = std.Target.Cpu.Feature;
55const CpuModel = std.Target.Cpu.Model;
66
77pub const Feature = enum {
8 ve3,
89 vpu,
910};
1011
......@@ -17,6 +18,11 @@ pub const all_features = blk: {
1718 const len = @typeInfo(Feature).@"enum".field_names.len;
1819 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
1920 var result: [len]CpuFeature = undefined;
21 result[@backingInt(Feature.ve3)] = .{
22 .llvm_name = null,
23 .description = "Enable VE3 instructions",
24 .dependencies = featureSet(&[_]Feature{}),
25 };
2026 result[@backingInt(Feature.vpu)] = .{
2127 .llvm_name = "vpu",
2228 .description = "Enable the VPU",
......@@ -31,10 +37,25 @@ pub const all_features = blk: {
3137};
3238
3339pub const cpu = struct {
34 pub const generic: CpuModel = .{
35 .name = "generic",
36 .llvm_name = "generic",
40 pub const ve10: CpuModel = .{
41 .name = "ve10",
42 .llvm_name = null,
43 .features = featureSet(&[_]Feature{
44 .vpu,
45 }),
46 };
47 pub const ve20: CpuModel = .{
48 .name = "ve20",
49 .llvm_name = null,
50 .features = featureSet(&[_]Feature{
51 .vpu,
52 }),
53 };
54 pub const ve30: CpuModel = .{
55 .name = "ve30",
56 .llvm_name = null,
3757 .features = featureSet(&[_]Feature{
58 .ve3,
3859 .vpu,
3960 }),
4061 };
lib/std/Target/wasm.zig+36-28
......@@ -114,6 +114,7 @@ pub const all_features = blk: {
114114 .llvm_name = "reference-types",
115115 .description = "Enable reference types",
116116 .dependencies = featureSet(&[_]Feature{
117 .bulk_memory,
117118 .call_indirect_overlong,
118119 }),
119120 };
......@@ -125,7 +126,9 @@ pub const all_features = blk: {
125126 result[@backingInt(Feature.relaxed_simd)] = .{
126127 .llvm_name = "relaxed-simd",
127128 .description = "Enable relaxed-simd instructions",
128 .dependencies = featureSet(&[_]Feature{}),
129 .dependencies = featureSet(&[_]Feature{
130 .simd128,
131 }),
129132 };
130133 result[@backingInt(Feature.sign_ext)] = .{
131134 .llvm_name = "sign-ext",
......@@ -156,53 +159,58 @@ pub const all_features = blk: {
156159};
157160
158161pub const cpu = struct {
159 pub const bleeding_edge: CpuModel = .{
160 .name = "bleeding_edge",
161 .llvm_name = "bleeding-edge",
162 pub const lime1: CpuModel = .{
163 .name = "lime1",
164 .llvm_name = "lime1",
162165 .features = featureSet(&[_]Feature{
163 .atomics,
164 .bulk_memory,
165 .exception_handling,
166 .bulk_memory_opt,
167 .call_indirect_overlong,
166168 .extended_const,
167 .fp16,
168 .gc,
169 .multimemory,
169 .multivalue,
170170 .mutable_globals,
171171 .nontrapping_fptoint,
172 .relaxed_simd,
173172 .sign_ext,
174 .simd128,
175 .tail_call,
176173 }),
177174 };
178 pub const generic: CpuModel = .{
179 .name = "generic",
180 .llvm_name = "generic",
175 pub const mvp: CpuModel = .{
176 .name = "mvp",
177 .llvm_name = "mvp",
178 .features = featureSet(&[_]Feature{}),
179 };
180 pub const wasm_v1_0: CpuModel = .{
181 .name = "wasm_v1_0",
182 .llvm_name = null,
183 .features = featureSet(&[_]Feature{
184 .mutable_globals,
185 }),
186 };
187 pub const wasm_v2_0: CpuModel = .{
188 .name = "wasm_v2_0",
189 .llvm_name = null,
181190 .features = featureSet(&[_]Feature{
182 .bulk_memory,
183191 .multivalue,
184192 .mutable_globals,
185193 .nontrapping_fptoint,
186194 .reference_types,
187195 .sign_ext,
196 .simd128,
188197 }),
189198 };
190 pub const lime1: CpuModel = .{
191 .name = "lime1",
192 .llvm_name = "lime1",
199 pub const wasm_v3_0: CpuModel = .{
200 .name = "wasm_v3_0",
201 .llvm_name = null,
193202 .features = featureSet(&[_]Feature{
194 .bulk_memory_opt,
195 .call_indirect_overlong,
203 .atomics,
204 .exception_handling,
196205 .extended_const,
197 .multivalue,
206 .fp16,
207 .gc,
208 .multimemory,
198209 .mutable_globals,
199210 .nontrapping_fptoint,
211 .relaxed_simd,
200212 .sign_ext,
213 .tail_call,
201214 }),
202215 };
203 pub const mvp: CpuModel = .{
204 .name = "mvp",
205 .llvm_name = "mvp",
206 .features = featureSet(&[_]Feature{}),
207 };
208216};
lib/std/Target/x86.zig+12-4
......@@ -3136,7 +3136,7 @@ pub const cpu = struct {
31363136 };
31373137 pub const goldmont_plus: CpuModel = .{
31383138 .name = "goldmont_plus",
3139 .llvm_name = "goldmont-plus",
3139 .llvm_name = "goldmont_plus",
31403140 .features = featureSet(&[_]Feature{
31413141 .@"64bit",
31423142 .aes,
......@@ -3163,6 +3163,8 @@ pub const cpu = struct {
31633163 .slow_incdec,
31643164 .slow_lea,
31653165 .slow_two_mem_ops,
3166 .smap,
3167 .smep,
31663168 .sse4_2,
31673169 .use_glm_div_sqrt_costs,
31683170 .vzeroupper,
......@@ -3564,7 +3566,7 @@ pub const cpu = struct {
35643566 };
35653567 pub const icelake_client: CpuModel = .{
35663568 .name = "icelake_client",
3567 .llvm_name = "icelake-client",
3569 .llvm_name = "icelake_client",
35683570 .features = featureSet(&[_]Feature{
35693571 .@"64bit",
35703572 .adx,
......@@ -3615,6 +3617,8 @@ pub const cpu = struct {
36153617 .sahf,
36163618 .sha,
36173619 .slow_pmullq,
3620 .smap,
3621 .smep,
36183622 .tuning_fast_imm_vector_shift,
36193623 .vaes,
36203624 .vpclmulqdq,
......@@ -3627,7 +3631,7 @@ pub const cpu = struct {
36273631 };
36283632 pub const icelake_server: CpuModel = .{
36293633 .name = "icelake_server",
3630 .llvm_name = "icelake-server",
3634 .llvm_name = "icelake_server",
36313635 .features = featureSet(&[_]Feature{
36323636 .@"64bit",
36333637 .adx,
......@@ -3680,6 +3684,8 @@ pub const cpu = struct {
36803684 .sahf,
36813685 .sha,
36823686 .slow_pmullq,
3687 .smap,
3688 .smep,
36833689 .tuning_fast_imm_vector_shift,
36843690 .vaes,
36853691 .vpclmulqdq,
......@@ -4872,7 +4878,7 @@ pub const cpu = struct {
48724878 };
48734879 pub const skylake_avx512: CpuModel = .{
48744880 .name = "skylake_avx512",
4875 .llvm_name = "skylake-avx512",
4881 .llvm_name = "skylake_avx512",
48764882 .features = featureSet(&[_]Feature{
48774883 .@"64bit",
48784884 .adx,
......@@ -4919,6 +4925,8 @@ pub const cpu = struct {
49194925 .rdseed,
49204926 .sahf,
49214927 .slow_3ops_lea,
4928 .smap,
4929 .smep,
49224930 .tuning_fast_imm_vector_shift,
49234931 .vzeroupper,
49244932 .x87,
lib/std/Target/xcore.zig+49-8
......@@ -4,7 +4,12 @@ const std = @import("../std.zig");
44const CpuFeature = std.Target.Cpu.Feature;
55const CpuModel = std.Target.Cpu.Model;
66
7pub const Feature = enum {};
7pub const Feature = enum {
8 fpu,
9 vpu,
10 xs2,
11 xs3,
12};
813
914pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
1015pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
......@@ -15,6 +20,32 @@ pub const all_features = blk: {
1520 const len = @typeInfo(Feature).@"enum".field_names.len;
1621 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
1722 var result: [len]CpuFeature = undefined;
23 result[@backingInt(Feature.fpu)] = .{
24 .llvm_name = null,
25 .description = "Enable single-precision floating point unit",
26 .dependencies = featureSet(&[_]Feature{
27 .xs3,
28 }),
29 };
30 result[@backingInt(Feature.vpu)] = .{
31 .llvm_name = null,
32 .description = "Enable vector processing unit",
33 .dependencies = featureSet(&[_]Feature{
34 .xs3,
35 }),
36 };
37 result[@backingInt(Feature.xs2)] = .{
38 .llvm_name = null,
39 .description = "Enable XS2 architecture",
40 .dependencies = featureSet(&[_]Feature{}),
41 };
42 result[@backingInt(Feature.xs3)] = .{
43 .llvm_name = null,
44 .description = "Enable XS3 architecture",
45 .dependencies = featureSet(&[_]Feature{
46 .xs2,
47 }),
48 };
1849 const ti = @typeInfo(Feature);
1950 for (&result, 0..) |*elem, i| {
2051 elem.index = i;
......@@ -24,14 +55,24 @@ pub const all_features = blk: {
2455};
2556
2657pub const cpu = struct {
27 pub const generic: CpuModel = .{
28 .name = "generic",
29 .llvm_name = "generic",
58 pub const xs1b: CpuModel = .{
59 .name = "xs1b",
60 .llvm_name = null,
3061 .features = featureSet(&[_]Feature{}),
3162 };
32 pub const xs1b_generic: CpuModel = .{
33 .name = "xs1b_generic",
34 .llvm_name = "xs1b-generic",
35 .features = featureSet(&[_]Feature{}),
63 pub const xs2a: CpuModel = .{
64 .name = "xs2a",
65 .llvm_name = null,
66 .features = featureSet(&[_]Feature{
67 .xs2,
68 }),
69 };
70 pub const xs3a: CpuModel = .{
71 .name = "xs3a",
72 .llvm_name = null,
73 .features = featureSet(&[_]Feature{
74 .fpu,
75 .vpu,
76 }),
3677 };
3778};
src/Type.zig+1-4
......@@ -1302,10 +1302,7 @@ pub fn abiSize(ty: Type, zcu: *const Zcu) u64 {
13021302}
13031303
13041304pub fn ptrAbiAlignment(target: *const Target) Alignment {
1305 // The eZ80 has 24-bit pointers, which aren't exact powers of two, tripping
1306 // the assert. The alignment of eZ80 pointers is 1, so we bypass the check.
1307 if (target.cpu.arch == .ez80) return .@"1";
1308 return .fromNonzeroByteUnits(@divExact(target.ptrBitWidth(), 8));
1305 return .fromNonzeroByteUnits(std.zig.target.intAlignment(target, target.ptrBitWidth()));
13091306}
13101307pub fn ptrAbiSize(target: *const Target) u64 {
13111308 return @divExact(target.ptrBitWidth(), 8);
test/c_abi/main.zig+6-6
......@@ -5032,7 +5032,7 @@ extern fn c_vector_6_u8(@Vector(6, u8), usize) void;
50325032extern fn c_test_vector_6_u8() void;
50335033
50345034test "@Vector(6, u8)" {
5035 if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest;
5035 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
50365036 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
50375037 if (builtin.cpu.arch.isMIPS()) return error.SkipZigTest;
50385038 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;
......@@ -5110,7 +5110,7 @@ extern fn c_vector_12_u8(@Vector(12, u8), usize) void;
51105110extern fn c_test_vector_12_u8() void;
51115111
51125112test "@Vector(12, u8)" {
5113 if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest;
5113 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
51145114 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
51155115 if (builtin.cpu.arch.isMIPS()) return error.SkipZigTest;
51165116
......@@ -9176,7 +9176,7 @@ extern fn c_vector_3_u16(@Vector(3, u16), usize) void;
91769176extern fn c_test_vector_3_u16() void;
91779177
91789178test "@Vector(3, u16)" {
9179 if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest;
9179 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
91809180 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
91819181 if (builtin.cpu.arch.isMIPS()) return error.SkipZigTest;
91829182 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;
......@@ -9250,7 +9250,7 @@ extern fn c_vector_6_u16(@Vector(6, u16), usize) void;
92509250extern fn c_test_vector_6_u16() void;
92519251
92529252test "@Vector(6, u16)" {
9253 if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest;
9253 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
92549254 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
92559255 if (builtin.cpu.arch.isMIPS()) return error.SkipZigTest;
92569256
......@@ -11439,7 +11439,7 @@ extern fn c_vector_3_u32(@Vector(3, u32), usize) void;
1143911439extern fn c_test_vector_3_u32() void;
1144011440
1144111441test "@Vector(3, u32)" {
11442 if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest;
11442 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
1144311443 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
1144411444 if (builtin.cpu.arch.isMIPS()) return error.SkipZigTest;
1144511445
......@@ -13424,7 +13424,7 @@ extern fn c_vector_3_f32(@Vector(3, f32), usize) void;
1342413424extern fn c_test_vector_3_f32() void;
1342513425
1342613426test "@Vector(3, f32)" {
13427 if (builtin.cpu.arch.isArm() and builtin.abi.float() == .soft) return error.SkipZigTest;
13427 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
1342813428 if (builtin.cpu.arch == .loongarch64) return error.SkipZigTest;
1342913429 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest;
1343013430
tools/update_cpu_features.zig+854-348
......@@ -23,7 +23,17 @@ const FeatureOverride = struct {
2323 extra_deps: []const []const u8 = &.{},
2424};
2525
26const Cpu = struct {
26const ModelOverride = struct {
27 llvm_name: []const u8,
28 /// If true, completely omit the CPU; as if it does not exist.
29 omit: bool = false,
30 zig_name: ?[]const u8 = null,
31 desc: ?[]const u8 = null,
32 omit_deps: []const []const u8 = &.{},
33 extra_deps: []const []const u8 = &.{},
34};
35
36const Model = struct {
2737 llvm_name: ?[]const u8,
2838 zig_name: []const u8,
2939 features: []const []const u8,
......@@ -44,9 +54,9 @@ const ArchTarget = struct {
4454 td_name: []const u8,
4555 },
4656 feature_overrides: []const FeatureOverride = &.{},
47 extra_cpus: []const Cpu = &.{},
4857 extra_features: []const Feature = &.{},
49 omit_cpus: []const []const u8 = &.{},
58 model_overrides: []const ModelOverride = &.{},
59 extra_models: []const Model = &.{},
5060 branch_quota: ?usize = null,
5161};
5262
......@@ -432,7 +442,15 @@ const targets = [_]ArchTarget{
432442 .flatten = true,
433443 },
434444 },
435 .extra_cpus = &.{
445 .model_overrides = &.{
446 .{
447 // Who thought this alias was a good idea? Upgrade your compiler and suddenly your
448 // programs SIGILL because this changed meaning. Brilliant.
449 .llvm_name = "apple-latest",
450 .omit = true,
451 },
452 },
453 .extra_models = &.{
436454 .{
437455 .llvm_name = null,
438456 .zig_name = "exynos_m1",
......@@ -485,11 +503,6 @@ const targets = [_]ArchTarget{
485503 },
486504 },
487505 },
488 .omit_cpus = &.{
489 // Who thought this alias was a good idea? Upgrade your compiler and suddenly your
490 // programs SIGILL because this changed meaning. Brilliant.
491 "apple-latest",
492 },
493506 },
494507 .{
495508 .zig_name = "alpha",
......@@ -507,7 +520,7 @@ const targets = [_]ArchTarget{
507520 },
508521 .{
509522 .zig_name = "fix",
510 .desc = "Enable floating point move and square root extensions",
523 .desc = "Enable FPR-to-GPR move and square root extensions",
511524 .deps = &.{},
512525 },
513526 .{
......@@ -516,7 +529,7 @@ const targets = [_]ArchTarget{
516529 .deps = &.{},
517530 },
518531 },
519 .extra_cpus = &.{
532 .extra_models = &.{
520533 .{
521534 .llvm_name = null,
522535 .zig_name = "ev4",
......@@ -614,169 +627,146 @@ const targets = [_]ArchTarget{
614627 .branch_quota = 10000,
615628 .feature_overrides = &.{
616629 .{
617 .llvm_name = "exynos",
630 .llvm_name = "a5",
618631 .flatten = true,
619632 },
620633 .{
621 .llvm_name = "cortex-a78",
634 .llvm_name = "a7",
622635 .flatten = true,
623636 },
624637 .{
625 .llvm_name = "cortex-a78ae",
638 .llvm_name = "a8",
626639 .flatten = true,
627640 },
628641 .{
629 .llvm_name = "cortex-a710",
642 .llvm_name = "a9",
630643 .flatten = true,
631644 },
632645 .{
633 .llvm_name = "cortex-m4",
634 .omit_deps = &.{"vfp4d16sp"},
635 },
636 .{
637 .llvm_name = "cortex-m7",
638 .omit_deps = &.{"fp_armv8d16"},
639 },
640 .{
641 .llvm_name = "cortex-m33",
642 .omit_deps = &.{ "fp_armv8d16sp", "dsp" },
643 },
644 .{
645 .llvm_name = "cortex-m35p",
646 .omit_deps = &.{ "fp_armv8d16sp", "dsp" },
647 },
648 .{
649 .llvm_name = "cortex-m55",
650 .omit_deps = &.{ "mve_fp", "fp_armv8d16" },
651 },
652 .{
653 .llvm_name = "cortex-m85",
654 .omit_deps = &.{ "mve_fp", "pacbti", "fp_armv8d16" },
655 },
656 .{
657 .llvm_name = "cortex-x1c",
646 .llvm_name = "a12",
658647 .flatten = true,
659648 },
660649 .{
661 .llvm_name = "r4",
650 .llvm_name = "a15",
662651 .flatten = true,
663652 },
664653 .{
665 .llvm_name = "r52plus",
654 .llvm_name = "a17",
666655 .flatten = true,
667656 },
668657 .{
669 .llvm_name = "r5",
658 .llvm_name = "a32",
670659 .flatten = true,
671660 },
672661 .{
673 .llvm_name = "r52",
662 .llvm_name = "a35",
674663 .flatten = true,
675664 },
676665 .{
677 .llvm_name = "r7",
666 .llvm_name = "a53",
678667 .flatten = true,
679668 },
680669 .{
681 .llvm_name = "m3",
670 .llvm_name = "a55",
682671 .flatten = true,
683672 },
684673 .{
685 .llvm_name = "m7",
674 .llvm_name = "a57",
686675 .flatten = true,
687676 },
688677 .{
689 .llvm_name = "krait",
678 .llvm_name = "a72",
690679 .flatten = true,
691680 },
692681 .{
693 .llvm_name = "kryo",
682 .llvm_name = "a73",
694683 .flatten = true,
695684 },
696685 .{
697 .llvm_name = "swift",
686 .llvm_name = "a75",
698687 .flatten = true,
699688 },
700689 .{
701 .llvm_name = "cortex-x1",
690 .llvm_name = "a76",
702691 .flatten = true,
703692 },
704693 .{
705 .llvm_name = "neoverse-v1",
694 .llvm_name = "a77",
706695 .flatten = true,
707696 },
708697 .{
709 .llvm_name = "a5",
698 .llvm_name = "a78c",
710699 .flatten = true,
711700 },
712701 .{
713 .llvm_name = "a7",
702 .llvm_name = "cortex-a78",
714703 .flatten = true,
715704 },
716705 .{
717 .llvm_name = "a8",
706 .llvm_name = "cortex-a78ae",
718707 .flatten = true,
719708 },
720709 .{
721 .llvm_name = "a9",
710 .llvm_name = "cortex-a710",
722711 .flatten = true,
723712 },
724713 .{
725 .llvm_name = "a12",
714 .llvm_name = "cortex-x1",
726715 .flatten = true,
727716 },
728717 .{
729 .llvm_name = "a15",
718 .llvm_name = "cortex-x1c",
730719 .flatten = true,
731720 },
732721 .{
733 .llvm_name = "a17",
722 .llvm_name = "exynos",
734723 .flatten = true,
735724 },
736725 .{
737 .llvm_name = "a32",
726 .llvm_name = "krait",
738727 .flatten = true,
739728 },
740729 .{
741 .llvm_name = "a35",
730 .llvm_name = "kryo",
742731 .flatten = true,
743732 },
744733 .{
745 .llvm_name = "a53",
734 .llvm_name = "m3",
746735 .flatten = true,
747736 },
748737 .{
749 .llvm_name = "a55",
738 .llvm_name = "m7",
750739 .flatten = true,
751740 },
752741 .{
753 .llvm_name = "a57",
742 .llvm_name = "neoverse-v1",
754743 .flatten = true,
755744 },
756745 .{
757 .llvm_name = "a72",
746 .llvm_name = "r4",
758747 .flatten = true,
759748 },
760749 .{
761 .llvm_name = "a73",
750 .llvm_name = "r5",
762751 .flatten = true,
763752 },
764753 .{
765 .llvm_name = "a75",
754 .llvm_name = "r7",
766755 .flatten = true,
767756 },
768757 .{
769 .llvm_name = "a76",
758 .llvm_name = "r52",
770759 .flatten = true,
771760 },
772761 .{
773 .llvm_name = "a77",
762 .llvm_name = "r52plus",
774763 .flatten = true,
775764 },
776765 .{
777 .llvm_name = "a78c",
766 .llvm_name = "swift",
778767 .flatten = true,
779768 },
769
780770 .{
781771 .llvm_name = "armv2",
782772 .zig_name = "v2",
......@@ -853,6 +843,7 @@ const targets = [_]ArchTarget{
853843 .{
854844 .llvm_name = "armv7-a",
855845 .zig_name = "v7a",
846 .omit_deps = &.{"neon"},
856847 },
857848 .{
858849 .llvm_name = "armv7-m",
......@@ -877,58 +868,72 @@ const targets = [_]ArchTarget{
877868 .{
878869 .llvm_name = "armv7ve",
879870 .zig_name = "v7ve",
871 .omit_deps = &.{"neon"},
880872 },
881873 .{
882874 .llvm_name = "armv8.1-a",
883875 .zig_name = "v8_1a",
876 .omit_deps = &.{"crypto"},
884877 },
885878 .{
886879 .llvm_name = "armv8.1-m.main",
887880 .zig_name = "v8_1m_main",
881 .omit_deps = &.{"8msecext"},
888882 },
889883 .{
890884 .llvm_name = "armv8.2-a",
891885 .zig_name = "v8_2a",
886 .omit_deps = &.{"crypto"},
892887 },
893888 .{
894889 .llvm_name = "armv8.3-a",
895890 .zig_name = "v8_3a",
891 .omit_deps = &.{"crypto"},
896892 },
897893 .{
898894 .llvm_name = "armv8.4-a",
899895 .zig_name = "v8_4a",
896 .omit_deps = &.{"crypto"},
900897 },
901898 .{
902899 .llvm_name = "armv8.5-a",
903900 .zig_name = "v8_5a",
901 .omit_deps = &.{"crypto"},
904902 },
905903 .{
906904 .llvm_name = "armv8.6-a",
907905 .zig_name = "v8_6a",
906 .omit_deps = &.{"crypto"},
908907 },
909908 .{
910909 .llvm_name = "armv8.7-a",
911910 .zig_name = "v8_7a",
911 .omit_deps = &.{"crypto"},
912912 },
913913 .{
914914 .llvm_name = "armv8.8-a",
915915 .zig_name = "v8_8a",
916 .omit_deps = &.{"crypto"},
916917 },
917918 .{
918919 .llvm_name = "armv8.9-a",
919920 .zig_name = "v8_9a",
921 .omit_deps = &.{"crypto"},
920922 },
921923 .{
922924 .llvm_name = "armv8-a",
923925 .zig_name = "v8a",
926 .omit_deps = &.{"crypto"},
924927 },
925928 .{
926929 .llvm_name = "armv8-m.base",
927930 .zig_name = "v8m",
931 .omit_deps = &.{"8msecext"},
928932 },
929933 .{
930934 .llvm_name = "armv8-m.main",
931935 .zig_name = "v8m_main",
936 .omit_deps = &.{"8msecext"},
932937 },
933938 .{
934939 .llvm_name = "armv8-r",
......@@ -945,6 +950,7 @@ const targets = [_]ArchTarget{
945950 .{
946951 .llvm_name = "armv9.3-a",
947952 .zig_name = "v9_3a",
953 .omit_deps = &.{"crypto"},
948954 },
949955 .{
950956 .llvm_name = "armv9.4-a",
......@@ -1087,23 +1093,6 @@ const targets = [_]ArchTarget{
10871093 .zig_name = "has_v9_7a",
10881094 },
10891095 },
1090 .extra_cpus = &.{
1091 .{
1092 .llvm_name = "generic",
1093 .zig_name = "baseline",
1094 .features = &.{"v7a"},
1095 },
1096 .{
1097 .llvm_name = null,
1098 .zig_name = "exynos_m1",
1099 .features = &.{ "v8a", "exynos" },
1100 },
1101 .{
1102 .llvm_name = null,
1103 .zig_name = "exynos_m2",
1104 .features = &.{ "v8a", "exynos" },
1105 },
1106 },
11071096 .extra_features = &.{
11081097 // LLVM removed support for v2 and v3 but zig wants to support targeting old hardware
11091098 .{
......@@ -1127,183 +1116,459 @@ const targets = [_]ArchTarget{
11271116 .deps = &.{"strict_align"},
11281117 },
11291118 },
1130 },
1131 .{
1132 .zig_name = "avr",
1133 .llvm = .{
1134 .name = "AVR",
1135 .td_name = "AVR",
1136 },
1137 },
1138 .{
1139 .zig_name = "bpf",
1140 .llvm = .{
1141 .name = "BPF",
1142 .td_name = "BPF",
1143 },
1144 },
1145 .{
1146 .zig_name = "csky",
1147 .llvm = .{
1148 .name = "CSKY",
1149 .td_name = "CSKY",
1150 },
1151 },
1152 .{
1153 .zig_name = "hexagon",
1154 .llvm = .{
1155 .name = "Hexagon",
1156 .td_name = "Hexagon",
1157 },
1158 },
1159 .{
1160 .zig_name = "hppa",
1161 .llvm = null,
1162 .extra_features = &.{
1119 .model_overrides = &.{
11631120 .{
1164 .zig_name = "64bit",
1165 .desc = "Enable 64-bit PA-RISC 2.0",
1166 .deps = &.{"v2_0"},
1121 .llvm_name = "cortex-a5",
1122 .omit_deps = &.{"vfp4"},
11671123 },
11681124 .{
1169 .zig_name = "max_1",
1170 .desc = "Enable MAX-1 multimedia acceleration extensions",
1171 .deps = &.{},
1125 .llvm_name = "cortex-a7",
1126 .omit_deps = &.{"vfp4"},
11721127 },
11731128 .{
1174 .zig_name = "max_2",
1175 .desc = "Enable MAX-2 multimedia acceleration extensions",
1176 .deps = &.{"max_1"},
1129 .llvm_name = "cortex-a9",
1130 .omit_deps = &.{"fp16"},
11771131 },
11781132 .{
1179 .zig_name = "v1_1",
1180 .desc = "Enable ISA v1.1",
1181 .deps = &.{},
1133 .llvm_name = "cortex-a12",
1134 .omit_deps = &.{"vfp4"},
11821135 },
11831136 .{
1184 .zig_name = "v2_0",
1185 .desc = "Enable ISA v2.0",
1186 .deps = &.{ "max_2", "v1_1" },
1137 .llvm_name = "cortex-a15",
1138 .omit_deps = &.{"vfp4"},
11871139 },
1188 },
1189 .extra_cpus = &.{
11901140 .{
1191 .llvm_name = null,
1192 .zig_name = "ts_1",
1193 .features = &.{},
1141 .llvm_name = "cortex-a17",
1142 .omit_deps = &.{"vfp4"},
11941143 },
11951144 .{
1196 .llvm_name = null,
1197 .zig_name = "ns_1",
1198 .features = &.{},
1145 .llvm_name = "cortex-a32",
1146 .omit_deps = &.{"crypto"},
11991147 },
12001148 .{
1201 .llvm_name = null,
1202 .zig_name = "ns_2",
1203 .features = &.{},
1149 .llvm_name = "cortex-a35",
1150 .omit_deps = &.{"crypto"},
12041151 },
12051152 .{
1206 .llvm_name = null,
1207 .zig_name = "pcx",
1208 .features = &.{},
1153 .llvm_name = "cortex-a53",
1154 .omit_deps = &.{"crypto"},
12091155 },
12101156 .{
1211 .llvm_name = null,
1212 .zig_name = "pa_7000",
1213 .features = &.{
1214 "v1_1",
1215 },
1157 .llvm_name = "cortex-a57",
1158 .omit_deps = &.{"crypto"},
12161159 },
12171160 .{
1218 .llvm_name = null,
1219 .zig_name = "pa_7100",
1220 .features = &.{
1221 "v1_1",
1222 },
1161 .llvm_name = "cortex-a72",
1162 .omit_deps = &.{"crypto"},
12231163 },
12241164 .{
1225 .llvm_name = null,
1226 .zig_name = "pa_7150",
1227 .features = &.{
1228 "v1_1",
1229 },
1165 .llvm_name = "cortex-a73",
1166 .omit_deps = &.{"crypto"},
12301167 },
12311168 .{
1232 .llvm_name = null,
1233 .zig_name = "pa_7100lc",
1234 .features = &.{
1235 "max_1",
1236 "v1_1",
1237 },
1169 .llvm_name = "cortex-a76",
1170 .omit_deps = &.{"crypto"},
12381171 },
12391172 .{
1240 .llvm_name = null,
1241 .zig_name = "pa_7200",
1242 .features = &.{
1243 "v1_1",
1244 },
1173 .llvm_name = "cortex-a76ae",
1174 .omit_deps = &.{"crypto"},
12451175 },
12461176 .{
1247 .llvm_name = null,
1248 .zig_name = "pa_7300lc",
1249 .features = &.{
1250 "max_1",
1251 "v1_1",
1252 },
1177 .llvm_name = "cortex-a77",
1178 .omit_deps = &.{"crypto"},
12531179 },
12541180 .{
1255 .llvm_name = null,
1256 .zig_name = "pa_8000",
1257 .features = &.{
1258 "64bit",
1259 },
1181 .llvm_name = "cortex-a78",
1182 .omit_deps = &.{"crypto"},
12601183 },
12611184 .{
1262 .llvm_name = null,
1263 .zig_name = "pa_8200",
1264 .features = &.{
1265 "64bit",
1266 },
1185 .llvm_name = "cortex-a78ae",
1186 .omit_deps = &.{"crypto"},
12671187 },
12681188 .{
1269 .llvm_name = null,
1270 .zig_name = "pa_8500",
1271 .features = &.{
1272 "64bit",
1273 },
1189 .llvm_name = "cortex-a78c",
1190 .omit_deps = &.{"crypto"},
12741191 },
12751192 .{
1276 .llvm_name = null,
1277 .zig_name = "pa_8600",
1278 .features = &.{
1279 "64bit",
1280 },
1193 .llvm_name = "cortex-m4",
1194 .omit_deps = &.{"vfp4d16sp"},
12811195 },
12821196 .{
1283 .llvm_name = null,
1284 .zig_name = "pa_8700",
1285 .features = &.{
1286 "64bit",
1287 },
1197 .llvm_name = "cortex-m7",
1198 .omit_deps = &.{"fp_armv8d16"},
12881199 },
12891200 .{
1290 .llvm_name = null,
1291 .zig_name = "pa_8800",
1292 .features = &.{
1293 "64bit",
1294 },
1201 .llvm_name = "cortex-m33",
1202 .omit_deps = &.{ "dsp", "fp_armv8d16sp" },
12951203 },
12961204 .{
1297 .llvm_name = null,
1298 .zig_name = "pa_8900",
1299 .features = &.{
1300 "64bit",
1301 },
1205 .llvm_name = "cortex-m35p",
1206 .omit_deps = &.{ "dsp", "fp_armv8d16sp" },
13021207 },
1303 },
1304 },
1305 .{
1306 .zig_name = "kvx",
1208 .{
1209 .llvm_name = "cortex-m52",
1210 .omit_deps = &.{ "fp_armv8d16", "mve_fp", "pacbti" },
1211 },
1212 .{
1213 .llvm_name = "cortex-m55",
1214 .omit_deps = &.{ "fp_armv8d16", "mve_fp" },
1215 },
1216 .{
1217 .llvm_name = "cortex-m85",
1218 .extra_deps = &.{"8msecext"},
1219 .omit_deps = &.{ "fp_armv8d16", "mve_fp", "pacbti" },
1220 },
1221 .{
1222 .llvm_name = "cortex-r5",
1223 .omit_deps = &.{"vfp3d16"},
1224 },
1225 .{
1226 .llvm_name = "cortex-r7",
1227 .omit_deps = &.{ "fp16", "vfp3d16" },
1228 },
1229 .{
1230 .llvm_name = "cortex-r8",
1231 .omit_deps = &.{ "fp16", "vfp3d16" },
1232 },
1233 .{
1234 .llvm_name = "cortex-r52",
1235 .omit_deps = &.{ "fp_armv8", "neon" },
1236 },
1237 .{
1238 .llvm_name = "cortex-r52plus",
1239 .omit_deps = &.{ "fp_armv8", "neon" },
1240 },
1241 .{
1242 .llvm_name = "cortex-x1",
1243 .omit_deps = &.{"crypto"},
1244 },
1245 .{
1246 .llvm_name = "cortex-x1c",
1247 .omit_deps = &.{"crypto"},
1248 },
1249 .{
1250 .llvm_name = "krait",
1251 .extra_deps = &.{"neon"},
1252 },
1253 .{
1254 .llvm_name = "neoverse-n1",
1255 .omit_deps = &.{"crypto"},
1256 },
1257 .{
1258 .llvm_name = "neoverse-v1",
1259 .omit_deps = &.{"crypto"},
1260 },
1261 .{
1262 .llvm_name = "star-mc1",
1263 .omit_deps = &.{ "dsp", "fp_armv8d16sp" },
1264 },
1265 .{
1266 .llvm_name = "star-mc3",
1267 .omit_deps = &.{ "fp_armv8d16", "mve_fp", "pacbti" },
1268 },
1269 .{
1270 .llvm_name = "swift",
1271 .extra_deps = &.{"neon"},
1272 },
1273 },
1274 .extra_models = &.{
1275 .{
1276 .llvm_name = "generic",
1277 .zig_name = "baseline",
1278 .features = &.{ "v7a", "vfp3d16" },
1279 },
1280 .{
1281 .llvm_name = null,
1282 .zig_name = "exynos_m1",
1283 .features = &.{ "v8a", "exynos" },
1284 },
1285 .{
1286 .llvm_name = null,
1287 .zig_name = "exynos_m2",
1288 .features = &.{ "v8a", "exynos" },
1289 },
1290 .{
1291 .llvm_name = "cortex-a9",
1292 .zig_name = "kermit",
1293 .features = &.{
1294 "avoid_partial_cpsr",
1295 "expand_fp_mlx",
1296 "fp16",
1297 "mp",
1298 "muxed_units",
1299 "neon",
1300 "neon_fpmovs",
1301 "prefer_vmovsr",
1302 "ret_addr_stack",
1303 "trustzone",
1304 "v7a",
1305 "vldn_align",
1306 "vmlx_forwarding",
1307 "vmlx_hazards",
1308 },
1309 },
1310 },
1311 },
1312 .{
1313 .zig_name = "avr",
1314 .llvm = .{
1315 .name = "AVR",
1316 .td_name = "AVR",
1317 },
1318 },
1319 .{
1320 .zig_name = "bpf",
1321 .llvm = .{
1322 .name = "BPF",
1323 .td_name = "BPF",
1324 },
1325 .feature_overrides = &.{
1326 .{
1327 .llvm_name = "dummy",
1328 .omit = true,
1329 },
1330 .{
1331 .llvm_name = "dwarfris",
1332 .omit = true,
1333 },
1334 },
1335 },
1336 .{
1337 .zig_name = "csky",
1338 .llvm = .{
1339 .name = "CSKY",
1340 .td_name = "CSKY",
1341 },
1342 .feature_overrides = &.{
1343 .{
1344 .llvm_name = "ccrt",
1345 .omit = true,
1346 },
1347 .{
1348 .llvm_name = "constpool",
1349 .omit = true,
1350 },
1351 .{
1352 .llvm_name = "multiple_stld",
1353 .omit = true,
1354 },
1355 .{
1356 .llvm_name = "nvic",
1357 .omit = true,
1358 },
1359 .{
1360 .llvm_name = "pushpop",
1361 .omit = true,
1362 },
1363 .{
1364 .llvm_name = "smart",
1365 .omit = true,
1366 },
1367 .{
1368 .llvm_name = "soft_tp",
1369 .omit = true,
1370 },
1371 .{
1372 .llvm_name = "stack_size",
1373 .omit = true,
1374 },
1375
1376 .{
1377 .llvm_name = "ck801",
1378 .flatten = true,
1379 },
1380 .{
1381 .llvm_name = "ck802",
1382 .flatten = true,
1383 },
1384 .{
1385 .llvm_name = "ck803",
1386 .flatten = true,
1387 },
1388 .{
1389 .llvm_name = "ck803s",
1390 .flatten = true,
1391 },
1392 .{
1393 .llvm_name = "ck804",
1394 .flatten = true,
1395 },
1396 .{
1397 .llvm_name = "ck805",
1398 .flatten = true,
1399 },
1400 .{
1401 .llvm_name = "ck807",
1402 .flatten = true,
1403 },
1404 .{
1405 .llvm_name = "ck810",
1406 .flatten = true,
1407 },
1408 .{
1409 .llvm_name = "ck810v",
1410 .flatten = true,
1411 },
1412 .{
1413 .llvm_name = "ck860",
1414 .flatten = true,
1415 },
1416 .{
1417 .llvm_name = "ck860v",
1418 .flatten = true,
1419 },
1420 },
1421 },
1422 .{
1423 .zig_name = "hexagon",
1424 .llvm = .{
1425 .name = "Hexagon",
1426 .td_name = "Hexagon",
1427 },
1428 },
1429 .{
1430 .zig_name = "hppa",
1431 .llvm = null,
1432 .extra_features = &.{
1433 .{
1434 .zig_name = "max_1",
1435 .desc = "Enable MAX-1 multimedia acceleration extensions",
1436 .deps = &.{},
1437 },
1438 .{
1439 .zig_name = "max_2",
1440 .desc = "Enable MAX-2 multimedia acceleration extensions",
1441 .deps = &.{"max_1"},
1442 },
1443 .{
1444 .zig_name = "v1_1",
1445 .desc = "Enable ISA v1.1",
1446 .deps = &.{},
1447 },
1448 .{
1449 .zig_name = "v2_0",
1450 .desc = "Enable ISA v2.0",
1451 .deps = &.{ "max_2", "v1_1" },
1452 },
1453 },
1454 .extra_models = &.{
1455 .{
1456 .llvm_name = null,
1457 .zig_name = "ts_1",
1458 .features = &.{},
1459 },
1460 .{
1461 .llvm_name = null,
1462 .zig_name = "ns_1",
1463 .features = &.{},
1464 },
1465 .{
1466 .llvm_name = null,
1467 .zig_name = "ns_2",
1468 .features = &.{},
1469 },
1470 .{
1471 .llvm_name = null,
1472 .zig_name = "pcx",
1473 .features = &.{},
1474 },
1475 .{
1476 .llvm_name = null,
1477 .zig_name = "pa_7000",
1478 .features = &.{
1479 "v1_1",
1480 },
1481 },
1482 .{
1483 .llvm_name = null,
1484 .zig_name = "pa_7100",
1485 .features = &.{
1486 "v1_1",
1487 },
1488 },
1489 .{
1490 .llvm_name = null,
1491 .zig_name = "pa_7150",
1492 .features = &.{
1493 "v1_1",
1494 },
1495 },
1496 .{
1497 .llvm_name = null,
1498 .zig_name = "pa_7100lc",
1499 .features = &.{
1500 "max_1",
1501 "v1_1",
1502 },
1503 },
1504 .{
1505 .llvm_name = null,
1506 .zig_name = "pa_7200",
1507 .features = &.{
1508 "v1_1",
1509 },
1510 },
1511 .{
1512 .llvm_name = null,
1513 .zig_name = "pa_7300lc",
1514 .features = &.{
1515 "max_1",
1516 "v1_1",
1517 },
1518 },
1519 .{
1520 .llvm_name = null,
1521 .zig_name = "pa_8000",
1522 .features = &.{
1523 "v2_0",
1524 },
1525 },
1526 .{
1527 .llvm_name = null,
1528 .zig_name = "pa_8200",
1529 .features = &.{
1530 "v2_0",
1531 },
1532 },
1533 .{
1534 .llvm_name = null,
1535 .zig_name = "pa_8500",
1536 .features = &.{
1537 "v2_0",
1538 },
1539 },
1540 .{
1541 .llvm_name = null,
1542 .zig_name = "pa_8600",
1543 .features = &.{
1544 "v2_0",
1545 },
1546 },
1547 .{
1548 .llvm_name = null,
1549 .zig_name = "pa_8700",
1550 .features = &.{
1551 "v2_0",
1552 },
1553 },
1554 .{
1555 .llvm_name = null,
1556 .zig_name = "pa_8800",
1557 .features = &.{
1558 "v2_0",
1559 },
1560 },
1561 .{
1562 .llvm_name = null,
1563 .zig_name = "pa_8900",
1564 .features = &.{
1565 "v2_0",
1566 },
1567 },
1568 },
1569 },
1570 .{
1571 .zig_name = "kvx",
13071572 .llvm = null,
13081573 .extra_features = &.{
13091574 .{
......@@ -1314,7 +1579,7 @@ const targets = [_]ArchTarget{
13141579 .{
13151580 .zig_name = "v3_2",
13161581 .desc = "Enable ISA v3.2",
1317 .deps = &.{"v3_1"},
1582 .deps = &.{},
13181583 },
13191584 .{
13201585 .zig_name = "v4_1",
......@@ -1322,7 +1587,7 @@ const targets = [_]ArchTarget{
13221587 .deps = &.{"v3_2"},
13231588 },
13241589 },
1325 .extra_cpus = &.{
1590 .extra_models = &.{
13261591 .{
13271592 .llvm_name = null,
13281593 .zig_name = "coolidge_v1",
......@@ -1352,7 +1617,25 @@ const targets = [_]ArchTarget{
13521617 .name = "LoongArch",
13531618 .td_name = "LoongArch",
13541619 },
1355 .extra_cpus = &.{
1620 .model_overrides = &.{
1621 .{
1622 .llvm_name = "generic",
1623 .omit = true,
1624 },
1625 .{
1626 .llvm_name = "generic-la64",
1627 .omit = true,
1628 },
1629 .{
1630 .llvm_name = "loongarch32",
1631 .omit = true,
1632 },
1633 .{
1634 .llvm_name = "loongarch64",
1635 .omit = true,
1636 },
1637 },
1638 .extra_models = &.{
13561639 .{
13571640 .llvm_name = null,
13581641 .zig_name = "generic_la64",
......@@ -1403,12 +1686,6 @@ const targets = [_]ArchTarget{
14031686 },
14041687 },
14051688 },
1406 .omit_cpus = &.{
1407 "generic",
1408 "generic-la64",
1409 "loongarch32",
1410 "loongarch64",
1411 },
14121689 },
14131690 .{
14141691 .zig_name = "m68k",
......@@ -1437,7 +1714,7 @@ const targets = [_]ArchTarget{
14371714 .deps = &.{},
14381715 },
14391716 },
1440 .extra_cpus = &.{
1717 .extra_models = &.{
14411718 .{
14421719 .llvm_name = null,
14431720 .zig_name = "r3000a",
......@@ -1489,7 +1766,13 @@ const targets = [_]ArchTarget{
14891766 .omit = true,
14901767 },
14911768 },
1492 .extra_cpus = &.{
1769 .model_overrides = &.{
1770 .{
1771 .llvm_name = "ppc32",
1772 .omit = true,
1773 },
1774 },
1775 .extra_models = &.{
14931776 .{
14941777 .llvm_name = null,
14951778 .zig_name = "cell",
......@@ -1525,9 +1808,6 @@ const targets = [_]ArchTarget{
15251808 },
15261809 },
15271810 },
1528 .omit_cpus = &.{
1529 "ppc32",
1530 },
15311811 },
15321812 .{
15331813 .zig_name = "propeller",
......@@ -1539,7 +1819,7 @@ const targets = [_]ArchTarget{
15391819 .deps = &.{},
15401820 },
15411821 },
1542 .extra_cpus = &.{
1822 .extra_models = &.{
15431823 .{
15441824 .llvm_name = null,
15451825 .zig_name = "p1",
......@@ -1560,7 +1840,7 @@ const targets = [_]ArchTarget{
15601840 },
15611841 .branch_quota = 2000,
15621842 .extra_features = spirv_extra_features,
1563 .extra_cpus = &.{
1843 .extra_models = &.{
15641844 .{
15651845 .llvm_name = null,
15661846 .zig_name = "vulkan_v1_2",
......@@ -1586,7 +1866,7 @@ const targets = [_]ArchTarget{
15861866 .flatten = true,
15871867 },
15881868 },
1589 .extra_cpus = &.{
1869 .extra_models = &.{
15901870 .{
15911871 .llvm_name = null,
15921872 .zig_name = "baseline_rv32",
......@@ -1619,6 +1899,36 @@ const targets = [_]ArchTarget{
16191899 .name = "VE",
16201900 .td_name = "VE",
16211901 },
1902 .extra_features = &.{
1903 .{
1904 .zig_name = "ve3",
1905 .desc = "Enable VE3 instructions",
1906 .deps = &.{},
1907 },
1908 },
1909 .model_overrides = &.{
1910 .{
1911 .llvm_name = "generic",
1912 .omit = true,
1913 },
1914 },
1915 .extra_models = &.{
1916 .{
1917 .llvm_name = null,
1918 .zig_name = "ve10",
1919 .features = &.{"vpu"},
1920 },
1921 .{
1922 .llvm_name = null,
1923 .zig_name = "ve20",
1924 .features = &.{"vpu"},
1925 },
1926 .{
1927 .llvm_name = null,
1928 .zig_name = "ve30",
1929 .features = &.{ "ve3", "vpu" },
1930 },
1931 },
16221932 },
16231933 .{
16241934 .zig_name = "wasm",
......@@ -1633,9 +1943,17 @@ const targets = [_]ArchTarget{
16331943 .llvm_name = "bulk-memory",
16341944 .extra_deps = &.{"bulk_memory_opt"},
16351945 },
1946 .{
1947 .llvm_name = "f16",
1948 .extra_deps = &.{"simd128"},
1949 },
16361950 .{
16371951 .llvm_name = "reference-types",
1638 .extra_deps = &.{"call_indirect_overlong"},
1952 .extra_deps = &.{ "bulk_memory", "call_indirect_overlong" },
1953 },
1954 .{
1955 .llvm_name = "relaxed-simd",
1956 .extra_deps = &.{"simd128"},
16391957 },
16401958 },
16411959 .extra_features = &.{
......@@ -1645,6 +1963,54 @@ const targets = [_]ArchTarget{
16451963 .deps = &.{"bulk_memory_opt"},
16461964 },
16471965 },
1966 .model_overrides = &.{
1967 .{
1968 .llvm_name = "bleeding-edge",
1969 .omit = true,
1970 },
1971 .{
1972 .llvm_name = "generic",
1973 .omit = true,
1974 },
1975 },
1976 .extra_models = &.{
1977 .{
1978 .llvm_name = null,
1979 .zig_name = "wasm_v1_0",
1980 .features = &.{
1981 "mutable_globals",
1982 },
1983 },
1984 .{
1985 .llvm_name = null,
1986 .zig_name = "wasm_v2_0",
1987 .features = &.{
1988 "multivalue",
1989 "mutable_globals",
1990 "nontrapping_fptoint",
1991 "reference_types",
1992 "sign_ext",
1993 "simd128",
1994 },
1995 },
1996 .{
1997 .llvm_name = null,
1998 .zig_name = "wasm_v3_0",
1999 .features = &.{
2000 "atomics",
2001 "exception_handling",
2002 "extended_const",
2003 "fp16",
2004 "gc",
2005 "multimemory",
2006 "mutable_globals",
2007 "nontrapping_fptoint",
2008 "relaxed_simd",
2009 "sign_ext",
2010 "tail_call",
2011 },
2012 },
2013 },
16482014 },
16492015 .{
16502016 .zig_name = "x86",
......@@ -1670,20 +2036,58 @@ const targets = [_]ArchTarget{
16702036 .omit = true,
16712037 },
16722038 .{
1673 .llvm_name = "alderlake",
1674 .extra_deps = &.{ "smap", "smep" },
2039 .llvm_name = "sse4.2",
2040 .extra_deps = &.{"crc32"},
16752041 },
2042 },
2043 .extra_features = &.{
2044 // Features removed from LLVM
16762045 .{
1677 .llvm_name = "amdfam10",
1678 .extra_deps = &.{"3dnowa"},
2046 .zig_name = "3dnow",
2047 .desc = "Enable 3DNow! instructions",
2048 .deps = &.{"mmx"},
16792049 },
16802050 .{
1681 .llvm_name = "arrowlake",
1682 .extra_deps = &.{ "smap", "smep" },
2051 .zig_name = "3dnowa",
2052 .desc = "Enable 3DNow! Athlon instructions",
2053 .deps = &.{"3dnow"},
16832054 },
16842055 .{
1685 .llvm_name = "arrowlake-s",
1686 .extra_deps = &.{ "smap", "smep" },
2056 .zig_name = "avx512er",
2057 .desc = "Enable AVX-512 Exponential and Reciprocal Instructions",
2058 .deps = &.{"avx512f"},
2059 },
2060 .{
2061 .zig_name = "avx512pf",
2062 .desc = "Enable AVX-512 PreFetch Instructions",
2063 .deps = &.{"avx512f"},
2064 },
2065 .{
2066 .zig_name = "prefetchwt1",
2067 .desc = "Prefetch with Intent to Write and T1 Hint",
2068 .deps = &.{},
2069 },
2070 // Custom Zig features
2071 .{
2072 .zig_name = "bsf_bsr_0_clobbers_result",
2073 .desc = "BSF/BSR may clobber the lower 32-bits of the result register when the source is zero",
2074 .deps = &.{},
2075 },
2076 .{
2077 .zig_name = "smap",
2078 .desc = "Enable Supervisor Mode Access Prevention",
2079 .deps = &.{},
2080 },
2081 .{
2082 .zig_name = "smep",
2083 .desc = "Enable Supervisor Mode Execution Prevention",
2084 .deps = &.{},
2085 },
2086 },
2087 .model_overrides = &.{
2088 .{
2089 .llvm_name = "amdfam10",
2090 .extra_deps = &.{"3dnowa"},
16872091 },
16882092 .{
16892093 .llvm_name = "athlon",
......@@ -1862,8 +2266,16 @@ const targets = [_]ArchTarget{
18622266 .extra_deps = &.{"3dnow"},
18632267 },
18642268 .{
1865 .llvm_name = "sse4.2",
1866 .extra_deps = &.{"crc32"},
2269 .llvm_name = "alderlake",
2270 .extra_deps = &.{ "smap", "smep" },
2271 },
2272 .{
2273 .llvm_name = "arrowlake",
2274 .extra_deps = &.{ "smap", "smep" },
2275 },
2276 .{
2277 .llvm_name = "arrowlake-s",
2278 .extra_deps = &.{ "smap", "smep" },
18672279 },
18682280 .{
18692281 .llvm_name = "znver1",
......@@ -1885,92 +2297,140 @@ const targets = [_]ArchTarget{
18852297 .llvm_name = "znver5",
18862298 .extra_deps = &.{ "smap", "smep" },
18872299 },
1888 },
1889 .extra_features = &.{
1890 // Features removed from LLVM
2300
2301 // LLVM defines a bunch of dumb aliases with foreach loops in X86.td.
18912302 .{
1892 .zig_name = "3dnow",
1893 .desc = "Enable 3DNow! instructions",
1894 .deps = &.{"mmx"},
2303 .llvm_name = "pentium_mmx",
2304 .omit = true,
18952305 },
18962306 .{
1897 .zig_name = "3dnowa",
1898 .desc = "Enable 3DNow! Athlon instructions",
1899 .deps = &.{"3dnow"},
2307 .llvm_name = "pentium_pro",
2308 .omit = true,
19002309 },
19012310 .{
1902 .zig_name = "avx512er",
1903 .desc = "Enable AVX-512 Exponential and Reciprocal Instructions",
1904 .deps = &.{"avx512f"},
2311 .llvm_name = "pentium_ii",
2312 .omit = true,
19052313 },
19062314 .{
1907 .zig_name = "avx512pf",
1908 .desc = "Enable AVX-512 PreFetch Instructions",
1909 .deps = &.{"avx512f"},
2315 .llvm_name = "pentium_3m",
2316 .omit = true,
19102317 },
19112318 .{
1912 .zig_name = "prefetchwt1",
1913 .desc = "Prefetch with Intent to Write and T1 Hint",
1914 .deps = &.{},
2319 .llvm_name = "pentium_iii",
2320 .omit = true,
19152321 },
1916 // Custom Zig features
19172322 .{
1918 .zig_name = "bsf_bsr_0_clobbers_result",
1919 .desc = "BSF/BSR may clobber the lower 32-bits of the result register when the source is zero",
1920 .deps = &.{},
2323 .llvm_name = "pentium_iii_no_xmm_regs",
2324 .omit = true,
19212325 },
19222326 .{
1923 .zig_name = "smap",
1924 .desc = "Enable Supervisor Mode Access Prevention",
1925 .deps = &.{},
2327 .llvm_name = "pentium_m",
2328 .omit = true,
19262329 },
19272330 .{
1928 .zig_name = "smep",
1929 .desc = "Enable Supervisor Mode Execution Prevention",
1930 .deps = &.{},
2331 .llvm_name = "pentium4m",
2332 .omit = true,
2333 },
2334 .{
2335 .llvm_name = "pentium_4",
2336 .omit = true,
2337 },
2338 .{
2339 .llvm_name = "pentium_4_sse3",
2340 .omit = true,
2341 },
2342 .{
2343 .llvm_name = "core_2_duo_ssse3",
2344 .omit = true,
2345 },
2346 .{
2347 .llvm_name = "core_2_duo_sse4_1",
2348 .omit = true,
2349 },
2350 .{
2351 .llvm_name = "atom_sse4_2",
2352 .omit = true,
2353 },
2354 .{
2355 .llvm_name = "goldmont-plus",
2356 .omit = true,
2357 },
2358 .{
2359 .llvm_name = "core_i7_sse4_2",
2360 .omit = true,
2361 },
2362 .{
2363 .llvm_name = "core_aes_pclmulqdq",
2364 .omit = true,
2365 },
2366 .{
2367 .llvm_name = "corei7-avx",
2368 .omit = true,
2369 },
2370 .{
2371 .llvm_name = "core_2nd_gen_avx",
2372 .omit = true,
2373 },
2374 .{
2375 .llvm_name = "core-avx-i",
2376 .omit = true,
2377 },
2378 .{
2379 .llvm_name = "core_3rd_gen_avx",
2380 .omit = true,
2381 },
2382 .{
2383 .llvm_name = "core-avx2",
2384 .omit = true,
2385 },
2386 .{
2387 .llvm_name = "core_4th_gen_avx",
2388 .omit = true,
2389 },
2390 .{
2391 .llvm_name = "core_4th_gen_avx_tsx",
2392 .omit = true,
2393 },
2394 .{
2395 .llvm_name = "core_5th_gen_avx",
2396 .omit = true,
2397 },
2398 .{
2399 .llvm_name = "core_5th_gen_avx_tsx",
2400 .omit = true,
2401 },
2402 .{
2403 .llvm_name = "mic_avx512",
2404 .omit = true,
2405 },
2406 .{
2407 .llvm_name = "skylake-avx512",
2408 .omit = true,
2409 },
2410 .{
2411 .llvm_name = "icelake-client",
2412 .omit = true,
2413 },
2414 .{
2415 .llvm_name = "icelake-server",
2416 .omit = true,
2417 },
2418 .{
2419 .llvm_name = "graniterapids_d",
2420 .omit = true,
2421 },
2422 .{
2423 .llvm_name = "arrowlake_s",
2424 .omit = true,
19312425 },
19322426 },
1933 .extra_cpus = &.{
2427 .extra_models = &.{
19342428 .{
19352429 .llvm_name = null,
19362430 .zig_name = "i86",
19372431 .features = &.{"16bit_mode"},
19382432 },
19392433 },
1940 .omit_cpus = &.{
1941 // LLVM defines a bunch of dumb aliases with foreach loops in X86.td.
1942 "pentium_mmx",
1943 "pentium_pro",
1944 "pentium_ii",
1945 "pentium_3m",
1946 "pentium_iii_no_xmm_regs",
1947 "pentium_iii",
1948 "pentium_m",
1949 "pentium4m",
1950 "pentium_4",
1951 "pentium_4_sse3",
1952 "core_2_duo_ssse3",
1953 "core_2_duo_sse4_1",
1954 "atom_sse4_2",
1955 "goldmont_plus",
1956 "core_i7_sse4_2",
1957 "core_aes_pclmulqdq",
1958 "corei7-avx",
1959 "core_2nd_gen_avx",
1960 "core-avx-i",
1961 "core_3rd_gen_avx",
1962 "core-avx2",
1963 "core_4th_gen_avx",
1964 "core_4th_gen_avx_tsx",
1965 "core_5th_gen_avx",
1966 "core_5th_gen_avx_tsx",
1967 "mic_avx512",
1968 "skylake_avx512",
1969 "icelake_client",
1970 "icelake_server",
1971 "graniterapids_d",
1972 "arrowlake_s",
1973 },
19742434 },
19752435 .{
19762436 .zig_name = "xcore",
......@@ -1978,6 +2438,55 @@ const targets = [_]ArchTarget{
19782438 .name = "XCore",
19792439 .td_name = "XCore",
19802440 },
2441 .extra_features = &.{
2442 .{
2443 .zig_name = "xs2",
2444 .desc = "Enable XS2 architecture",
2445 .deps = &.{},
2446 },
2447 .{
2448 .zig_name = "xs3",
2449 .desc = "Enable XS3 architecture",
2450 .deps = &.{"xs2"},
2451 },
2452 .{
2453 .zig_name = "fpu",
2454 .desc = "Enable single-precision floating point unit",
2455 .deps = &.{"xs3"},
2456 },
2457 .{
2458 .zig_name = "vpu",
2459 .desc = "Enable vector processing unit",
2460 .deps = &.{"xs3"},
2461 },
2462 },
2463 .model_overrides = &.{
2464 .{
2465 .llvm_name = "generic",
2466 .omit = true,
2467 },
2468 .{
2469 .llvm_name = "xs1b-generic",
2470 .omit = true,
2471 },
2472 },
2473 .extra_models = &.{
2474 .{
2475 .llvm_name = null,
2476 .zig_name = "xs1b",
2477 .features = &.{},
2478 },
2479 .{
2480 .llvm_name = null,
2481 .zig_name = "xs2a",
2482 .features = &.{"xs2"},
2483 },
2484 .{
2485 .llvm_name = null,
2486 .zig_name = "xs3a",
2487 .features = &.{ "fpu", "vpu" },
2488 },
2489 },
19812490 },
19822491 .{
19832492 .zig_name = "xtensa",
......@@ -2073,7 +2582,7 @@ fn processOneTargetInner(io: Io, job: Job) !void {
20732582
20742583 var features_table = std.StringHashMap(Feature).init(arena);
20752584 var all_features = std.array_list.Managed(Feature).init(arena);
2076 var all_cpus = std.array_list.Managed(Cpu).init(arena);
2585 var all_models = std.array_list.Managed(Model).init(arena);
20772586
20782587 if (target.llvm) |llvm| {
20792588 const tblgen_progress = progress_node.start("running llvm-tblgen", 0);
......@@ -2133,7 +2642,7 @@ fn processOneTargetInner(io: Io, job: Job) !void {
21332642 llvm: []const u8,
21342643 zig: []const u8,
21352644 };
2136 var cpu_aliases = std.StringHashMap(std.ArrayList(*Alias)).init(arena);
2645 var model_aliases = std.StringHashMap(std.ArrayList(*Alias)).init(arena);
21372646
21382647 {
21392648 var it = root_map.iterator();
......@@ -2147,7 +2656,7 @@ fn processOneTargetInner(io: Io, job: Job) !void {
21472656 const llvm_alias = kv.value_ptr.object.get("Name").?.string;
21482657 const llvm_name = kv.value_ptr.object.get("Alias").?.string;
21492658
2150 const gop = try cpu_aliases.getOrPut(try llvmNameToZigName(arena, llvm_name));
2659 const gop = try model_aliases.getOrPut(try llvmNameToZigName(arena, llvm_name));
21512660
21522661 if (!gop.found_existing) {
21532662 gop.value_ptr.* = .empty;
......@@ -2253,28 +2762,25 @@ fn processOneTargetInner(io: Io, job: Job) !void {
22532762 if (hasSuperclass(&kv.value_ptr.object, "Processor")) {
22542763 const llvm_name = kv.value_ptr.object.get("Name").?.string;
22552764 if (llvm_name.len == 0) continue;
2256 const omitted = for (target.omit_cpus) |omit_cpu_name| {
2257 if (mem.eql(u8, omit_cpu_name, llvm_name)) break true;
2258 } else false;
2259 if (omitted) continue;
22602765
22612766 var zig_name = try llvmNameToZigName(arena, llvm_name);
22622767 var deps = std.array_list.Managed([]const u8).init(arena);
22632768 var omit_deps: []const []const u8 = &.{};
22642769 var extra_deps: []const []const u8 = &.{};
2265 for (target.feature_overrides) |feature_override| {
2266 if (mem.eql(u8, llvm_name, feature_override.llvm_name)) {
2267 if (feature_override.omit) {
2268 continue;
2770 const omitted = for (target.model_overrides) |model_override| {
2771 if (mem.eql(u8, llvm_name, model_override.llvm_name)) {
2772 if (model_override.omit) {
2773 break true;
22692774 }
2270 if (feature_override.zig_name) |override_name| {
2775 if (model_override.zig_name) |override_name| {
22712776 zig_name = override_name;
22722777 }
2273 omit_deps = feature_override.omit_deps;
2274 extra_deps = feature_override.extra_deps;
2275 break;
2778 omit_deps = model_override.omit_deps;
2779 extra_deps = model_override.extra_deps;
2780 break false;
22762781 }
2277 }
2782 } else false;
2783 if (omitted) continue;
22782784 const features = kv.value_ptr.object.get("Features").?.array;
22792785 for (features.items) |feature| {
22802786 const feature_key = feature.object.get("def").?.string;
......@@ -2308,19 +2814,19 @@ fn processOneTargetInner(io: Io, job: Job) !void {
23082814 )) orelse continue;
23092815 try deps.append(feature_zig_name);
23102816 }
2311 try all_cpus.append(.{
2817 try all_models.append(.{
23122818 .llvm_name = llvm_name,
23132819 .zig_name = zig_name,
23142820 .features = deps.items,
23152821 });
23162822
2317 if (cpu_aliases.get(zig_name)) |aliases| {
2823 if (model_aliases.get(zig_name)) |aliases| {
23182824 alias_it: for (aliases.items) |alias| {
2319 for (target.omit_cpus) |omit_cpu_name| {
2320 if (mem.eql(u8, omit_cpu_name, alias.llvm)) continue :alias_it;
2825 for (target.model_overrides) |model_override| {
2826 if (mem.eql(u8, alias.llvm, model_override.llvm_name) and model_override.omit) continue :alias_it;
23212827 }
23222828
2323 try all_cpus.append(.{
2829 try all_models.append(.{
23242830 .llvm_name = alias.llvm,
23252831 .zig_name = alias.zig,
23262832 .features = deps.items,
......@@ -2338,11 +2844,11 @@ fn processOneTargetInner(io: Io, job: Job) !void {
23382844 try features_table.put(extra_feature.zig_name, extra_feature);
23392845 try all_features.append(extra_feature);
23402846 }
2341 for (target.extra_cpus) |extra_cpu| {
2342 try all_cpus.append(extra_cpu);
2847 for (target.extra_models) |extra_model| {
2848 try all_models.append(extra_model);
23432849 }
23442850 mem.sort(Feature, all_features.items, {}, featureLessThan);
2345 mem.sort(Cpu, all_cpus.items, {}, cpuLessThan);
2851 mem.sort(Model, all_models.items, {}, modelLessThan);
23462852
23472853 const render_progress = progress_node.start("rendering Zig code", 0);
23482854
......@@ -2465,29 +2971,29 @@ fn processOneTargetInner(io: Io, job: Job) !void {
24652971 \\pub const cpu = struct {
24662972 \\
24672973 );
2468 for (all_cpus.items) |cpu| {
2974 for (all_models.items) |model| {
24692975 var deps_set = std.StringHashMap(void).init(arena);
2470 for (cpu.features) |feature_zig_name| {
2976 for (model.features) |feature_zig_name| {
24712977 try putDep(&deps_set, features_table, feature_zig_name);
24722978 }
24732979 try pruneFeatures(arena, features_table, &deps_set);
2474 var cpu_features = std.array_list.Managed([]const u8).init(arena);
2980 var model_features = std.array_list.Managed([]const u8).init(arena);
24752981 {
24762982 var it = deps_set.keyIterator();
24772983 while (it.next()) |key| {
2478 try cpu_features.append(key.*);
2984 try model_features.append(key.*);
24792985 }
24802986 }
2481 mem.sort([]const u8, cpu_features.items, {}, asciiLessThan);
2482 if (cpu.llvm_name) |llvm_name| {
2987 mem.sort([]const u8, model_features.items, {}, asciiLessThan);
2988 if (model.llvm_name) |llvm_name| {
24832989 try w.print(
24842990 \\ pub const {f}: CpuModel = .{{
24852991 \\ .name = "{f}",
24862992 \\ .llvm_name = "{f}",
24872993 \\ .features = featureSet(&[_]Feature{{
24882994 , .{
2489 std.zig.fmtId(cpu.zig_name),
2490 std.zig.fmtString(cpu.zig_name),
2995 std.zig.fmtId(model.zig_name),
2996 std.zig.fmtString(model.zig_name),
24912997 std.zig.fmtString(llvm_name),
24922998 });
24932999 } else {
......@@ -2497,11 +3003,11 @@ fn processOneTargetInner(io: Io, job: Job) !void {
24973003 \\ .llvm_name = null,
24983004 \\ .features = featureSet(&[_]Feature{{
24993005 , .{
2500 std.zig.fmtId(cpu.zig_name),
2501 std.zig.fmtString(cpu.zig_name),
3006 std.zig.fmtId(model.zig_name),
3007 std.zig.fmtString(model.zig_name),
25023008 });
25033009 }
2504 if (cpu_features.items.len == 0) {
3010 if (model_features.items.len == 0) {
25053011 try w.writeAll(
25063012 \\}),
25073013 \\ };
......@@ -2509,7 +3015,7 @@ fn processOneTargetInner(io: Io, job: Job) !void {
25093015 );
25103016 } else {
25113017 try w.writeAll("\n");
2512 for (cpu_features.items) |feature_zig_name| {
3018 for (model_features.items) |feature_zig_name| {
25133019 try w.print(" .{f},\n", .{std.zig.fmtIdPU(feature_zig_name)});
25143020 }
25153021 try w.writeAll(
......@@ -2547,7 +3053,7 @@ fn featureLessThan(_: void, a: Feature, b: Feature) bool {
25473053 return std.ascii.lessThanIgnoreCase(a.zig_name, b.zig_name);
25483054}
25493055
2550fn cpuLessThan(_: void, a: Cpu, b: Cpu) bool {
3056fn modelLessThan(_: void, a: Model, b: Model) bool {
25513057 return std.ascii.lessThanIgnoreCase(a.zig_name, b.zig_name);
25523058}
25533059