tools/update_cpu_features: branch quota where necessary

also avoid unnecessary escaping of single quotes inside double quoted
strings (depends on a master branch commit that will be merged into this
branch in a future commit)
This commit is contained in:
Andrew Kelley 2021-02-26 23:21:05 -07:00
parent 2733ca91b2
commit a804944c7d

View file

@ -24,6 +24,7 @@ const llvm_targets = [_]LlvmTarget{
.zig_name = "aarch64", .zig_name = "aarch64",
.llvm_name = "AArch64", .llvm_name = "AArch64",
.td_name = "AArch64.td", .td_name = "AArch64.td",
.branch_quota = 2000,
.feature_overrides = &.{ .feature_overrides = &.{
.{ .{
.llvm_name = "CONTEXTIDREL2", .llvm_name = "CONTEXTIDREL2",
@ -46,6 +47,7 @@ const llvm_targets = [_]LlvmTarget{
.zig_name = "arm", .zig_name = "arm",
.llvm_name = "ARM", .llvm_name = "ARM",
.td_name = "ARM.td", .td_name = "ARM.td",
.branch_quota = 10000,
}, },
.{ .{
.zig_name = "avr", .zig_name = "avr",
@ -338,7 +340,7 @@ fn processOneTarget(job: Job) anyerror!void {
for (all_features.items) |obj| { for (all_features.items) |obj| {
const llvm_name = obj.get("Name").?.String; const llvm_name = obj.get("Name").?.String;
const zig_name = try llvmNameToZigName(arena, llvm_target, llvm_name); const zig_name = try llvmNameToZigName(arena, llvm_target, llvm_name);
try w.print(" {s},\n", .{std.zig.fmtId(zig_name)}); try w.print(" {},\n", .{std.zig.fmtId(zig_name)});
} }
try w.writeAll( try w.writeAll(
@ -347,6 +349,7 @@ fn processOneTarget(job: Job) anyerror!void {
\\pub usingnamespace CpuFeature.feature_set_fns(Feature); \\pub usingnamespace CpuFeature.feature_set_fns(Feature);
\\ \\
\\pub const all_features = blk: { \\pub const all_features = blk: {
\\
); );
if (llvm_target.branch_quota) |branch_quota| { if (llvm_target.branch_quota) |branch_quota| {
try w.print(" @setEvalBranchQuota({d});\n", .{branch_quota}); try w.print(" @setEvalBranchQuota({d});\n", .{branch_quota});
@ -363,9 +366,9 @@ fn processOneTarget(job: Job) anyerror!void {
const description = obj.get("Desc").?.String; const description = obj.get("Desc").?.String;
const zig_name = try llvmNameToZigName(arena, llvm_target, llvm_name); const zig_name = try llvmNameToZigName(arena, llvm_target, llvm_name);
try w.print( try w.print(
\\ result[@enumToInt(Feature.{s})] = .{{ \\ result[@enumToInt(Feature.{})] = .{{
\\ .llvm_name = "{s}", \\ .llvm_name = "{}",
\\ .description = "{s}", \\ .description = "{}",
\\ .dependencies = featureSet(&[_]Feature{{ \\ .dependencies = featureSet(&[_]Feature{{
, ,
.{ .{
@ -394,7 +397,7 @@ fn processOneTarget(job: Job) anyerror!void {
for (dependencies.items) |dep| { for (dependencies.items) |dep| {
const other_llvm_name = dep.get("Name").?.String; const other_llvm_name = dep.get("Name").?.String;
const other_zig_name = try llvmNameToZigName(arena, llvm_target, other_llvm_name); const other_zig_name = try llvmNameToZigName(arena, llvm_target, other_llvm_name);
try w.print(" .{s},\n", .{std.zig.fmtId(other_zig_name)}); try w.print(" .{},\n", .{std.zig.fmtId(other_zig_name)});
} }
try w.writeAll( try w.writeAll(
\\ }), \\ }),
@ -439,9 +442,9 @@ fn processOneTarget(job: Job) anyerror!void {
std.sort.sort(*json.ObjectMap, cpu_features.items, {}, objectLessThan); std.sort.sort(*json.ObjectMap, cpu_features.items, {}, objectLessThan);
const zig_cpu_name = try llvmNameToZigName(arena, llvm_target, llvm_name); const zig_cpu_name = try llvmNameToZigName(arena, llvm_target, llvm_name);
try w.print( try w.print(
\\ pub const {s} = CpuModel{{ \\ pub const {} = CpuModel{{
\\ .name = "{s}", \\ .name = "{}",
\\ .llvm_name = "{s}", \\ .llvm_name = "{}",
\\ .features = featureSet(&[_]Feature{{ \\ .features = featureSet(&[_]Feature{{
, .{ , .{
std.zig.fmtId(zig_cpu_name), std.zig.fmtId(zig_cpu_name),
@ -459,7 +462,7 @@ fn processOneTarget(job: Job) anyerror!void {
for (cpu_features.items) |feature_obj| { for (cpu_features.items) |feature_obj| {
const feature_llvm_name = feature_obj.get("Name").?.String; const feature_llvm_name = feature_obj.get("Name").?.String;
const feature_zig_name = try llvmNameToZigName(arena, llvm_target, feature_llvm_name); const feature_zig_name = try llvmNameToZigName(arena, llvm_target, feature_llvm_name);
try w.print(" .{s},\n", .{std.zig.fmtId(feature_zig_name)}); try w.print(" .{},\n", .{std.zig.fmtId(feature_zig_name)});
} }
try w.writeAll( try w.writeAll(
\\ }), \\ }),