aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Target
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2025-02-18 05:25:36 +0100
committerAlex Rønne Petersen <alex@alexrp.com>2025-06-05 06:12:00 +0200
commit9d534790ebc869ec933e932abe4be8b9e3593bbc (patch)
tree70652dde381fd0c0d536d8e7665e725e0924bb51 /lib/std/Target
parent14873f9a3434a0d753ca8438f389a7931956cf26 (diff)
downloadzig-9d534790ebc869ec933e932abe4be8b9e3593bbc.tar.gz
zig-9d534790ebc869ec933e932abe4be8b9e3593bbc.zip
std.Target: Introduce Cpu convenience functions for feature tests.
Before: * std.Target.arm.featureSetHas(target.cpu.features, .has_v7) * std.Target.x86.featureSetHasAny(target.cpu.features, .{ .sse, .avx, .cmov }) * std.Target.wasm.featureSetHasAll(target.cpu.features, .{ .atomics, .bulk_memory }) After: * target.cpu.has(.arm, .has_v7) * target.cpu.hasAny(.x86, &.{ .sse, .avx, .cmov }) * target.cpu.hasAll(.wasm, &.{ .atomics, .bulk_memory })
Diffstat (limited to 'lib/std/Target')
-rw-r--r--lib/std/Target/Query.zig20
-rw-r--r--lib/std/Target/generic.zig20
2 files changed, 30 insertions, 10 deletions
diff --git a/lib/std/Target/Query.zig b/lib/std/Target/Query.zig
index cf53a8175b..478c4758f9 100644
--- a/lib/std/Target/Query.zig
+++ b/lib/std/Target/Query.zig
@@ -653,16 +653,16 @@ test parse {
try std.testing.expect(target.os.tag == .linux);
try std.testing.expect(target.abi == .gnu);
try std.testing.expect(target.cpu.arch == .x86_64);
- try std.testing.expect(!Target.x86.featureSetHas(target.cpu.features, .sse));
- try std.testing.expect(!Target.x86.featureSetHas(target.cpu.features, .avx));
- try std.testing.expect(!Target.x86.featureSetHas(target.cpu.features, .cx8));
- try std.testing.expect(Target.x86.featureSetHas(target.cpu.features, .cmov));
- try std.testing.expect(Target.x86.featureSetHas(target.cpu.features, .fxsr));
+ try std.testing.expect(!target.cpu.has(.x86, .sse));
+ try std.testing.expect(!target.cpu.has(.x86, .avx));
+ try std.testing.expect(!target.cpu.has(.x86, .cx8));
+ try std.testing.expect(target.cpu.has(.x86, .cmov));
+ try std.testing.expect(target.cpu.has(.x86, .fxsr));
- try std.testing.expect(Target.x86.featureSetHasAny(target.cpu.features, .{ .sse, .avx, .cmov }));
- try std.testing.expect(!Target.x86.featureSetHasAny(target.cpu.features, .{ .sse, .avx }));
- try std.testing.expect(Target.x86.featureSetHasAll(target.cpu.features, .{ .mmx, .x87 }));
- try std.testing.expect(!Target.x86.featureSetHasAll(target.cpu.features, .{ .mmx, .x87, .sse }));
+ try std.testing.expect(target.cpu.hasAny(.x86, &.{ .sse, .avx, .cmov }));
+ try std.testing.expect(!target.cpu.hasAny(.x86, &.{ .sse, .avx }));
+ try std.testing.expect(target.cpu.hasAll(.x86, &.{ .mmx, .x87 }));
+ try std.testing.expect(!target.cpu.hasAll(.x86, &.{ .mmx, .x87, .sse }));
const text = try query.zigTriple(std.testing.allocator);
defer std.testing.allocator.free(text);
@@ -679,7 +679,7 @@ test parse {
try std.testing.expect(target.abi == .musleabihf);
try std.testing.expect(target.cpu.arch == .arm);
try std.testing.expect(target.cpu.model == &Target.arm.cpu.generic);
- try std.testing.expect(Target.arm.featureSetHas(target.cpu.features, .v8a));
+ try std.testing.expect(target.cpu.has(.arm, .v8a));
const text = try query.zigTriple(std.testing.allocator);
defer std.testing.allocator.free(text);
diff --git a/lib/std/Target/generic.zig b/lib/std/Target/generic.zig
new file mode 100644
index 0000000000..13c229fc48
--- /dev/null
+++ b/lib/std/Target/generic.zig
@@ -0,0 +1,20 @@
+const std = @import("../std.zig");
+const CpuFeature = std.Target.Cpu.Feature;
+const CpuModel = std.Target.Cpu.Model;
+
+pub const Feature = enum {};
+
+pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
+pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
+pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
+pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
+
+pub const all_features: [0]CpuFeature = .{};
+
+pub const cpu = struct {
+ pub const generic: CpuModel = .{
+ .name = "generic",
+ .llvm_name = null,
+ .features = featureSet(&.{}),
+ };
+};