authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-09-24 11:08:29+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-09-24 11:08:29+02:00
logdcbd3cbce924579fd4cdd71ef83935570daa774e
tree6ae3f55ee3204a39dab011fc18be897fb58927f1
parentd3ba5f397d3270047bcf05c7ed21c5bd6b97e75b
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

update_cpu_features: Add support for parsing DefaultExts as used for aarch64.


1 files changed, 18 insertions(+), 4 deletions(-)

tools/update_cpu_features.zig+18-4
......@@ -61,10 +61,6 @@ const llvm_targets = [_]LlvmTarget{
6161 .zig_name = "contextidr_el2",
6262 .desc = "Enable RW operand Context ID Register (EL2)",
6363 },
64 .{
65 .llvm_name = "v8a",
66 .extra_deps = &.{"neon"},
67 },
6864 .{
6965 .llvm_name = "neoversee1",
7066 .flatten = true,
......@@ -1436,6 +1432,24 @@ fn processOneTarget(job: Job) anyerror!void {
14361432 try deps.append(other_zig_name);
14371433 }
14381434 }
1435 // This is used by AArch64.
1436 if (kv.value_ptr.object.get("DefaultExts")) |exts_val| {
1437 for (exts_val.array.items) |ext| {
1438 const other_key = ext.object.get("def").?.string;
1439 const other_obj = &root_map.getPtr(other_key).?.object;
1440 const other_llvm_name = other_obj.get("Name").?.string;
1441 const other_zig_name = (try llvmFeatureNameToZigNameOmit(
1442 arena,
1443 llvm_target,
1444 other_llvm_name,
1445 )) orelse continue;
1446 for (omit_deps) |omit_dep| {
1447 if (mem.eql(u8, other_zig_name, omit_dep)) break;
1448 } else {
1449 try deps.append(other_zig_name);
1450 }
1451 }
1452 }
14391453 for (extra_deps) |extra_dep| {
14401454 try deps.append(extra_dep);
14411455 }