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 {
652652 .tvos => "tvos",
653653 .watchos => "watchos",
654654 .driverkit => "driverkit",
655 .shadermodel => "shadermodel",
656655 .visionos => "xros",
657656 .serenity => "serenity",
658657 .bridgeos => "bridgeos",
lib/std/Target.zig+18-9
......@@ -66,13 +66,13 @@ pub const Os = struct {
6666 nvcl,
6767 opencl,
6868 opengl,
69 shadermodel,
7069 vulkan,
7170
7271 // LLVM tags deliberately omitted:
7372 // - darwin
7473 // - kfreebsd
7574 // - nacl
75 // - shadermodel
7676
7777 pub inline fn isDarwin(tag: Tag) bool {
7878 return switch (tag) {
......@@ -178,7 +178,6 @@ pub const Os = struct {
178178 .hermit,
179179 .hurd,
180180 .emscripten,
181 .shadermodel,
182181 .uefi,
183182 .opencl, // TODO: OpenCL versions
184183 .opengl, // TODO: GLSL versions
......@@ -189,7 +188,9 @@ pub const Os = struct {
189188 .other,
190189 => .none,
191190
192 .bridgeos,
191 // This should use semver once we determine the version history.
192 .bridgeos => .none,
193
193194 .driverkit,
194195 .freebsd,
195196 .macos,
......@@ -408,7 +409,6 @@ pub const Os = struct {
408409 .hermit,
409410 .hurd,
410411 .emscripten,
411 .shadermodel,
412412 .uefi,
413413 .opencl, // TODO: OpenCL versions
414414 .opengl, // TODO: GLSL versions
......@@ -613,7 +613,6 @@ pub const Os = struct {
613613 .hurd,
614614 .wasi,
615615 .emscripten,
616 .shadermodel,
617616 .uefi,
618617 .opencl,
619618 .opengl,
......@@ -633,6 +632,7 @@ pub const avr = @import("Target/avr.zig");
633632pub const bpf = @import("Target/bpf.zig");
634633pub const csky = @import("Target/csky.zig");
635634pub const hexagon = @import("Target/hexagon.zig");
635pub const lanai = @import("Target/lanai.zig");
636636pub const loongarch = @import("Target/loongarch.zig");
637637pub const m68k = @import("Target/m68k.zig");
638638pub const mips = @import("Target/mips.zig");
......@@ -646,6 +646,7 @@ pub const s390x = @import("Target/s390x.zig");
646646pub const ve = @import("Target/ve.zig");
647647pub const wasm = @import("Target/wasm.zig");
648648pub const x86 = @import("Target/x86.zig");
649pub const xcore = @import("Target/xcore.zig");
649650pub const xtensa = @import("Target/xtensa.zig");
650651
651652pub const Abi = enum {
......@@ -739,7 +740,6 @@ pub const Abi = enum {
739740 .watchos,
740741 .visionos,
741742 .driverkit,
742 .shadermodel,
743743 .solaris,
744744 .illumos,
745745 .serenity,
......@@ -1419,6 +1419,7 @@ pub const Cpu = struct {
14191419 .bpfel, .bpfeb => &bpf.all_features,
14201420 .csky => &csky.all_features,
14211421 .hexagon => &hexagon.all_features,
1422 .lanai => &lanai.all_features,
14221423 .loongarch32, .loongarch64 => &loongarch.all_features,
14231424 .m68k => &m68k.all_features,
14241425 .mips, .mipsel, .mips64, .mips64el => &mips.all_features,
......@@ -1430,6 +1431,7 @@ pub const Cpu = struct {
14301431 .spirv, .spirv32, .spirv64 => &spirv.all_features,
14311432 .s390x => &s390x.all_features,
14321433 .x86, .x86_64 => &x86.all_features,
1434 .xcore => &xcore.all_features,
14331435 .xtensa => &xtensa.all_features,
14341436 .nvptx, .nvptx64 => &nvptx.all_features,
14351437 .ve => &ve.all_features,
......@@ -1449,6 +1451,7 @@ pub const Cpu = struct {
14491451 .bpfel, .bpfeb => comptime allCpusFromDecls(bpf.cpu),
14501452 .csky => comptime allCpusFromDecls(csky.cpu),
14511453 .hexagon => comptime allCpusFromDecls(hexagon.cpu),
1454 .lanai => comptime allCpusFromDecls(lanai.cpu),
14521455 .loongarch32, .loongarch64 => comptime allCpusFromDecls(loongarch.cpu),
14531456 .m68k => comptime allCpusFromDecls(m68k.cpu),
14541457 .mips, .mipsel, .mips64, .mips64el => comptime allCpusFromDecls(mips.cpu),
......@@ -1460,6 +1463,7 @@ pub const Cpu = struct {
14601463 .spirv, .spirv32, .spirv64 => comptime allCpusFromDecls(spirv.cpu),
14611464 .s390x => comptime allCpusFromDecls(s390x.cpu),
14621465 .x86, .x86_64 => comptime allCpusFromDecls(x86.cpu),
1466 .xcore => comptime allCpusFromDecls(xcore.cpu),
14631467 .xtensa => comptime allCpusFromDecls(xtensa.cpu),
14641468 .nvptx, .nvptx64 => comptime allCpusFromDecls(nvptx.cpu),
14651469 .ve => comptime allCpusFromDecls(ve.cpu),
......@@ -1529,11 +1533,14 @@ pub const Cpu = struct {
15291533 };
15301534 };
15311535 return switch (arch) {
1536 .arc => &arc.cpu.generic,
15321537 .arm, .armeb, .thumb, .thumbeb => &arm.cpu.generic,
15331538 .aarch64, .aarch64_be => &aarch64.cpu.generic,
15341539 .avr => &avr.cpu.avr2,
15351540 .bpfel, .bpfeb => &bpf.cpu.generic,
1541 .csky => &csky.cpu.generic,
15361542 .hexagon => &hexagon.cpu.generic,
1543 .lanai => &lanai.cpu.generic,
15371544 .loongarch32 => &loongarch.cpu.generic_la32,
15381545 .loongarch64 => &loongarch.cpu.generic_la64,
15391546 .m68k => &m68k.cpu.generic,
......@@ -1556,8 +1563,12 @@ pub const Cpu = struct {
15561563 .nvptx, .nvptx64 => &nvptx.cpu.sm_20,
15571564 .ve => &ve.cpu.generic,
15581565 .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,
15611572 };
15621573 }
15631574
......@@ -1873,7 +1884,6 @@ pub const DynamicLinker = struct {
18731884 .amdpal,
18741885 .hermit,
18751886 .hurd,
1876 .shadermodel,
18771887 => none,
18781888 };
18791889 }
......@@ -2366,7 +2376,6 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
23662376 .hermit,
23672377 .hurd,
23682378 .opengl,
2369 .shadermodel,
23702379 => @panic("TODO specify the C integer and float type sizes for this OS"),
23712380 }
23722381}
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 {
134134 .tvos => "tvos",
135135 .watchos => "watchos",
136136 .driverkit => "driverkit",
137 .shadermodel => "shadermodel",
138137 .visionos => "xros",
139138 .serenity => "serenity",
140139 .vulkan => "vulkan",
......@@ -224,7 +223,6 @@ pub fn targetOs(os_tag: std.Target.Os.Tag) llvm.OSType {
224223 .wasi => .WASI,
225224 .emscripten => .Emscripten,
226225 .driverkit => .DriverKit,
227 .shadermodel => .ShaderModel,
228226 .vulkan => .Vulkan,
229227 .serenity => .Serenity,
230228 .bridgeos => .BridgeOS,
test/llvm_targets.zig+278-50
......@@ -2,115 +2,326 @@ const std = @import("std");
22const Cases = @import("src/Cases.zig");
33
44const 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 },
58 .{ .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 },
714 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none },
815 .{ .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 },
1017 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnuilp32 },
18 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },
1119 .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },
12 .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .none },
13 .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .simulator },
20 .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none },
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 },
1425 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none },
1526 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .simulator },
27 .{ .cpu_arch = .aarch64, .os_tag = .uefi, .abi = .none },
1628 .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .none },
1729 .{ .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 },
1933 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .gnu },
34 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .itanium },
2035 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .msvc },
36
2137 .{ .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 },
2240 .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .none },
41 .{ .cpu_arch = .aarch64_be, .os_tag = .netbsd, .abi = .none },
42
2343 .{ .cpu_arch = .amdgcn, .os_tag = .amdhsa, .abi = .none },
2444 .{ .cpu_arch = .amdgcn, .os_tag = .amdpal, .abi = .none },
25 .{ .cpu_arch = .amdgcn, .os_tag = .linux, .abi = .none },
26 //.{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none },
45 .{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none },
46
2747 .{ .cpu_arch = .arc, .os_tag = .freestanding, .abi = .none },
48 .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .gnu },
2849 .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .none },
29 .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .none },
30 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .none },
31 .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .none },
32 .{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .none },
33 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .none },
34 .{ .cpu_arch = .avr, .os_tag = .freebsd, .abi = .none },
50
51 .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabi },
52 .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabihf },
53 .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabi },
54 .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabihf },
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
3587 .{ .cpu_arch = .avr, .os_tag = .freestanding, .abi = .none },
36 .{ .cpu_arch = .avr, .os_tag = .linux, .abi = .none },
37 .{ .cpu_arch = .bpfel, .os_tag = .linux, .abi = .gnu },
38 .{ .cpu_arch = .bpfel, .os_tag = .linux, .abi = .none },
39 .{ .cpu_arch = .bpfeb, .os_tag = .linux, .abi = .gnu },
40 .{ .cpu_arch = .bpfeb, .os_tag = .linux, .abi = .none },
41 .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .none },
42 .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .none },
88 .{ .cpu_arch = .avr, .os_tag = .rtems, .abi = .none },
89
90 .{ .cpu_arch = .bpfeb, .os_tag = .freestanding, .abi = .none },
91
92 .{ .cpu_arch = .bpfel, .os_tag = .freestanding, .abi = .none },
93
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 },
43102 .{ .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
44122 .{ .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 },
45125 .{ .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 },
46136 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .gnueabihf },
47 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musl },
48 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .none },
137 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musleabi },
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 },
49151 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .gnueabihf },
50 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musl },
51 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .none },
152 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musleabi },
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 },
52164 .{ .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 },
53173 .{ .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
55177 .{ .cpu_arch = .msp430, .os_tag = .freestanding, .abi = .none },
56 .{ .cpu_arch = .msp430, .os_tag = .linux, .abi = .none },
57 //.{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none },
58 //.{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none },
59 .{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .none },
60 .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .none },
178
179 .{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none },
180 .{ .cpu_arch = .nvptx, .os_tag = .nvcl, .abi = .none },
181 .{ .cpu_arch = .nvptx64, .os_tag = .cuda, .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 },
61194 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .gnueabihf },
62 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musl },
63 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .none },
64 .{ .cpu_arch = .powerpcle, .os_tag = .freebsd, .abi = .none },
65 .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .none },
66 .{ .cpu_arch = .powerpcle, .os_tag = .linux, .abi = .gnu },
67 .{ .cpu_arch = .powerpcle, .os_tag = .linux, .abi = .musl },
68 .{ .cpu_arch = .powerpcle, .os_tag = .linux, .abi = .none },
195 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabi },
196 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabihf },
197 .{ .cpu_arch = .powerpc, .os_tag = .netbsd, .abi = .eabi },
198 .{ .cpu_arch = .powerpc, .os_tag = .netbsd, .abi = .eabihf },
199 .{ .cpu_arch = .powerpc, .os_tag = .openbsd, .abi = .eabi },
200 .{ .cpu_arch = .powerpc, .os_tag = .openbsd, .abi = .eabihf },
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 },
69208 .{ .cpu_arch = .powerpc64, .os_tag = .freebsd, .abi = .none },
70209 .{ .cpu_arch = .powerpc64, .os_tag = .freestanding, .abi = .none },
71210 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .gnu },
72211 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .musl },
73212 .{ .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
74216 .{ .cpu_arch = .powerpc64le, .os_tag = .freebsd, .abi = .none },
75217 .{ .cpu_arch = .powerpc64le, .os_tag = .freestanding, .abi = .none },
76218 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .gnu },
77219 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .musl },
78220 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .none },
221
79222 .{ .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 },
80225 .{ .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 },
81230 .{ .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 },
82234 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .gnu },
83235 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .musl },
84236 .{ .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
85243 .{ .cpu_arch = .s390x, .os_tag = .freestanding, .abi = .none },
86244 .{ .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
87248 .{ .cpu_arch = .sparc, .os_tag = .freestanding, .abi = .none },
88249 .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .gnu },
89250 .{ .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 },
90255 .{ .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 },
91258 .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .gnu },
92 //.{ .cpu_arch = .spirv32, .os_tag = .opencl, .abi = .none },
93 //.{ .cpu_arch = .spirv32, .os_tag = .opengl, .abi = .none },
94 //.{ .cpu_arch = .spirv32, .os_tag = .vulkan, .abi = .none },
95 //.{ .cpu_arch = .spirv64, .os_tag = .opencl, .abi = .none },
96 //.{ .cpu_arch = .spirv64, .os_tag = .opengl, .abi = .none },
97 //.{ .cpu_arch = .spirv64, .os_tag = .vulkan, .abi = .none },
98 .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .none },
99 .{ .cpu_arch = .thumbeb, .os_tag = .freestanding, .abi = .none },
259 .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .none },
260 .{ .cpu_arch = .sparc64, .os_tag = .netbsd, .abi = .none },
261 .{ .cpu_arch = .sparc64, .os_tag = .openbsd, .abi = .none },
262 .{ .cpu_arch = .sparc64, .os_tag = .rtems, .abi = .none },
263 .{ .cpu_arch = .sparc64, .os_tag = .solaris, .abi = .none },
264
265 .{ .cpu_arch = .thumb, .os_tag = .freebsd, .abi = .eabi },
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 },
100297 .{ .cpu_arch = .ve, .os_tag = .linux, .abi = .none },
298
101299 .{ .cpu_arch = .wasm32, .os_tag = .emscripten, .abi = .none },
102300 .{ .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 },
104302 .{ .cpu_arch = .wasm32, .os_tag = .wasi, .abi = .none },
303
105304 .{ .cpu_arch = .wasm64, .os_tag = .emscripten, .abi = .none },
106305 .{ .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 },
108307 .{ .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 },
109311 .{ .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 },
110316 .{ .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 },
111320 .{ .cpu_arch = .x86, .os_tag = .uefi, .abi = .none },
112321 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .gnu },
322 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .itanium },
113323 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .msvc },
324
114325 .{ .cpu_arch = .x86_64, .os_tag = .freebsd, .abi = .none },
115326 .{ .cpu_arch = .x86_64, .os_tag = .freestanding, .abi = .none },
116327 .{
......@@ -120,15 +331,32 @@ const targets = [_]std.Target.Query{
120331 .cpu_features_add = std.Target.x86.featureSet(&.{.soft_float}),
121332 .cpu_features_sub = std.Target.x86.featureSet(&.{ .mmx, .sse, .sse2, .avx, .avx2 }),
122333 },
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 },
123342 .{ .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 },
127343 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none },
128344 .{ .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 },
129351 .{ .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 },
130354 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu },
355 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .itanium },
131356 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .msvc },
357
358 .{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none },
359
132360 .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none },
133361 .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none },
134362};
tools/update_cpu_features.zig+4-9
......@@ -1576,12 +1576,6 @@ fn processOneTarget(job: Job) anyerror!void {
15761576
15771577 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
15851579 var zig_code_file = try target_dir.createFile(zig_code_basename, .{});
15861580 defer zig_code_file.close();
15871581
......@@ -1596,11 +1590,12 @@ fn processOneTarget(job: Job) anyerror!void {
15961590 \\const CpuModel = std.Target.Cpu.Model;
15971591 \\
15981592 \\pub const Feature = enum {
1599 \\
16001593 );
16011594
1602 for (all_features.items) |feature| {
1603 try w.print(" {p},\n", .{std.zig.fmtId(feature.zig_name)});
1595 for (all_features.items, 0..) |feature, i| {
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");
16041599 }
16051600
16061601 try w.writeAll(