diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-02-18 05:25:36 +0100 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2025-06-05 06:12:00 +0200 |
| commit | 9d534790ebc869ec933e932abe4be8b9e3593bbc (patch) | |
| tree | 70652dde381fd0c0d536d8e7665e725e0924bb51 /lib/std/Target | |
| parent | 14873f9a3434a0d753ca8438f389a7931956cf26 (diff) | |
| download | zig-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.zig | 20 | ||||
| -rw-r--r-- | lib/std/Target/generic.zig | 20 |
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(&.{}), + }; +}; |
