authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-10-04 19:37:12+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2024-10-04 19:37:12+02:00
logeb363bf84503c428374d5c698ef7ebd574940a11
treea3b28be6d2c4479d5b286d485744f3febfc3eb6c
parentb23a5b56c2f4fcbba689d86055671fcb6297b7cc
parent530edea1cac5b0dae3ce897cd95246414ea0fc96
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #21572 from alexrp/tests-llvm-targets

`test`: Rewrite the target triple list for `llvm_targets`.

7 files changed, 374 insertions(+), 71 deletions(-)

lib/compiler/aro/aro/target.zig-1
...@@ -652,7 +652,6 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 {...@@ -652,7 +652,6 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 {
652 .tvos => "tvos",652 .tvos => "tvos",
653 .watchos => "watchos",653 .watchos => "watchos",
654 .driverkit => "driverkit",654 .driverkit => "driverkit",
655 .shadermodel => "shadermodel",
656 .visionos => "xros",655 .visionos => "xros",
657 .serenity => "serenity",656 .serenity => "serenity",
658 .bridgeos => "bridgeos",657 .bridgeos => "bridgeos",
lib/std/Target.zig+18-9
...@@ -66,13 +66,13 @@ pub const Os = struct {...@@ -66,13 +66,13 @@ pub const Os = struct {
66 nvcl,66 nvcl,
67 opencl,67 opencl,
68 opengl,68 opengl,
69 shadermodel,
70 vulkan,69 vulkan,
7170
72 // LLVM tags deliberately omitted:71 // LLVM tags deliberately omitted:
73 // - darwin72 // - darwin
74 // - kfreebsd73 // - kfreebsd
75 // - nacl74 // - nacl
75 // - shadermodel
7676
77 pub inline fn isDarwin(tag: Tag) bool {77 pub inline fn isDarwin(tag: Tag) bool {
78 return switch (tag) {78 return switch (tag) {
...@@ -178,7 +178,6 @@ pub const Os = struct {...@@ -178,7 +178,6 @@ pub const Os = struct {
178 .hermit,178 .hermit,
179 .hurd,179 .hurd,
180 .emscripten,180 .emscripten,
181 .shadermodel,
182 .uefi,181 .uefi,
183 .opencl, // TODO: OpenCL versions182 .opencl, // TODO: OpenCL versions
184 .opengl, // TODO: GLSL versions183 .opengl, // TODO: GLSL versions
...@@ -189,7 +188,9 @@ pub const Os = struct {...@@ -189,7 +188,9 @@ pub const Os = struct {
189 .other,188 .other,
190 => .none,189 => .none,
191190
192 .bridgeos,191 // This should use semver once we determine the version history.
192 .bridgeos => .none,
193
193 .driverkit,194 .driverkit,
194 .freebsd,195 .freebsd,
195 .macos,196 .macos,
...@@ -408,7 +409,6 @@ pub const Os = struct {...@@ -408,7 +409,6 @@ pub const Os = struct {
408 .hermit,409 .hermit,
409 .hurd,410 .hurd,
410 .emscripten,411 .emscripten,
411 .shadermodel,
412 .uefi,412 .uefi,
413 .opencl, // TODO: OpenCL versions413 .opencl, // TODO: OpenCL versions
414 .opengl, // TODO: GLSL versions414 .opengl, // TODO: GLSL versions
...@@ -613,7 +613,6 @@ pub const Os = struct {...@@ -613,7 +613,6 @@ pub const Os = struct {
613 .hurd,613 .hurd,
614 .wasi,614 .wasi,
615 .emscripten,615 .emscripten,
616 .shadermodel,
617 .uefi,616 .uefi,
618 .opencl,617 .opencl,
619 .opengl,618 .opengl,
...@@ -633,6 +632,7 @@ pub const avr = @import("Target/avr.zig");...@@ -633,6 +632,7 @@ pub const avr = @import("Target/avr.zig");
633pub const bpf = @import("Target/bpf.zig");632pub const bpf = @import("Target/bpf.zig");
634pub const csky = @import("Target/csky.zig");633pub const csky = @import("Target/csky.zig");
635pub const hexagon = @import("Target/hexagon.zig");634pub const hexagon = @import("Target/hexagon.zig");
635pub const lanai = @import("Target/lanai.zig");
636pub const loongarch = @import("Target/loongarch.zig");636pub const loongarch = @import("Target/loongarch.zig");
637pub const m68k = @import("Target/m68k.zig");637pub const m68k = @import("Target/m68k.zig");
638pub const mips = @import("Target/mips.zig");638pub const mips = @import("Target/mips.zig");
...@@ -646,6 +646,7 @@ pub const s390x = @import("Target/s390x.zig");...@@ -646,6 +646,7 @@ pub const s390x = @import("Target/s390x.zig");
646pub const ve = @import("Target/ve.zig");646pub const ve = @import("Target/ve.zig");
647pub const wasm = @import("Target/wasm.zig");647pub const wasm = @import("Target/wasm.zig");
648pub const x86 = @import("Target/x86.zig");648pub const x86 = @import("Target/x86.zig");
649pub const xcore = @import("Target/xcore.zig");
649pub const xtensa = @import("Target/xtensa.zig");650pub const xtensa = @import("Target/xtensa.zig");
650651
651pub const Abi = enum {652pub const Abi = enum {
...@@ -739,7 +740,6 @@ pub const Abi = enum {...@@ -739,7 +740,6 @@ pub const Abi = enum {
739 .watchos,740 .watchos,
740 .visionos,741 .visionos,
741 .driverkit,742 .driverkit,
742 .shadermodel,
743 .solaris,743 .solaris,
744 .illumos,744 .illumos,
745 .serenity,745 .serenity,
...@@ -1419,6 +1419,7 @@ pub const Cpu = struct {...@@ -1419,6 +1419,7 @@ pub const Cpu = struct {
1419 .bpfel, .bpfeb => &bpf.all_features,1419 .bpfel, .bpfeb => &bpf.all_features,
1420 .csky => &csky.all_features,1420 .csky => &csky.all_features,
1421 .hexagon => &hexagon.all_features,1421 .hexagon => &hexagon.all_features,
1422 .lanai => &lanai.all_features,
1422 .loongarch32, .loongarch64 => &loongarch.all_features,1423 .loongarch32, .loongarch64 => &loongarch.all_features,
1423 .m68k => &m68k.all_features,1424 .m68k => &m68k.all_features,
1424 .mips, .mipsel, .mips64, .mips64el => &mips.all_features,1425 .mips, .mipsel, .mips64, .mips64el => &mips.all_features,
...@@ -1430,6 +1431,7 @@ pub const Cpu = struct {...@@ -1430,6 +1431,7 @@ pub const Cpu = struct {
1430 .spirv, .spirv32, .spirv64 => &spirv.all_features,1431 .spirv, .spirv32, .spirv64 => &spirv.all_features,
1431 .s390x => &s390x.all_features,1432 .s390x => &s390x.all_features,
1432 .x86, .x86_64 => &x86.all_features,1433 .x86, .x86_64 => &x86.all_features,
1434 .xcore => &xcore.all_features,
1433 .xtensa => &xtensa.all_features,1435 .xtensa => &xtensa.all_features,
1434 .nvptx, .nvptx64 => &nvptx.all_features,1436 .nvptx, .nvptx64 => &nvptx.all_features,
1435 .ve => &ve.all_features,1437 .ve => &ve.all_features,
...@@ -1449,6 +1451,7 @@ pub const Cpu = struct {...@@ -1449,6 +1451,7 @@ pub const Cpu = struct {
1449 .bpfel, .bpfeb => comptime allCpusFromDecls(bpf.cpu),1451 .bpfel, .bpfeb => comptime allCpusFromDecls(bpf.cpu),
1450 .csky => comptime allCpusFromDecls(csky.cpu),1452 .csky => comptime allCpusFromDecls(csky.cpu),
1451 .hexagon => comptime allCpusFromDecls(hexagon.cpu),1453 .hexagon => comptime allCpusFromDecls(hexagon.cpu),
1454 .lanai => comptime allCpusFromDecls(lanai.cpu),
1452 .loongarch32, .loongarch64 => comptime allCpusFromDecls(loongarch.cpu),1455 .loongarch32, .loongarch64 => comptime allCpusFromDecls(loongarch.cpu),
1453 .m68k => comptime allCpusFromDecls(m68k.cpu),1456 .m68k => comptime allCpusFromDecls(m68k.cpu),
1454 .mips, .mipsel, .mips64, .mips64el => comptime allCpusFromDecls(mips.cpu),1457 .mips, .mipsel, .mips64, .mips64el => comptime allCpusFromDecls(mips.cpu),
...@@ -1460,6 +1463,7 @@ pub const Cpu = struct {...@@ -1460,6 +1463,7 @@ pub const Cpu = struct {
1460 .spirv, .spirv32, .spirv64 => comptime allCpusFromDecls(spirv.cpu),1463 .spirv, .spirv32, .spirv64 => comptime allCpusFromDecls(spirv.cpu),
1461 .s390x => comptime allCpusFromDecls(s390x.cpu),1464 .s390x => comptime allCpusFromDecls(s390x.cpu),
1462 .x86, .x86_64 => comptime allCpusFromDecls(x86.cpu),1465 .x86, .x86_64 => comptime allCpusFromDecls(x86.cpu),
1466 .xcore => comptime allCpusFromDecls(xcore.cpu),
1463 .xtensa => comptime allCpusFromDecls(xtensa.cpu),1467 .xtensa => comptime allCpusFromDecls(xtensa.cpu),
1464 .nvptx, .nvptx64 => comptime allCpusFromDecls(nvptx.cpu),1468 .nvptx, .nvptx64 => comptime allCpusFromDecls(nvptx.cpu),
1465 .ve => comptime allCpusFromDecls(ve.cpu),1469 .ve => comptime allCpusFromDecls(ve.cpu),
...@@ -1529,11 +1533,14 @@ pub const Cpu = struct {...@@ -1529,11 +1533,14 @@ pub const Cpu = struct {
1529 };1533 };
1530 };1534 };
1531 return switch (arch) {1535 return switch (arch) {
1536 .arc => &arc.cpu.generic,
1532 .arm, .armeb, .thumb, .thumbeb => &arm.cpu.generic,1537 .arm, .armeb, .thumb, .thumbeb => &arm.cpu.generic,
1533 .aarch64, .aarch64_be => &aarch64.cpu.generic,1538 .aarch64, .aarch64_be => &aarch64.cpu.generic,
1534 .avr => &avr.cpu.avr2,1539 .avr => &avr.cpu.avr2,
1535 .bpfel, .bpfeb => &bpf.cpu.generic,1540 .bpfel, .bpfeb => &bpf.cpu.generic,
1541 .csky => &csky.cpu.generic,
1536 .hexagon => &hexagon.cpu.generic,1542 .hexagon => &hexagon.cpu.generic,
1543 .lanai => &lanai.cpu.generic,
1537 .loongarch32 => &loongarch.cpu.generic_la32,1544 .loongarch32 => &loongarch.cpu.generic_la32,
1538 .loongarch64 => &loongarch.cpu.generic_la64,1545 .loongarch64 => &loongarch.cpu.generic_la64,
1539 .m68k => &m68k.cpu.generic,1546 .m68k => &m68k.cpu.generic,
...@@ -1556,8 +1563,12 @@ pub const Cpu = struct {...@@ -1556,8 +1563,12 @@ pub const Cpu = struct {
1556 .nvptx, .nvptx64 => &nvptx.cpu.sm_20,1563 .nvptx, .nvptx64 => &nvptx.cpu.sm_20,
1557 .ve => &ve.cpu.generic,1564 .ve => &ve.cpu.generic,
1558 .wasm32, .wasm64 => &wasm.cpu.generic,1565 .wasm32, .wasm64 => &wasm.cpu.generic,
1566 .xcore => &xcore.cpu.generic,
1567 .xtensa => &xtensa.cpu.generic,
15591568
1560 else => &S.generic_model,1569 .kalimba,
1570 .spu_2,
1571 => &S.generic_model,
1561 };1572 };
1562 }1573 }
15631574
...@@ -1873,7 +1884,6 @@ pub const DynamicLinker = struct {...@@ -1873,7 +1884,6 @@ pub const DynamicLinker = struct {
1873 .amdpal,1884 .amdpal,
1874 .hermit,1885 .hermit,
1875 .hurd,1886 .hurd,
1876 .shadermodel,
1877 => none,1887 => none,
1878 };1888 };
1879 }1889 }
...@@ -2366,7 +2376,6 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {...@@ -2366,7 +2376,6 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
2366 .hermit,2376 .hermit,
2367 .hurd,2377 .hurd,
2368 .opengl,2378 .opengl,
2369 .shadermodel,
2370 => @panic("TODO specify the C integer and float type sizes for this OS"),2379 => @panic("TODO specify the C integer and float type sizes for this OS"),
2371 }2380 }
2372}2381}
lib/std/Target/lanai.zig created+37
...@@ -0,0 +1,37 @@
1//! This file is auto-generated by tools/update_cpu_features.zig.
2
3const std = @import("../std.zig");
4const CpuFeature = std.Target.Cpu.Feature;
5const CpuModel = std.Target.Cpu.Model;
6
7pub const Feature = enum {};
8
9pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
10pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
11pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
12pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
13
14pub const all_features = blk: {
15 const len = @typeInfo(Feature).@"enum".fields.len;
16 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
17 var result: [len]CpuFeature = undefined;
18 const ti = @typeInfo(Feature);
19 for (&result, 0..) |*elem, i| {
20 elem.index = i;
21 elem.name = ti.@"enum".fields[i].name;
22 }
23 break :blk result;
24};
25
26pub const cpu = struct {
27 pub const generic = CpuModel{
28 .name = "generic",
29 .llvm_name = "generic",
30 .features = featureSet(&[_]Feature{}),
31 };
32 pub const v11 = CpuModel{
33 .name = "v11",
34 .llvm_name = "v11",
35 .features = featureSet(&[_]Feature{}),
36 };
37};
lib/std/Target/xcore.zig created+37
...@@ -0,0 +1,37 @@
1//! This file is auto-generated by tools/update_cpu_features.zig.
2
3const std = @import("../std.zig");
4const CpuFeature = std.Target.Cpu.Feature;
5const CpuModel = std.Target.Cpu.Model;
6
7pub const Feature = enum {};
8
9pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
10pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
11pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
12pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
13
14pub const all_features = blk: {
15 const len = @typeInfo(Feature).@"enum".fields.len;
16 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
17 var result: [len]CpuFeature = undefined;
18 const ti = @typeInfo(Feature);
19 for (&result, 0..) |*elem, i| {
20 elem.index = i;
21 elem.name = ti.@"enum".fields[i].name;
22 }
23 break :blk result;
24};
25
26pub const cpu = struct {
27 pub const generic = CpuModel{
28 .name = "generic",
29 .llvm_name = "generic",
30 .features = featureSet(&[_]Feature{}),
31 };
32 pub const xs1b_generic = CpuModel{
33 .name = "xs1b_generic",
34 .llvm_name = "xs1b-generic",
35 .features = featureSet(&[_]Feature{}),
36 };
37};
src/codegen/llvm.zig-2
...@@ -134,7 +134,6 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {...@@ -134,7 +134,6 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
134 .tvos => "tvos",134 .tvos => "tvos",
135 .watchos => "watchos",135 .watchos => "watchos",
136 .driverkit => "driverkit",136 .driverkit => "driverkit",
137 .shadermodel => "shadermodel",
138 .visionos => "xros",137 .visionos => "xros",
139 .serenity => "serenity",138 .serenity => "serenity",
140 .vulkan => "vulkan",139 .vulkan => "vulkan",
...@@ -224,7 +223,6 @@ pub fn targetOs(os_tag: std.Target.Os.Tag) llvm.OSType {...@@ -224,7 +223,6 @@ pub fn targetOs(os_tag: std.Target.Os.Tag) llvm.OSType {
224 .wasi => .WASI,223 .wasi => .WASI,
225 .emscripten => .Emscripten,224 .emscripten => .Emscripten,
226 .driverkit => .DriverKit,225 .driverkit => .DriverKit,
227 .shadermodel => .ShaderModel,
228 .vulkan => .Vulkan,226 .vulkan => .Vulkan,
229 .serenity => .Serenity,227 .serenity => .Serenity,
230 .bridgeos => .BridgeOS,228 .bridgeos => .BridgeOS,
test/llvm_targets.zig+278-50
...@@ -2,115 +2,326 @@ const std = @import("std");...@@ -2,115 +2,326 @@ const std = @import("std");
2const Cases = @import("src/Cases.zig");2const Cases = @import("src/Cases.zig");
33
4const targets = [_]std.Target.Query{4const targets = [_]std.Target.Query{
5 .{ .cpu_arch = .aarch64, .os_tag = .bridgeos, .abi = .none },
6 .{ .cpu_arch = .aarch64, .os_tag = .driverkit, .abi = .none },
7 .{ .cpu_arch = .aarch64, .os_tag = .freebsd, .abi = .none },
5 .{ .cpu_arch = .aarch64, .os_tag = .freestanding, .abi = .none },8 .{ .cpu_arch = .aarch64, .os_tag = .freestanding, .abi = .none },
6 .{ .cpu_arch = .aarch64, .os_tag = .freestanding, .abi = .ilp32 },9 .{ .cpu_arch = .aarch64, .os_tag = .fuchsia, .abi = .none },
10 .{ .cpu_arch = .aarch64, .os_tag = .haiku, .abi = .none },
11 .{ .cpu_arch = .aarch64, .os_tag = .hermit, .abi = .none },
12 .{ .cpu_arch = .aarch64, .os_tag = .hurd, .abi = .gnu },
13 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .macabi },
7 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none },14 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none },
8 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator },15 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator },
9 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },16 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu },
10 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnuilp32 },17 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnuilp32 },
18 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },
11 .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },19 .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },
12 .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .none },20 .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none },
13 .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .simulator },21 .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none },
22 .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .ilp32 },
23 .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .none },
24 .{ .cpu_arch = .aarch64, .os_tag = .serenity, .abi = .none },
14 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none },25 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none },
15 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .simulator },26 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .simulator },
27 .{ .cpu_arch = .aarch64, .os_tag = .uefi, .abi = .none },
16 .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .none },28 .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .none },
17 .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .simulator },29 .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .simulator },
18 .{ .cpu_arch = .aarch64, .os_tag = .uefi, .abi = .none },30 .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .ilp32 },
31 .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .none },
32 .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .simulator },
19 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .gnu },33 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .gnu },
34 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .itanium },
20 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .msvc },35 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .msvc },
36
21 .{ .cpu_arch = .aarch64_be, .os_tag = .freestanding, .abi = .none },37 .{ .cpu_arch = .aarch64_be, .os_tag = .freestanding, .abi = .none },
38 .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .gnu },
39 .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .gnuilp32 },
22 .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .none },40 .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .none },
41 .{ .cpu_arch = .aarch64_be, .os_tag = .netbsd, .abi = .none },
42
23 .{ .cpu_arch = .amdgcn, .os_tag = .amdhsa, .abi = .none },43 .{ .cpu_arch = .amdgcn, .os_tag = .amdhsa, .abi = .none },
24 .{ .cpu_arch = .amdgcn, .os_tag = .amdpal, .abi = .none },44 .{ .cpu_arch = .amdgcn, .os_tag = .amdpal, .abi = .none },
25 .{ .cpu_arch = .amdgcn, .os_tag = .linux, .abi = .none },45 .{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none },
26 //.{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none },46
27 .{ .cpu_arch = .arc, .os_tag = .freestanding, .abi = .none },47 .{ .cpu_arch = .arc, .os_tag = .freestanding, .abi = .none },
48 .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .gnu },
28 .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .none },49 .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .none },
29 .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .none },50
30 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .none },51 .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabi },
31 .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .none },52 .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabihf },
32 .{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .none },53 .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabi },
33 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .none },54 .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabihf },
34 .{ .cpu_arch = .avr, .os_tag = .freebsd, .abi = .none },55 .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabi },
56 .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabihf },
57 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabi },
58 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabihf },
59 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabi },
60 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabihf },
61 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabi },
62 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabihf },
63 .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabi },
64 .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabihf },
65 .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabi },
66 .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabihf },
67 .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabi },
68 .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabihf },
69 .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabi },
70 .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabihf },
71
72 .{ .cpu_arch = .armeb, .os_tag = .freebsd, .abi = .eabi },
73 .{ .cpu_arch = .armeb, .os_tag = .freebsd, .abi = .eabihf },
74 .{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .eabi },
75 .{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .eabihf },
76 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .eabi },
77 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .eabihf },
78 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .gnueabi },
79 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .gnueabihf },
80 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .musleabi },
81 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .musleabihf },
82 .{ .cpu_arch = .armeb, .os_tag = .netbsd, .abi = .eabi },
83 .{ .cpu_arch = .armeb, .os_tag = .netbsd, .abi = .eabihf },
84 .{ .cpu_arch = .armeb, .os_tag = .rtems, .abi = .eabi },
85 .{ .cpu_arch = .armeb, .os_tag = .rtems, .abi = .eabihf },
86
35 .{ .cpu_arch = .avr, .os_tag = .freestanding, .abi = .none },87 .{ .cpu_arch = .avr, .os_tag = .freestanding, .abi = .none },
36 .{ .cpu_arch = .avr, .os_tag = .linux, .abi = .none },88 .{ .cpu_arch = .avr, .os_tag = .rtems, .abi = .none },
37 .{ .cpu_arch = .bpfel, .os_tag = .linux, .abi = .gnu },89
38 .{ .cpu_arch = .bpfel, .os_tag = .linux, .abi = .none },90 .{ .cpu_arch = .bpfeb, .os_tag = .freestanding, .abi = .none },
39 .{ .cpu_arch = .bpfeb, .os_tag = .linux, .abi = .gnu },91
40 .{ .cpu_arch = .bpfeb, .os_tag = .linux, .abi = .none },92 .{ .cpu_arch = .bpfel, .os_tag = .freestanding, .abi = .none },
41 .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .none },93
42 .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .none },94 .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabi },
95 .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabihf },
96 .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabi },
97 .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabihf },
98 .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabi },
99 .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabihf },
100
101 .{ .cpu_arch = .hexagon, .os_tag = .freestanding, .abi = .none },
43 .{ .cpu_arch = .hexagon, .os_tag = .linux, .abi = .none },102 .{ .cpu_arch = .hexagon, .os_tag = .linux, .abi = .none },
103
104 .{ .cpu_arch = .lanai, .os_tag = .freestanding, .abi = .none },
105
106 .{ .cpu_arch = .loongarch32, .os_tag = .freestanding, .abi = .none },
107 .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .gnu },
108 .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .gnuf32 },
109 .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .gnusf },
110 .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .musl },
111 .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .none },
112 .{ .cpu_arch = .loongarch32, .os_tag = .uefi, .abi = .none },
113
114 .{ .cpu_arch = .loongarch64, .os_tag = .freestanding, .abi = .none },
115 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnu },
116 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 },
117 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnusf },
118 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .musl },
119 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .none },
120 .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none },
121
44 .{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none },122 .{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none },
123 .{ .cpu_arch = .m68k, .os_tag = .haiku, .abi = .none },
124 .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .gnu },
45 .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .none },125 .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .none },
126 .{ .cpu_arch = .m68k, .os_tag = .netbsd, .abi = .none },
127 .{ .cpu_arch = .m68k, .os_tag = .rtems, .abi = .none },
128
129 .{ .cpu_arch = .mips, .os_tag = .freebsd, .abi = .eabi },
130 .{ .cpu_arch = .mips, .os_tag = .freebsd, .abi = .eabihf },
131 .{ .cpu_arch = .mips, .os_tag = .freestanding, .abi = .eabi },
132 .{ .cpu_arch = .mips, .os_tag = .freestanding, .abi = .eabihf },
133 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .eabi },
134 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .eabihf },
135 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .gnueabi },
46 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .gnueabihf },136 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .gnueabihf },
47 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musl },137 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musleabi },
48 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .none },138 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musleabihf },
139 .{ .cpu_arch = .mips, .os_tag = .netbsd, .abi = .eabi },
140 .{ .cpu_arch = .mips, .os_tag = .netbsd, .abi = .eabihf },
141 .{ .cpu_arch = .mips, .os_tag = .rtems, .abi = .eabi },
142 .{ .cpu_arch = .mips, .os_tag = .rtems, .abi = .eabihf },
143
144 .{ .cpu_arch = .mipsel, .os_tag = .freebsd, .abi = .eabi },
145 .{ .cpu_arch = .mipsel, .os_tag = .freebsd, .abi = .eabihf },
146 .{ .cpu_arch = .mipsel, .os_tag = .freestanding, .abi = .eabi },
147 .{ .cpu_arch = .mipsel, .os_tag = .freestanding, .abi = .eabihf },
148 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .eabi },
149 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .eabihf },
150 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .gnueabi },
49 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .gnueabihf },151 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .gnueabihf },
50 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musl },152 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musleabi },
51 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .none },153 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musleabihf },
154 .{ .cpu_arch = .mipsel, .os_tag = .netbsd, .abi = .eabi },
155 .{ .cpu_arch = .mipsel, .os_tag = .netbsd, .abi = .eabihf },
156 .{ .cpu_arch = .mipsel, .os_tag = .rtems, .abi = .eabi },
157 .{ .cpu_arch = .mipsel, .os_tag = .rtems, .abi = .eabihf },
158
159 .{ .cpu_arch = .mips64, .os_tag = .freebsd, .abi = .none },
160 .{ .cpu_arch = .mips64, .os_tag = .freestanding, .abi = .none },
161 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .gnuabi64 },
162 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .gnuabin32 },
163 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .musl },
52 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .none },164 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .none },
165 .{ .cpu_arch = .mips64, .os_tag = .netbsd, .abi = .none },
166 .{ .cpu_arch = .mips64, .os_tag = .openbsd, .abi = .none },
167
168 .{ .cpu_arch = .mips64el, .os_tag = .freebsd, .abi = .none },
169 .{ .cpu_arch = .mips64el, .os_tag = .freestanding, .abi = .none },
170 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .gnuabi64 },
171 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .gnuabin32 },
172 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .musl },
53 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .none },173 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .none },
54 .{ .cpu_arch = .msp430, .os_tag = .freebsd, .abi = .none },174 .{ .cpu_arch = .mips64el, .os_tag = .netbsd, .abi = .none },
175 .{ .cpu_arch = .mips64el, .os_tag = .openbsd, .abi = .none },
176
55 .{ .cpu_arch = .msp430, .os_tag = .freestanding, .abi = .none },177 .{ .cpu_arch = .msp430, .os_tag = .freestanding, .abi = .none },
56 .{ .cpu_arch = .msp430, .os_tag = .linux, .abi = .none },178
57 //.{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none },179 .{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none },
58 //.{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none },180 .{ .cpu_arch = .nvptx, .os_tag = .nvcl, .abi = .none },
59 .{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .none },181 .{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none },
60 .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .none },182 .{ .cpu_arch = .nvptx64, .os_tag = .nvcl, .abi = .none },
183
184 .{ .cpu_arch = .powerpc, .os_tag = .aix, .abi = .eabi },
185 .{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .eabi },
186 .{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .eabihf },
187 .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabi },
188 .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabihf },
189 .{ .cpu_arch = .powerpc, .os_tag = .haiku, .abi = .eabi },
190 .{ .cpu_arch = .powerpc, .os_tag = .haiku, .abi = .eabihf },
191 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .eabi },
192 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .eabihf },
193 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .gnueabi },
61 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .gnueabihf },194 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .gnueabihf },
62 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musl },195 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabi },
63 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .none },196 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabihf },
64 .{ .cpu_arch = .powerpcle, .os_tag = .freebsd, .abi = .none },197 .{ .cpu_arch = .powerpc, .os_tag = .netbsd, .abi = .eabi },
65 .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .none },198 .{ .cpu_arch = .powerpc, .os_tag = .netbsd, .abi = .eabihf },
66 .{ .cpu_arch = .powerpcle, .os_tag = .linux, .abi = .gnu },199 .{ .cpu_arch = .powerpc, .os_tag = .openbsd, .abi = .eabi },
67 .{ .cpu_arch = .powerpcle, .os_tag = .linux, .abi = .musl },200 .{ .cpu_arch = .powerpc, .os_tag = .openbsd, .abi = .eabihf },
68 .{ .cpu_arch = .powerpcle, .os_tag = .linux, .abi = .none },201 .{ .cpu_arch = .powerpc, .os_tag = .rtems, .abi = .eabi },
202 .{ .cpu_arch = .powerpc, .os_tag = .rtems, .abi = .eabihf },
203
204 .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabi },
205 .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabihf },
206
207 .{ .cpu_arch = .powerpc64, .os_tag = .aix, .abi = .none },
69 .{ .cpu_arch = .powerpc64, .os_tag = .freebsd, .abi = .none },208 .{ .cpu_arch = .powerpc64, .os_tag = .freebsd, .abi = .none },
70 .{ .cpu_arch = .powerpc64, .os_tag = .freestanding, .abi = .none },209 .{ .cpu_arch = .powerpc64, .os_tag = .freestanding, .abi = .none },
71 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .gnu },210 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .gnu },
72 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .musl },211 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .musl },
73 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .none },212 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .none },
213 .{ .cpu_arch = .powerpc64, .os_tag = .openbsd, .abi = .none },
214 .{ .cpu_arch = .powerpc64, .os_tag = .rtems, .abi = .none },
215
74 .{ .cpu_arch = .powerpc64le, .os_tag = .freebsd, .abi = .none },216 .{ .cpu_arch = .powerpc64le, .os_tag = .freebsd, .abi = .none },
75 .{ .cpu_arch = .powerpc64le, .os_tag = .freestanding, .abi = .none },217 .{ .cpu_arch = .powerpc64le, .os_tag = .freestanding, .abi = .none },
76 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .gnu },218 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .gnu },
77 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .musl },219 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .musl },
78 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .none },220 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .none },
221
79 .{ .cpu_arch = .riscv32, .os_tag = .freestanding, .abi = .none },222 .{ .cpu_arch = .riscv32, .os_tag = .freestanding, .abi = .none },
223 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .gnu },
224 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .musl },
80 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .none },225 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .none },
226 .{ .cpu_arch = .riscv32, .os_tag = .rtems, .abi = .none },
227 .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none },
228
229 .{ .cpu_arch = .riscv64, .os_tag = .freebsd, .abi = .none },
81 .{ .cpu_arch = .riscv64, .os_tag = .freestanding, .abi = .none },230 .{ .cpu_arch = .riscv64, .os_tag = .freestanding, .abi = .none },
231 .{ .cpu_arch = .riscv64, .os_tag = .fuchsia, .abi = .none },
232 .{ .cpu_arch = .riscv64, .os_tag = .haiku, .abi = .none },
233 .{ .cpu_arch = .riscv64, .os_tag = .hermit, .abi = .none },
82 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .gnu },234 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .gnu },
83 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .musl },235 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .musl },
84 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .none },236 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .none },
237 .{ .cpu_arch = .riscv64, .os_tag = .netbsd, .abi = .none },
238 .{ .cpu_arch = .riscv64, .os_tag = .openbsd, .abi = .none },
239 .{ .cpu_arch = .riscv64, .os_tag = .rtems, .abi = .none },
240 .{ .cpu_arch = .riscv64, .os_tag = .serenity, .abi = .none },
241 .{ .cpu_arch = .riscv64, .os_tag = .uefi, .abi = .none },
242
85 .{ .cpu_arch = .s390x, .os_tag = .freestanding, .abi = .none },243 .{ .cpu_arch = .s390x, .os_tag = .freestanding, .abi = .none },
86 .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .gnu },244 .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .gnu },
245 .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .none },
246 .{ .cpu_arch = .s390x, .os_tag = .zos, .abi = .none },
247
87 .{ .cpu_arch = .sparc, .os_tag = .freestanding, .abi = .none },248 .{ .cpu_arch = .sparc, .os_tag = .freestanding, .abi = .none },
88 .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .gnu },249 .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .gnu },
89 .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .none },250 .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .none },
251 .{ .cpu_arch = .sparc, .os_tag = .netbsd, .abi = .none },
252 .{ .cpu_arch = .sparc, .os_tag = .rtems, .abi = .none },
253
254 .{ .cpu_arch = .sparc64, .os_tag = .freebsd, .abi = .none },
90 .{ .cpu_arch = .sparc64, .os_tag = .freestanding, .abi = .none },255 .{ .cpu_arch = .sparc64, .os_tag = .freestanding, .abi = .none },
256 .{ .cpu_arch = .sparc64, .os_tag = .haiku, .abi = .none },
257 .{ .cpu_arch = .sparc64, .os_tag = .illumos, .abi = .none },
91 .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .gnu },258 .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .gnu },
92 //.{ .cpu_arch = .spirv32, .os_tag = .opencl, .abi = .none },259 .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .none },
93 //.{ .cpu_arch = .spirv32, .os_tag = .opengl, .abi = .none },260 .{ .cpu_arch = .sparc64, .os_tag = .netbsd, .abi = .none },
94 //.{ .cpu_arch = .spirv32, .os_tag = .vulkan, .abi = .none },261 .{ .cpu_arch = .sparc64, .os_tag = .openbsd, .abi = .none },
95 //.{ .cpu_arch = .spirv64, .os_tag = .opencl, .abi = .none },262 .{ .cpu_arch = .sparc64, .os_tag = .rtems, .abi = .none },
96 //.{ .cpu_arch = .spirv64, .os_tag = .opengl, .abi = .none },263 .{ .cpu_arch = .sparc64, .os_tag = .solaris, .abi = .none },
97 //.{ .cpu_arch = .spirv64, .os_tag = .vulkan, .abi = .none },264
98 .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .none },265 .{ .cpu_arch = .thumb, .os_tag = .freebsd, .abi = .eabi },
99 .{ .cpu_arch = .thumbeb, .os_tag = .freestanding, .abi = .none },266 .{ .cpu_arch = .thumb, .os_tag = .freebsd, .abi = .eabihf },
267 .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabi },
268 .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabihf },
269 .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabi },
270 .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabihf },
271 .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .musleabi },
272 .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .musleabihf },
273 .{ .cpu_arch = .thumb, .os_tag = .netbsd, .abi = .eabi },
274 .{ .cpu_arch = .thumb, .os_tag = .netbsd, .abi = .eabihf },
275 .{ .cpu_arch = .thumb, .os_tag = .openbsd, .abi = .eabi },
276 .{ .cpu_arch = .thumb, .os_tag = .openbsd, .abi = .eabihf },
277 .{ .cpu_arch = .thumb, .os_tag = .rtems, .abi = .eabi },
278 .{ .cpu_arch = .thumb, .os_tag = .rtems, .abi = .eabihf },
279 .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .gnu },
280 .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .itanium },
281 .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .msvc },
282
283 .{ .cpu_arch = .thumbeb, .os_tag = .freebsd, .abi = .eabi },
284 .{ .cpu_arch = .thumbeb, .os_tag = .freebsd, .abi = .eabihf },
285 .{ .cpu_arch = .thumbeb, .os_tag = .freestanding, .abi = .eabi },
286 .{ .cpu_arch = .thumbeb, .os_tag = .freestanding, .abi = .eabihf },
287 .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .eabi },
288 .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .eabihf },
289 .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .musleabi },
290 .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .musleabihf },
291 .{ .cpu_arch = .thumbeb, .os_tag = .netbsd, .abi = .eabi },
292 .{ .cpu_arch = .thumbeb, .os_tag = .netbsd, .abi = .eabihf },
293 .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabi },
294 .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabihf },
295
296 .{ .cpu_arch = .ve, .os_tag = .freestanding, .abi = .none },
100 .{ .cpu_arch = .ve, .os_tag = .linux, .abi = .none },297 .{ .cpu_arch = .ve, .os_tag = .linux, .abi = .none },
298
101 .{ .cpu_arch = .wasm32, .os_tag = .emscripten, .abi = .none },299 .{ .cpu_arch = .wasm32, .os_tag = .emscripten, .abi = .none },
102 .{ .cpu_arch = .wasm32, .os_tag = .freestanding, .abi = .none },300 .{ .cpu_arch = .wasm32, .os_tag = .freestanding, .abi = .none },
103 .{ .cpu_arch = .wasm32, .os_tag = .linux, .abi = .none },301 .{ .cpu_arch = .wasm32, .os_tag = .wasi, .abi = .musl },
104 .{ .cpu_arch = .wasm32, .os_tag = .wasi, .abi = .none },302 .{ .cpu_arch = .wasm32, .os_tag = .wasi, .abi = .none },
303
105 .{ .cpu_arch = .wasm64, .os_tag = .emscripten, .abi = .none },304 .{ .cpu_arch = .wasm64, .os_tag = .emscripten, .abi = .none },
106 .{ .cpu_arch = .wasm64, .os_tag = .freestanding, .abi = .none },305 .{ .cpu_arch = .wasm64, .os_tag = .freestanding, .abi = .none },
107 .{ .cpu_arch = .wasm64, .os_tag = .linux, .abi = .none },306 .{ .cpu_arch = .wasm64, .os_tag = .wasi, .abi = .musl },
108 .{ .cpu_arch = .wasm64, .os_tag = .wasi, .abi = .none },307 .{ .cpu_arch = .wasm64, .os_tag = .wasi, .abi = .none },
308
309 .{ .cpu_arch = .x86, .os_tag = .elfiamcu, .abi = .none },
310 .{ .cpu_arch = .x86, .os_tag = .freebsd, .abi = .none },
109 .{ .cpu_arch = .x86, .os_tag = .freestanding, .abi = .none },311 .{ .cpu_arch = .x86, .os_tag = .freestanding, .abi = .none },
312 .{ .cpu_arch = .x86, .os_tag = .haiku, .abi = .none },
313 .{ .cpu_arch = .x86, .os_tag = .hurd, .abi = .gnu },
314 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .gnu },
315 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .musl },
110 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .none },316 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .none },
317 .{ .cpu_arch = .x86, .os_tag = .netbsd, .abi = .none },
318 .{ .cpu_arch = .x86, .os_tag = .openbsd, .abi = .none },
319 .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none },
111 .{ .cpu_arch = .x86, .os_tag = .uefi, .abi = .none },320 .{ .cpu_arch = .x86, .os_tag = .uefi, .abi = .none },
112 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .gnu },321 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .gnu },
322 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .itanium },
113 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .msvc },323 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .msvc },
324
114 .{ .cpu_arch = .x86_64, .os_tag = .freebsd, .abi = .none },325 .{ .cpu_arch = .x86_64, .os_tag = .freebsd, .abi = .none },
115 .{ .cpu_arch = .x86_64, .os_tag = .freestanding, .abi = .none },326 .{ .cpu_arch = .x86_64, .os_tag = .freestanding, .abi = .none },
116 .{327 .{
...@@ -120,15 +331,32 @@ const targets = [_]std.Target.Query{...@@ -120,15 +331,32 @@ const targets = [_]std.Target.Query{
120 .cpu_features_add = std.Target.x86.featureSet(&.{.soft_float}),331 .cpu_features_add = std.Target.x86.featureSet(&.{.soft_float}),
121 .cpu_features_sub = std.Target.x86.featureSet(&.{ .mmx, .sse, .sse2, .avx, .avx2 }),332 .cpu_features_sub = std.Target.x86.featureSet(&.{ .mmx, .sse, .sse2, .avx, .avx2 }),
122 },333 },
334 .{ .cpu_arch = .x86_64, .os_tag = .fuchsia, .abi = .none },
335 .{ .cpu_arch = .x86_64, .os_tag = .dragonfly, .abi = .none },
336 .{ .cpu_arch = .x86_64, .os_tag = .driverkit, .abi = .none },
337 .{ .cpu_arch = .x86_64, .os_tag = .haiku, .abi = .none },
338 .{ .cpu_arch = .x86_64, .os_tag = .hermit, .abi = .none },
339 .{ .cpu_arch = .x86_64, .os_tag = .hurd, .abi = .gnu },
340 .{ .cpu_arch = .x86_64, .os_tag = .illumos, .abi = .none },
341 .{ .cpu_arch = .x86_64, .os_tag = .ios, .abi = .macabi },
123 .{ .cpu_arch = .x86_64, .os_tag = .ios, .abi = .simulator },342 .{ .cpu_arch = .x86_64, .os_tag = .ios, .abi = .simulator },
124 .{ .cpu_arch = .x86_64, .os_tag = .watchos, .abi = .simulator },
125 .{ .cpu_arch = .x86_64, .os_tag = .tvos, .abi = .simulator },
126 .{ .cpu_arch = .x86_64, .os_tag = .visionos, .abi = .simulator },
127 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none },343 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none },
128 .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none },344 .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none },
345 .{ .cpu_arch = .x86_64, .os_tag = .netbsd, .abi = .none },
346 .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none },
347 .{ .cpu_arch = .x86_64, .os_tag = .rtems, .abi = .none },
348 .{ .cpu_arch = .x86_64, .os_tag = .serenity, .abi = .none },
349 .{ .cpu_arch = .x86_64, .os_tag = .solaris, .abi = .none },
350 .{ .cpu_arch = .x86_64, .os_tag = .tvos, .abi = .simulator },
129 .{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none },351 .{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none },
352 .{ .cpu_arch = .x86_64, .os_tag = .visionos, .abi = .simulator },
353 .{ .cpu_arch = .x86_64, .os_tag = .watchos, .abi = .simulator },
130 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu },354 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu },
355 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .itanium },
131 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .msvc },356 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .msvc },
357
358 .{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none },
359
132 .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none },360 .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none },
133 .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none },361 .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none },
134};362};
tools/update_cpu_features.zig+4-9
...@@ -1576,12 +1576,6 @@ fn processOneTarget(job: Job) anyerror!void {...@@ -1576,12 +1576,6 @@ fn processOneTarget(job: Job) anyerror!void {
15761576
1577 const zig_code_basename = try std.fmt.allocPrint(arena, "{s}.zig", .{llvm_target.zig_name});1577 const zig_code_basename = try std.fmt.allocPrint(arena, "{s}.zig", .{llvm_target.zig_name});
15781578
1579 if (all_features.items.len == 0) {
1580 // We represent this with an empty file.
1581 try target_dir.deleteTree(zig_code_basename);
1582 return;
1583 }
1584
1585 var zig_code_file = try target_dir.createFile(zig_code_basename, .{});1579 var zig_code_file = try target_dir.createFile(zig_code_basename, .{});
1586 defer zig_code_file.close();1580 defer zig_code_file.close();
15871581
...@@ -1596,11 +1590,12 @@ fn processOneTarget(job: Job) anyerror!void {...@@ -1596,11 +1590,12 @@ fn processOneTarget(job: Job) anyerror!void {
1596 \\const CpuModel = std.Target.Cpu.Model;1590 \\const CpuModel = std.Target.Cpu.Model;
1597 \\1591 \\
1598 \\pub const Feature = enum {1592 \\pub const Feature = enum {
1599 \\
1600 );1593 );
16011594
1602 for (all_features.items) |feature| {1595 for (all_features.items, 0..) |feature, i| {
1603 try w.print(" {p},\n", .{std.zig.fmtId(feature.zig_name)});1596 try w.print("\n {p},", .{std.zig.fmtId(feature.zig_name)});
1597
1598 if (i == all_features.items.len - 1) try w.writeAll("\n");
1604 }1599 }
16051600
1606 try w.writeAll(1601 try w.writeAll(