authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-01-21 01:34:26+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-04-25 21:54:48+02:00
log6880b5678a06969b9dbae603623f472d6f73a780
treec5a016bb7a740f87865c522b8047ecf90527444a
parenteb041a514ffcb3fef3fb4ea60f4d9a5ef3be8b46
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.zig.system.arm: add detection for a bunch more cores


1 files changed, 56 insertions(+), 2 deletions(-)

lib/std/zig/system/arm.zig+56-2
......@@ -21,7 +21,7 @@ pub const cpu_models = struct {
2121 };
2222
2323 // implementer = 0x41
24 const ARM = [_]E{
24 const Arm = [_]E{
2525 E{ .part = 0x926, .m32 = &A32.arm926ej_s },
2626 E{ .part = 0xb02, .m32 = &A32.mpcore },
2727 E{ .part = 0xb36, .m32 = &A32.arm1136j_s },
......@@ -88,8 +88,12 @@ pub const cpu_models = struct {
8888 E{ .part = 0xd87, .m64 = &A64.cortex_a725 },
8989 E{ .part = 0xd88, .m64 = &A64.cortex_a520ae },
9090 E{ .part = 0xd89, .m64 = &A64.cortex_a720ae },
91 E{ .part = 0xd8a, .m64 = &A64.c1_nano },
92 E{ .part = 0xd8b, .m64 = &A64.c1_pro },
93 E{ .part = 0xd8c, .m64 = &A64.c1_ultra },
9194 E{ .part = 0xd8e, .m64 = &A64.neoverse_n3 },
9295 E{ .part = 0xd8f, .m64 = &A64.cortex_a320 },
96 E{ .part = 0xd90, .m64 = &A64.c1_premium },
9397 };
9498 // implementer = 0x42
9599 const Broadcom = [_]E{
......@@ -102,10 +106,17 @@ pub const cpu_models = struct {
102106 E{ .part = 0x0a3, .m64 = &A64.thunderxt83 },
103107 E{ .part = 0x0a1, .m64 = &A64.thunderxt88 },
104108 E{ .part = 0x0af, .m64 = &A64.thunderx2t99 },
109 E{ .part = 0x0b0, .m64 = &A64.cortex_a57 },
110 E{ .part = 0x0b1, .m64 = &A64.cortex_a57 },
111 E{ .part = 0x0b2, .m64 = &A64.cortex_a57 },
112 E{ .part = 0x0b3, .m64 = &A64.cortex_a57 },
113 E{ .part = 0x0b4, .m64 = &A64.cortex_a57 },
114 E{ .part = 0x0b5, .m64 = &A64.cortex_a57 },
105115 };
106116 // implementer = 0x46
107117 const Fujitsu = [_]E{
108118 E{ .part = 0x001, .m64 = &A64.a64fx },
119 E{ .part = 0x003, .m64 = &A64.fujitsu_monaka },
109120 };
110121 // implementer = 0x48
111122 const HiSilicon = [_]E{
......@@ -137,8 +148,14 @@ pub const cpu_models = struct {
137148 E{ .part = 0xc00, .m64 = &A64.falkor },
138149 E{ .part = 0xc01, .m64 = &A64.saphira },
139150 };
151 // implementer = 0x53
152 const Samsung = [_]E{
153 E{ .part = 0x000, .m64 = &A64.exynos_m1 },
154 };
140155 // implementer = 0x61
141156 const Apple = [_]E{
157 E{ .part = 0x020, .m64 = &A64.apple_m1 },
158 E{ .part = 0x021, .m64 = &A64.apple_m1 },
142159 E{ .part = 0x022, .m64 = &A64.apple_m1 },
143160 E{ .part = 0x023, .m64 = &A64.apple_m1 },
144161 E{ .part = 0x024, .m64 = &A64.apple_m1 },
......@@ -151,11 +168,43 @@ pub const cpu_models = struct {
151168 E{ .part = 0x035, .m64 = &A64.apple_m2 },
152169 E{ .part = 0x038, .m64 = &A64.apple_m2 },
153170 E{ .part = 0x039, .m64 = &A64.apple_m2 },
171 E{ .part = 0x042, .m64 = &A64.apple_m3 },
172 E{ .part = 0x043, .m64 = &A64.apple_m3 },
173 E{ .part = 0x044, .m64 = &A64.apple_m3 },
174 E{ .part = 0x045, .m64 = &A64.apple_m3 },
175 E{ .part = 0x048, .m64 = &A64.apple_m3 },
176 E{ .part = 0x049, .m64 = &A64.apple_m3 },
177 E{ .part = 0x052, .m64 = &A64.apple_m4 },
178 E{ .part = 0x053, .m64 = &A64.apple_m4 },
179 E{ .part = 0x054, .m64 = &A64.apple_m4 },
180 E{ .part = 0x055, .m64 = &A64.apple_m4 },
181 E{ .part = 0x058, .m64 = &A64.apple_m4 },
182 E{ .part = 0x059, .m64 = &A64.apple_m4 },
183 };
184 // implementer = 0x63
185 const ArmChina = [_]E{
186 E{ .part = 0x132, .m32 = &A32.star_mc1 },
187 E{ .part = 0xd25, .m32 = &A32.star_mc3 },
188 };
189 // implementer = 0x68
190 const Hxt = [_]E{
191 E{ .part = 0x000, .m64 = &A64.cortex_a57 },
192 };
193 // implementer = 0x6d
194 const Microsoft = [_]E{
195 E{ .part = 0xd49, .m64 = &A64.neoverse_n2 },
196 };
197 // implementer = 0xC0
198 const AmpereOne = [_]E{
199 E{ .part = 0xac3, .m64 = &A64.ampere1 },
200 E{ .part = 0xac4, .m64 = &A64.ampere1a },
201 E{ .part = 0xac5, .m64 = &A64.ampere1b },
202 E{ .part = 0xac7, .m64 = &A64.ampere1c },
154203 };
155204
156205 pub fn isKnown(core: CoreInfo, is_64bit: bool) ?*const Target.Cpu.Model {
157206 const models = switch (core.implementer) {
158 0x41 => &ARM,
207 0x41 => &Arm,
159208 0x42 => &Broadcom,
160209 0x43 => &Cavium,
161210 0x46 => &Fujitsu,
......@@ -163,7 +212,12 @@ pub const cpu_models = struct {
163212 0x4e => &Nvidia,
164213 0x50 => &Ampere,
165214 0x51 => &Qualcomm,
215 0x53 => &Samsung,
166216 0x61 => &Apple,
217 0x63 => &ArmChina,
218 0x68 => &Hxt,
219 0x6d => &Microsoft,
220 0xC0 => &AmpereOne,
167221 else => return null,
168222 };
169223