update_cpu_feature: replace generic aarch64 model with architecture level models

And use armv8a as the generic model.

The old generic model was incoherent; it didn't even have v8a.
This commit is contained in:
Alex Rønne Petersen committed 2026-10-26 11:02:43 +01:00
1 parent f4fd2f30d0
commit 1e440e14ef
4 files changed
+235 -11

No files matched your search

+1
View File
@@ -2045,6 +2045,7 @@ pub const Cpu = struct {
/// Clang compatibility is important, consider using `baseline` instead.
pub fn generic(arch: Arch) *const Model {
return switch (arch) {
.aarch64, .aarch64_be => &aarch64.cpu.armv8a,
.alpha => &alpha.cpu.ev4,
.amdgcn => &amdgcn.cpu.gfx600,
.avr => &avr.cpu.avr1,
+1 -1
View File
@@ -669,7 +669,7 @@ test parse {
{
const query = try Query.parse(.{
.arch_os_abi = "aarch64-linux.3.10...4.4.1-gnu.2.27",
.cpu_features = "generic+v8a",
.cpu_features = "armv8a",
});
const target = try std.zig.system.resolveTargetQuery(io, query);
+133 -10
View File
@@ -2464,6 +2464,139 @@ pub const cpu = struct {
.v9_2a,
}),
};
pub const armv8_1a: CpuModel = .{
.name = "armv8_1a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8_1a,
}),
};
pub const armv8_2a: CpuModel = .{
.name = "armv8_2a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8_2a,
}),
};
pub const armv8_3a: CpuModel = .{
.name = "armv8_3a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8_3a,
}),
};
pub const armv8_4a: CpuModel = .{
.name = "armv8_4a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8_4a,
}),
};
pub const armv8_5a: CpuModel = .{
.name = "armv8_5a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8_5a,
}),
};
pub const armv8_6a: CpuModel = .{
.name = "armv8_6a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8_6a,
}),
};
pub const armv8_7a: CpuModel = .{
.name = "armv8_7a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8_7a,
}),
};
pub const armv8_8a: CpuModel = .{
.name = "armv8_8a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8_8a,
}),
};
pub const armv8_9a: CpuModel = .{
.name = "armv8_9a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8_9a,
}),
};
pub const armv8a: CpuModel = .{
.name = "armv8a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8a,
}),
};
pub const armv8r: CpuModel = .{
.name = "armv8r",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v8r,
}),
};
pub const armv9_1a: CpuModel = .{
.name = "armv9_1a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v9_1a,
}),
};
pub const armv9_2a: CpuModel = .{
.name = "armv9_2a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v9_2a,
}),
};
pub const armv9_3a: CpuModel = .{
.name = "armv9_3a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v9_3a,
}),
};
pub const armv9_4a: CpuModel = .{
.name = "armv9_4a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v9_4a,
}),
};
pub const armv9_5a: CpuModel = .{
.name = "armv9_5a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v9_5a,
}),
};
pub const armv9_6a: CpuModel = .{
.name = "armv9_6a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v9_6a,
}),
};
pub const armv9_7a: CpuModel = .{
.name = "armv9_7a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v9_7a,
}),
};
pub const armv9a: CpuModel = .{
.name = "armv9a",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.v9a,
}),
};
pub const c1_nano: CpuModel = .{
.name = "c1_nano",
.llvm_name = "c1-nano",
@@ -3393,16 +3526,6 @@ pub const cpu = struct {
.v9_2a,
}),
};
pub const generic: CpuModel = .{
.name = "generic",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{
.ete,
.fuse_adrp_add,
.fuse_aes,
.neon,
}),
};
pub const grace: CpuModel = .{
.name = "grace",
.llvm_name = "grace",
+100
View File
@@ -758,8 +758,108 @@ const targets = [_]ArchTarget{
.llvm_name = "apple-latest",
.omit = true,
},
.{
.llvm_name = "generic",
.omit = true,
},
},
.extra_models = &.{
.{
.llvm_name = "generic",
.zig_name = "armv8a",
.features = &.{"v8a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv8r",
.features = &.{"v8r"},
},
.{
.llvm_name = "generic",
.zig_name = "armv8_1a",
.features = &.{"v8_1a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv8_2a",
.features = &.{"v8_2a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv8_3a",
.features = &.{"v8_3a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv8_4a",
.features = &.{"v8_4a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv8_5a",
.features = &.{"v8_5a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv8_6a",
.features = &.{"v8_6a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv8_7a",
.features = &.{"v8_7a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv8_8a",
.features = &.{"v8_8a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv8_9a",
.features = &.{"v8_9a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv9a",
.features = &.{"v9a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv9_1a",
.features = &.{"v9_1a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv9_2a",
.features = &.{"v9_2a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv9_3a",
.features = &.{"v9_3a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv9_4a",
.features = &.{"v9_4a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv9_5a",
.features = &.{"v9_5a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv9_6a",
.features = &.{"v9_6a"},
},
.{
.llvm_name = "generic",
.zig_name = "armv9_7a",
.features = &.{"v9_7a"},
},
.{
.llvm_name = null,
.zig_name = "exynos_m1",