From edad096b772d58bc39d227b0ba4d13b641ca99e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 17 Sep 2026 07:43:43 +0200 Subject: [PATCH] std.zig.system: remove some pointless parameters being passed around --- lib/std/zig/system.zig | 10 +++++----- lib/std/zig/system/loongarch.zig | 9 +-------- lib/std/zig/system/x86.zig | 11 +++++------ 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index eab97ae8de5e2175c5acdeab1824da5b0eab79ae..6ab26aab14edb82113a7b9cd8f165e5a23df3cfb 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -374,10 +374,10 @@ pub fn resolveTargetQuery(io: Io, query: Target.Query) DetectError!Target { } var cpu = switch (query.cpu_model) { - .native => detectNativeCpuAndFeatures(io, query_cpu_arch, os, query), + .native => detectNativeCpuAndFeatures(io, query_cpu_arch), .baseline => Target.Cpu.baseline(query_cpu_arch, os), .determined_by_arch_os => if (query.cpu_arch == null) - detectNativeCpuAndFeatures(io, query_cpu_arch, os, query) + detectNativeCpuAndFeatures(io, query_cpu_arch) else Target.Cpu.baseline(query_cpu_arch, os), .explicit => |model| model.toCpu(query_cpu_arch), @@ -535,13 +535,13 @@ fn updateCpuFeatures( set.removeFeatureSet(sub_set); } -fn detectNativeCpuAndFeatures(io: Io, cpu_arch: Target.Cpu.Arch, os: Target.Os, query: Target.Query) ?Target.Cpu { +fn detectNativeCpuAndFeatures(io: Io, cpu_arch: Target.Cpu.Arch) ?Target.Cpu { // Here we switch on a comptime value rather than `cpu_arch`. This is valid because `cpu_arch`, // although it is a runtime value, is guaranteed to be one of the architectures in the set // of the respective switch prong. switch (builtin.cpu.arch) { - .loongarch32, .loongarch64 => return @import("system/loongarch.zig").detectNativeCpuAndFeatures(cpu_arch, os, query), - .x86_64, .x86 => return @import("system/x86.zig").detectNativeCpuAndFeatures(cpu_arch, os, query), + .loongarch32, .loongarch64 => return @import("system/loongarch.zig").detectNativeCpuAndFeatures(cpu_arch), + .x86_64, .x86 => return @import("system/x86.zig").detectNativeCpuAndFeatures(cpu_arch), else => {}, } diff --git a/lib/std/zig/system/loongarch.zig b/lib/std/zig/system/loongarch.zig index da0d6fecb2807b7fa8b01afcb9ad74ab4f029a2c..04a628e4e6cb73f0b196935d0b1e1184adde7dd0 100644 --- a/lib/std/zig/system/loongarch.zig +++ b/lib/std/zig/system/loongarch.zig @@ -18,14 +18,7 @@ fn setFeature(cpu: *std.Target.Cpu, feature: std.Target.loongarch.Feature, enabl if (enabled) cpu.features.addFeature(idx) else cpu.features.removeFeature(idx); } -pub fn detectNativeCpuAndFeatures( - arch: std.Target.Cpu.Arch, - os: std.Target.Os, - query: std.Target.Query, -) ?std.Target.Cpu { - _ = os; - _ = query; - +pub fn detectNativeCpuAndFeatures(arch: std.Target.Cpu.Arch) ?std.Target.Cpu { const variant: Variant = @fromBackingInt(@intCast(cpucfg(1) & 0b11)); var cpu: std.Target.Cpu = .{ diff --git a/lib/std/zig/system/x86.zig b/lib/std/zig/system/x86.zig index 23687255a5be522c3c0f5bb7579df484e7e45277..0b535c7e810b149d4614c6035f835e2ac15aa710 100644 --- a/lib/std/zig/system/x86.zig +++ b/lib/std/zig/system/x86.zig @@ -41,8 +41,7 @@ inline fn hasMask(input: u32, mask: u32) bool { return (input & mask) == mask; } -pub fn detectNativeCpuAndFeatures(arch: Target.Cpu.Arch, os: Target.Os, query: Target.Query) Target.Cpu { - _ = query; +pub fn detectNativeCpuAndFeatures(arch: Target.Cpu.Arch) Target.Cpu { var cpu = Target.Cpu{ .arch = arch, .model = Target.Cpu.Model.generic(arch), @@ -50,7 +49,7 @@ pub fn detectNativeCpuAndFeatures(arch: Target.Cpu.Arch, os: Target.Os, query: T }; // First we detect features, to use as hints when detecting CPU Model. - detectNativeFeatures(&cpu, os.tag); + detectNativeFeatures(&cpu); var leaf = cpuid(0, 0); const max_leaf = leaf.eax; @@ -90,7 +89,7 @@ pub fn detectNativeCpuAndFeatures(arch: Target.Cpu.Arch, os: Target.Os, query: T // Add the CPU model's feature set into the working set, but then // override with actual detected features again. cpu.features.addFeatureSet(cpu.model.features); - detectNativeFeatures(&cpu, os.tag); + detectNativeFeatures(&cpu); cpu.features.populateDependencies(cpu.arch.allFeaturesList()); @@ -215,7 +214,7 @@ fn detectAmdProcessor(cpu: *const Target.Cpu, family: u32, model: u32) ?*const T }; } -fn detectNativeFeatures(cpu: *Target.Cpu, os_tag: Target.Os.Tag) void { +fn detectNativeFeatures(cpu: *Target.Cpu) void { var leaf = cpuid(0, 0); const max_level = leaf.eax; @@ -268,7 +267,7 @@ fn detectNativeFeatures(cpu: *Target.Cpu, os_tag: Target.Os.Tag) void { // Darwin lazily saves the AVX512 context on first use: trust that the OS will // save the AVX512 context if we use AVX512 instructions, even if the bit is not // set right now. - const has_avx512_save = if (os_tag.isDarwin()) + const has_avx512_save = if (builtin.target.os.tag.isDarwin()) true else xcr0.zmm_hi256 and xcr0.hi16_zmm; -- 2.54.0