aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/std/builtin.zig4
-rw-r--r--lib/std/target.zig29
2 files changed, 20 insertions, 13 deletions
diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig
index b5c137c2e1..17918f3f73 100644
--- a/lib/std/builtin.zig
+++ b/lib/std/builtin.zig
@@ -18,8 +18,8 @@ pub const ObjectFormat = std.Target.ObjectFormat;
/// Deprecated: use `std.Target.SubSystem`.
pub const SubSystem = std.Target.SubSystem;
-/// Deprecated: use `std.Target.Cross.CpuFeatures`.
-pub const CpuFeatures = std.Target.Cross.CpuFeatures;
+/// Deprecated: use `std.Target.CpuFeatures`.
+pub const CpuFeatures = std.Target.CpuFeatures;
/// Deprecated: use `std.Target.Cpu`.
pub const Cpu = std.Target.Cpu;
diff --git a/lib/std/target.zig b/lib/std/target.zig
index 8d809b1ce8..d49d395dda 100644
--- a/lib/std/target.zig
+++ b/lib/std/target.zig
@@ -569,18 +569,18 @@ pub const Target = union(enum) {
os: Os,
abi: Abi,
cpu_features: CpuFeatures = .baseline,
+ };
- pub const CpuFeatures = union(enum) {
- /// The "default" set of CPU features for cross-compiling. A conservative set
- /// of features that is expected to be supported on most available hardware.
- baseline,
+ pub const CpuFeatures = union(enum) {
+ /// The "default" set of CPU features for cross-compiling. A conservative set
+ /// of features that is expected to be supported on most available hardware.
+ baseline,
- /// Target one specific CPU.
- cpu: *const Cpu,
+ /// Target one specific CPU.
+ cpu: *const Cpu,
- /// Explicitly provide the entire CPU feature set.
- features: Cpu.Feature.Set,
- };
+ /// Explicitly provide the entire CPU feature set.
+ features: Cpu.Feature.Set,
};
pub const current = Target{
@@ -594,8 +594,15 @@ pub const Target = union(enum) {
pub const stack_align = 16;
- pub fn cpuFeatures(self: Target) []const *const Cpu.Feature {
- return switch (self.cpu_features) {
+ pub fn getCpuFeatures(self: Target) CpuFeatures {
+ return switch (self) {
+ .Native => builtin.cpu_features,
+ .Cross => |cross| cross.cpu_features,
+ };
+ }
+
+ pub fn cpuFeaturesList(self: Target) []const *const Cpu.Feature {
+ return switch (self.getCpuFeatures()) {
.baseline => self.arch.baselineFeatures(),
.cpu => |cpu| cpu.features,
.features => |features| features,