Commit 9907116478

Vexu <git@vexu.eu>
2020-07-11 19:11:20
use typeInfo instead of hardcoded tables in std.Target
1 parent 2e6688a
lib/std/target/aarch64.zig
@@ -1505,48 +1505,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All aarch64 CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.apple_a10,
-    &cpu.apple_a11,
-    &cpu.apple_a12,
-    &cpu.apple_a13,
-    &cpu.apple_a7,
-    &cpu.apple_a8,
-    &cpu.apple_a9,
-    &cpu.apple_latest,
-    &cpu.apple_s4,
-    &cpu.apple_s5,
-    &cpu.cortex_a35,
-    &cpu.cortex_a53,
-    &cpu.cortex_a55,
-    &cpu.cortex_a57,
-    &cpu.cortex_a65,
-    &cpu.cortex_a65ae,
-    &cpu.cortex_a72,
-    &cpu.cortex_a73,
-    &cpu.cortex_a75,
-    &cpu.cortex_a76,
-    &cpu.cortex_a76ae,
-    &cpu.cyclone,
-    &cpu.exynos_m1,
-    &cpu.exynos_m2,
-    &cpu.exynos_m3,
-    &cpu.exynos_m4,
-    &cpu.exynos_m5,
-    &cpu.falkor,
-    &cpu.generic,
-    &cpu.kryo,
-    &cpu.neoverse_e1,
-    &cpu.neoverse_n1,
-    &cpu.saphira,
-    &cpu.thunderx,
-    &cpu.thunderx2t99,
-    &cpu.thunderxt81,
-    &cpu.thunderxt83,
-    &cpu.thunderxt88,
-    &cpu.tsv110,
-};
lib/std/target/amdgpu.zig
@@ -1276,48 +1276,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All amdgpu CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.bonaire,
-    &cpu.carrizo,
-    &cpu.fiji,
-    &cpu.generic,
-    &cpu.generic_hsa,
-    &cpu.gfx1010,
-    &cpu.gfx1011,
-    &cpu.gfx1012,
-    &cpu.gfx600,
-    &cpu.gfx601,
-    &cpu.gfx700,
-    &cpu.gfx701,
-    &cpu.gfx702,
-    &cpu.gfx703,
-    &cpu.gfx704,
-    &cpu.gfx801,
-    &cpu.gfx802,
-    &cpu.gfx803,
-    &cpu.gfx810,
-    &cpu.gfx900,
-    &cpu.gfx902,
-    &cpu.gfx904,
-    &cpu.gfx906,
-    &cpu.gfx908,
-    &cpu.gfx909,
-    &cpu.hainan,
-    &cpu.hawaii,
-    &cpu.iceland,
-    &cpu.kabini,
-    &cpu.kaveri,
-    &cpu.mullins,
-    &cpu.oland,
-    &cpu.pitcairn,
-    &cpu.polaris10,
-    &cpu.polaris11,
-    &cpu.stoney,
-    &cpu.tahiti,
-    &cpu.tonga,
-    &cpu.verde,
-};
lib/std/target/arm.zig
@@ -2145,92 +2145,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All arm CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.arm1020e,
-    &cpu.arm1020t,
-    &cpu.arm1022e,
-    &cpu.arm10e,
-    &cpu.arm10tdmi,
-    &cpu.arm1136j_s,
-    &cpu.arm1136jf_s,
-    &cpu.arm1156t2_s,
-    &cpu.arm1156t2f_s,
-    &cpu.arm1176j_s,
-    &cpu.arm1176jz_s,
-    &cpu.arm1176jzf_s,
-    &cpu.arm710t,
-    &cpu.arm720t,
-    &cpu.arm7tdmi,
-    &cpu.arm7tdmi_s,
-    &cpu.arm8,
-    &cpu.arm810,
-    &cpu.arm9,
-    &cpu.arm920,
-    &cpu.arm920t,
-    &cpu.arm922t,
-    &cpu.arm926ej_s,
-    &cpu.arm940t,
-    &cpu.arm946e_s,
-    &cpu.arm966e_s,
-    &cpu.arm968e_s,
-    &cpu.arm9e,
-    &cpu.arm9tdmi,
-    &cpu.cortex_a12,
-    &cpu.cortex_a15,
-    &cpu.cortex_a17,
-    &cpu.cortex_a32,
-    &cpu.cortex_a35,
-    &cpu.cortex_a5,
-    &cpu.cortex_a53,
-    &cpu.cortex_a55,
-    &cpu.cortex_a57,
-    &cpu.cortex_a7,
-    &cpu.cortex_a72,
-    &cpu.cortex_a73,
-    &cpu.cortex_a75,
-    &cpu.cortex_a76,
-    &cpu.cortex_a76ae,
-    &cpu.cortex_a8,
-    &cpu.cortex_a9,
-    &cpu.cortex_m0,
-    &cpu.cortex_m0plus,
-    &cpu.cortex_m1,
-    &cpu.cortex_m23,
-    &cpu.cortex_m3,
-    &cpu.cortex_m33,
-    &cpu.cortex_m35p,
-    &cpu.cortex_m4,
-    &cpu.cortex_m7,
-    &cpu.cortex_r4,
-    &cpu.cortex_r4f,
-    &cpu.cortex_r5,
-    &cpu.cortex_r52,
-    &cpu.cortex_r7,
-    &cpu.cortex_r8,
-    &cpu.cyclone,
-    &cpu.ep9312,
-    &cpu.exynos_m1,
-    &cpu.exynos_m2,
-    &cpu.exynos_m3,
-    &cpu.exynos_m4,
-    &cpu.exynos_m5,
-    &cpu.generic,
-    &cpu.iwmmxt,
-    &cpu.krait,
-    &cpu.kryo,
-    &cpu.mpcore,
-    &cpu.mpcorenovfp,
-    &cpu.neoverse_n1,
-    &cpu.sc000,
-    &cpu.sc300,
-    &cpu.strongarm,
-    &cpu.strongarm110,
-    &cpu.strongarm1100,
-    &cpu.strongarm1110,
-    &cpu.swift,
-    &cpu.xscale,
-};
lib/std/target/avr.zig
@@ -2116,266 +2116,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All avr CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.at43usb320,
-    &cpu.at43usb355,
-    &cpu.at76c711,
-    &cpu.at86rf401,
-    &cpu.at90c8534,
-    &cpu.at90can128,
-    &cpu.at90can32,
-    &cpu.at90can64,
-    &cpu.at90pwm1,
-    &cpu.at90pwm161,
-    &cpu.at90pwm2,
-    &cpu.at90pwm216,
-    &cpu.at90pwm2b,
-    &cpu.at90pwm3,
-    &cpu.at90pwm316,
-    &cpu.at90pwm3b,
-    &cpu.at90pwm81,
-    &cpu.at90s1200,
-    &cpu.at90s2313,
-    &cpu.at90s2323,
-    &cpu.at90s2333,
-    &cpu.at90s2343,
-    &cpu.at90s4414,
-    &cpu.at90s4433,
-    &cpu.at90s4434,
-    &cpu.at90s8515,
-    &cpu.at90s8535,
-    &cpu.at90scr100,
-    &cpu.at90usb1286,
-    &cpu.at90usb1287,
-    &cpu.at90usb162,
-    &cpu.at90usb646,
-    &cpu.at90usb647,
-    &cpu.at90usb82,
-    &cpu.at94k,
-    &cpu.ata5272,
-    &cpu.ata5505,
-    &cpu.ata5790,
-    &cpu.ata5795,
-    &cpu.ata6285,
-    &cpu.ata6286,
-    &cpu.ata6289,
-    &cpu.atmega103,
-    &cpu.atmega128,
-    &cpu.atmega1280,
-    &cpu.atmega1281,
-    &cpu.atmega1284,
-    &cpu.atmega1284p,
-    &cpu.atmega1284rfr2,
-    &cpu.atmega128a,
-    &cpu.atmega128rfa1,
-    &cpu.atmega128rfr2,
-    &cpu.atmega16,
-    &cpu.atmega161,
-    &cpu.atmega162,
-    &cpu.atmega163,
-    &cpu.atmega164a,
-    &cpu.atmega164p,
-    &cpu.atmega164pa,
-    &cpu.atmega165,
-    &cpu.atmega165a,
-    &cpu.atmega165p,
-    &cpu.atmega165pa,
-    &cpu.atmega168,
-    &cpu.atmega168a,
-    &cpu.atmega168p,
-    &cpu.atmega168pa,
-    &cpu.atmega169,
-    &cpu.atmega169a,
-    &cpu.atmega169p,
-    &cpu.atmega169pa,
-    &cpu.atmega16a,
-    &cpu.atmega16hva,
-    &cpu.atmega16hva2,
-    &cpu.atmega16hvb,
-    &cpu.atmega16hvbrevb,
-    &cpu.atmega16m1,
-    &cpu.atmega16u2,
-    &cpu.atmega16u4,
-    &cpu.atmega2560,
-    &cpu.atmega2561,
-    &cpu.atmega2564rfr2,
-    &cpu.atmega256rfr2,
-    &cpu.atmega32,
-    &cpu.atmega323,
-    &cpu.atmega324a,
-    &cpu.atmega324p,
-    &cpu.atmega324pa,
-    &cpu.atmega325,
-    &cpu.atmega3250,
-    &cpu.atmega3250a,
-    &cpu.atmega3250p,
-    &cpu.atmega3250pa,
-    &cpu.atmega325a,
-    &cpu.atmega325p,
-    &cpu.atmega325pa,
-    &cpu.atmega328,
-    &cpu.atmega328p,
-    &cpu.atmega329,
-    &cpu.atmega3290,
-    &cpu.atmega3290a,
-    &cpu.atmega3290p,
-    &cpu.atmega3290pa,
-    &cpu.atmega329a,
-    &cpu.atmega329p,
-    &cpu.atmega329pa,
-    &cpu.atmega32a,
-    &cpu.atmega32c1,
-    &cpu.atmega32hvb,
-    &cpu.atmega32hvbrevb,
-    &cpu.atmega32m1,
-    &cpu.atmega32u2,
-    &cpu.atmega32u4,
-    &cpu.atmega32u6,
-    &cpu.atmega406,
-    &cpu.atmega48,
-    &cpu.atmega48a,
-    &cpu.atmega48p,
-    &cpu.atmega48pa,
-    &cpu.atmega64,
-    &cpu.atmega640,
-    &cpu.atmega644,
-    &cpu.atmega644a,
-    &cpu.atmega644p,
-    &cpu.atmega644pa,
-    &cpu.atmega644rfr2,
-    &cpu.atmega645,
-    &cpu.atmega6450,
-    &cpu.atmega6450a,
-    &cpu.atmega6450p,
-    &cpu.atmega645a,
-    &cpu.atmega645p,
-    &cpu.atmega649,
-    &cpu.atmega6490,
-    &cpu.atmega6490a,
-    &cpu.atmega6490p,
-    &cpu.atmega649a,
-    &cpu.atmega649p,
-    &cpu.atmega64a,
-    &cpu.atmega64c1,
-    &cpu.atmega64hve,
-    &cpu.atmega64m1,
-    &cpu.atmega64rfr2,
-    &cpu.atmega8,
-    &cpu.atmega8515,
-    &cpu.atmega8535,
-    &cpu.atmega88,
-    &cpu.atmega88a,
-    &cpu.atmega88p,
-    &cpu.atmega88pa,
-    &cpu.atmega8a,
-    &cpu.atmega8hva,
-    &cpu.atmega8u2,
-    &cpu.attiny10,
-    &cpu.attiny102,
-    &cpu.attiny104,
-    &cpu.attiny11,
-    &cpu.attiny12,
-    &cpu.attiny13,
-    &cpu.attiny13a,
-    &cpu.attiny15,
-    &cpu.attiny1634,
-    &cpu.attiny167,
-    &cpu.attiny20,
-    &cpu.attiny22,
-    &cpu.attiny2313,
-    &cpu.attiny2313a,
-    &cpu.attiny24,
-    &cpu.attiny24a,
-    &cpu.attiny25,
-    &cpu.attiny26,
-    &cpu.attiny261,
-    &cpu.attiny261a,
-    &cpu.attiny28,
-    &cpu.attiny4,
-    &cpu.attiny40,
-    &cpu.attiny4313,
-    &cpu.attiny43u,
-    &cpu.attiny44,
-    &cpu.attiny44a,
-    &cpu.attiny45,
-    &cpu.attiny461,
-    &cpu.attiny461a,
-    &cpu.attiny48,
-    &cpu.attiny5,
-    &cpu.attiny828,
-    &cpu.attiny84,
-    &cpu.attiny84a,
-    &cpu.attiny85,
-    &cpu.attiny861,
-    &cpu.attiny861a,
-    &cpu.attiny87,
-    &cpu.attiny88,
-    &cpu.attiny9,
-    &cpu.atxmega128a1,
-    &cpu.atxmega128a1u,
-    &cpu.atxmega128a3,
-    &cpu.atxmega128a3u,
-    &cpu.atxmega128a4u,
-    &cpu.atxmega128b1,
-    &cpu.atxmega128b3,
-    &cpu.atxmega128c3,
-    &cpu.atxmega128d3,
-    &cpu.atxmega128d4,
-    &cpu.atxmega16a4,
-    &cpu.atxmega16a4u,
-    &cpu.atxmega16c4,
-    &cpu.atxmega16d4,
-    &cpu.atxmega16e5,
-    &cpu.atxmega192a3,
-    &cpu.atxmega192a3u,
-    &cpu.atxmega192c3,
-    &cpu.atxmega192d3,
-    &cpu.atxmega256a3,
-    &cpu.atxmega256a3b,
-    &cpu.atxmega256a3bu,
-    &cpu.atxmega256a3u,
-    &cpu.atxmega256c3,
-    &cpu.atxmega256d3,
-    &cpu.atxmega32a4,
-    &cpu.atxmega32a4u,
-    &cpu.atxmega32c4,
-    &cpu.atxmega32d4,
-    &cpu.atxmega32e5,
-    &cpu.atxmega32x1,
-    &cpu.atxmega384c3,
-    &cpu.atxmega384d3,
-    &cpu.atxmega64a1,
-    &cpu.atxmega64a1u,
-    &cpu.atxmega64a3,
-    &cpu.atxmega64a3u,
-    &cpu.atxmega64a4u,
-    &cpu.atxmega64b1,
-    &cpu.atxmega64b3,
-    &cpu.atxmega64c3,
-    &cpu.atxmega64d3,
-    &cpu.atxmega64d4,
-    &cpu.atxmega8e5,
-    &cpu.avr1,
-    &cpu.avr2,
-    &cpu.avr25,
-    &cpu.avr3,
-    &cpu.avr31,
-    &cpu.avr35,
-    &cpu.avr4,
-    &cpu.avr5,
-    &cpu.avr51,
-    &cpu.avr6,
-    &cpu.avrtiny,
-    &cpu.avrxmega1,
-    &cpu.avrxmega2,
-    &cpu.avrxmega3,
-    &cpu.avrxmega4,
-    &cpu.avrxmega5,
-    &cpu.avrxmega6,
-    &cpu.avrxmega7,
-    &cpu.m3000,
-};
lib/std/target/bpf.zig
@@ -64,14 +64,3 @@ pub const cpu = struct {
         .features = featureSet(&[_]Feature{}),
     };
 };
-
-/// All bpf CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.generic,
-    &cpu.probe,
-    &cpu.v1,
-    &cpu.v2,
-    &cpu.v3,
-};
lib/std/target/hexagon.zig
@@ -298,16 +298,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All hexagon CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.generic,
-    &cpu.hexagonv5,
-    &cpu.hexagonv55,
-    &cpu.hexagonv60,
-    &cpu.hexagonv62,
-    &cpu.hexagonv65,
-    &cpu.hexagonv66,
-};
lib/std/target/mips.zig
@@ -524,28 +524,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All mips CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.generic,
-    &cpu.mips1,
-    &cpu.mips2,
-    &cpu.mips3,
-    &cpu.mips32,
-    &cpu.mips32r2,
-    &cpu.mips32r3,
-    &cpu.mips32r5,
-    &cpu.mips32r6,
-    &cpu.mips4,
-    &cpu.mips5,
-    &cpu.mips64,
-    &cpu.mips64r2,
-    &cpu.mips64r3,
-    &cpu.mips64r5,
-    &cpu.mips64r6,
-    &cpu.octeon,
-    &cpu.@"octeon+",
-    &cpu.p5600,
-};
lib/std/target/msp430.zig
@@ -62,12 +62,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All msp430 CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.generic,
-    &cpu.msp430,
-    &cpu.msp430x,
-};
lib/std/target/nvptx.zig
@@ -287,24 +287,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All nvptx CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.sm_20,
-    &cpu.sm_21,
-    &cpu.sm_30,
-    &cpu.sm_32,
-    &cpu.sm_35,
-    &cpu.sm_37,
-    &cpu.sm_50,
-    &cpu.sm_52,
-    &cpu.sm_53,
-    &cpu.sm_60,
-    &cpu.sm_61,
-    &cpu.sm_62,
-    &cpu.sm_70,
-    &cpu.sm_72,
-    &cpu.sm_75,
-};
lib/std/target/powerpc.zig
@@ -944,47 +944,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All powerpc CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.@"440",
-    &cpu.@"450",
-    &cpu.@"601",
-    &cpu.@"602",
-    &cpu.@"603",
-    &cpu.@"603e",
-    &cpu.@"603ev",
-    &cpu.@"604",
-    &cpu.@"604e",
-    &cpu.@"620",
-    &cpu.@"7400",
-    &cpu.@"7450",
-    &cpu.@"750",
-    &cpu.@"970",
-    &cpu.a2,
-    &cpu.a2q,
-    &cpu.e500,
-    &cpu.e500mc,
-    &cpu.e5500,
-    &cpu.future,
-    &cpu.g3,
-    &cpu.g4,
-    &cpu.@"g4+",
-    &cpu.g5,
-    &cpu.generic,
-    &cpu.ppc,
-    &cpu.ppc32,
-    &cpu.ppc64,
-    &cpu.ppc64le,
-    &cpu.pwr3,
-    &cpu.pwr4,
-    &cpu.pwr5,
-    &cpu.pwr5x,
-    &cpu.pwr6,
-    &cpu.pwr6x,
-    &cpu.pwr7,
-    &cpu.pwr8,
-    &cpu.pwr9,
-};
lib/std/target/riscv.zig
@@ -303,13 +303,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All riscv CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.baseline_rv32,
-    &cpu.baseline_rv64,
-    &cpu.generic_rv32,
-    &cpu.generic_rv64,
-};
lib/std/target/sparc.zig
@@ -448,49 +448,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All sparc CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.at697e,
-    &cpu.at697f,
-    &cpu.f934,
-    &cpu.generic,
-    &cpu.gr712rc,
-    &cpu.gr740,
-    &cpu.hypersparc,
-    &cpu.leon2,
-    &cpu.leon3,
-    &cpu.leon4,
-    &cpu.ma2080,
-    &cpu.ma2085,
-    &cpu.ma2100,
-    &cpu.ma2150,
-    &cpu.ma2155,
-    &cpu.ma2450,
-    &cpu.ma2455,
-    &cpu.ma2480,
-    &cpu.ma2485,
-    &cpu.ma2x5x,
-    &cpu.ma2x8x,
-    &cpu.myriad2,
-    &cpu.myriad2_1,
-    &cpu.myriad2_2,
-    &cpu.myriad2_3,
-    &cpu.niagara,
-    &cpu.niagara2,
-    &cpu.niagara3,
-    &cpu.niagara4,
-    &cpu.sparclet,
-    &cpu.sparclite,
-    &cpu.sparclite86x,
-    &cpu.supersparc,
-    &cpu.tsc701,
-    &cpu.ultrasparc,
-    &cpu.ultrasparc3,
-    &cpu.ut699,
-    &cpu.v7,
-    &cpu.v8,
-    &cpu.v9,
-};
lib/std/target/systemz.zig
@@ -532,22 +532,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All systemz CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.arch10,
-    &cpu.arch11,
-    &cpu.arch12,
-    &cpu.arch13,
-    &cpu.arch8,
-    &cpu.arch9,
-    &cpu.generic,
-    &cpu.z10,
-    &cpu.z13,
-    &cpu.z14,
-    &cpu.z15,
-    &cpu.z196,
-    &cpu.zEC12,
-};
lib/std/target/wasm.zig
@@ -104,12 +104,3 @@ pub const cpu = struct {
         .features = featureSet(&[_]Feature{}),
     };
 };
-
-/// All wasm CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.bleeding_edge,
-    &cpu.generic,
-    &cpu.mvp,
-};
lib/std/target/x86.zig
@@ -2943,88 +2943,3 @@ pub const cpu = struct {
         }),
     };
 };
-
-/// All x86 CPUs, sorted alphabetically by name.
-/// TODO: Replace this with usage of `std.meta.declList`. It does work, but stage1
-/// compiler has inefficient memory and CPU usage, affecting build times.
-pub const all_cpus = &[_]*const CpuModel{
-    &cpu.amdfam10,
-    &cpu.athlon,
-    &cpu.athlon_4,
-    &cpu.athlon_fx,
-    &cpu.athlon_mp,
-    &cpu.athlon_tbird,
-    &cpu.athlon_xp,
-    &cpu.athlon64,
-    &cpu.athlon64_sse3,
-    &cpu.atom,
-    &cpu.barcelona,
-    &cpu.bdver1,
-    &cpu.bdver2,
-    &cpu.bdver3,
-    &cpu.bdver4,
-    &cpu.bonnell,
-    &cpu.broadwell,
-    &cpu.btver1,
-    &cpu.btver2,
-    &cpu.c3,
-    &cpu.c3_2,
-    &cpu.cannonlake,
-    &cpu.cascadelake,
-    &cpu.cooperlake,
-    &cpu.core_avx_i,
-    &cpu.core_avx2,
-    &cpu.core2,
-    &cpu.corei7,
-    &cpu.corei7_avx,
-    &cpu.generic,
-    &cpu.geode,
-    &cpu.goldmont,
-    &cpu.goldmont_plus,
-    &cpu.haswell,
-    &cpu._i386,
-    &cpu._i486,
-    &cpu._i586,
-    &cpu._i686,
-    &cpu.icelake_client,
-    &cpu.icelake_server,
-    &cpu.ivybridge,
-    &cpu.k6,
-    &cpu.k6_2,
-    &cpu.k6_3,
-    &cpu.k8,
-    &cpu.k8_sse3,
-    &cpu.knl,
-    &cpu.knm,
-    &cpu.lakemont,
-    &cpu.nehalem,
-    &cpu.nocona,
-    &cpu.opteron,
-    &cpu.opteron_sse3,
-    &cpu.penryn,
-    &cpu.pentium,
-    &cpu.pentium_m,
-    &cpu.pentium_mmx,
-    &cpu.pentium2,
-    &cpu.pentium3,
-    &cpu.pentium3m,
-    &cpu.pentium4,
-    &cpu.pentium4m,
-    &cpu.pentiumpro,
-    &cpu.prescott,
-    &cpu.sandybridge,
-    &cpu.silvermont,
-    &cpu.skx,
-    &cpu.skylake,
-    &cpu.skylake_avx512,
-    &cpu.slm,
-    &cpu.tigerlake,
-    &cpu.tremont,
-    &cpu.westmere,
-    &cpu.winchip_c6,
-    &cpu.winchip2,
-    &cpu.x86_64,
-    &cpu.yonah,
-    &cpu.znver1,
-    &cpu.znver2,
-};
lib/std/target.zig
@@ -903,25 +903,34 @@ pub const Target = struct {
             /// All processors Zig is aware of, sorted lexicographically by name.
             pub fn allCpuModels(arch: Arch) []const *const Cpu.Model {
                 return switch (arch) {
-                    .arm, .armeb, .thumb, .thumbeb => arm.all_cpus,
-                    .aarch64, .aarch64_be, .aarch64_32 => aarch64.all_cpus,
-                    .avr => avr.all_cpus,
-                    .bpfel, .bpfeb => bpf.all_cpus,
-                    .hexagon => hexagon.all_cpus,
-                    .mips, .mipsel, .mips64, .mips64el => mips.all_cpus,
-                    .msp430 => msp430.all_cpus,
-                    .powerpc, .powerpc64, .powerpc64le => powerpc.all_cpus,
-                    .amdgcn => amdgpu.all_cpus,
-                    .riscv32, .riscv64 => riscv.all_cpus,
-                    .sparc, .sparcv9, .sparcel => sparc.all_cpus,
-                    .s390x => systemz.all_cpus,
-                    .i386, .x86_64 => x86.all_cpus,
-                    .nvptx, .nvptx64 => nvptx.all_cpus,
-                    .wasm32, .wasm64 => wasm.all_cpus,
+                    .arm, .armeb, .thumb, .thumbeb => comptime allCpusFromDecls(arm.cpu),
+                    .aarch64, .aarch64_be, .aarch64_32 => comptime allCpusFromDecls(aarch64.cpu),
+                    .avr => comptime allCpusFromDecls(avr.cpu),
+                    .bpfel, .bpfeb => comptime allCpusFromDecls(bpf.cpu),
+                    .hexagon => comptime allCpusFromDecls(hexagon.cpu),
+                    .mips, .mipsel, .mips64, .mips64el => comptime allCpusFromDecls(mips.cpu),
+                    .msp430 => comptime allCpusFromDecls(msp430.cpu),
+                    .powerpc, .powerpc64, .powerpc64le => comptime allCpusFromDecls(powerpc.cpu),
+                    .amdgcn => comptime allCpusFromDecls(amdgpu.cpu),
+                    .riscv32, .riscv64 => comptime allCpusFromDecls(riscv.cpu),
+                    .sparc, .sparcv9, .sparcel => comptime allCpusFromDecls(sparc.cpu),
+                    .s390x => comptime allCpusFromDecls(systemz.cpu),
+                    .i386, .x86_64 => comptime allCpusFromDecls(x86.cpu),
+                    .nvptx, .nvptx64 => comptime allCpusFromDecls(nvptx.cpu),
+                    .wasm32, .wasm64 => comptime allCpusFromDecls(wasm.cpu),
 
                     else => &[0]*const Model{},
                 };
             }
+
+            fn allCpusFromDecls(comptime cpus: type) []const *const Cpu.Model {
+                const decls = std.meta.declarations(cpus);
+                var array: [decls.len]*const Cpu.Model = undefined;
+                for (decls) |decl, i| {
+                    array[i] = &@field(cpus, decl.name);
+                }
+                return &array;
+            }
         };
 
         pub const Model = struct {