authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2026-10-15 14:12:30-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-10-21 10:05:31-07:00
log3cc4f2f0dc660ff505ad35ee68b8f66484648530
tree64685490cff3dfdf9c293d2bcd0459d8082c7012
parent1157dd95714e57a699f06066ccfc7ed511ebf43f

test/llvm-targets: convert to new runner


18 files changed, 965 insertions(+), 620 deletions(-)

build.zig+8-6
...@@ -504,12 +504,6 @@ pub fn build(b: *std.Build) !void {...@@ -504,12 +504,6 @@ pub fn build(b: *std.Build) !void {
504 .skip_linux = skip_linux,504 .skip_linux = skip_linux,
505 .skip_llvm = skip_llvm,505 .skip_llvm = skip_llvm,
506 .skip_libc = skip_libc,506 .skip_libc = skip_libc,
507 }, .{
508 .enable_llvm = enable_llvm,
509 .llvm_has_m68k = llvm_has_m68k,
510 .llvm_has_csky = llvm_has_csky,
511 .llvm_has_arc = llvm_has_arc,
512 .llvm_has_xtensa = llvm_has_xtensa,
513 });507 });
514 test_step.dependOn(test_cases_step);508 test_step.dependOn(test_cases_step);
515509
...@@ -804,6 +798,10 @@ pub fn build(b: *std.Build) !void {...@@ -804,6 +798,10 @@ pub fn build(b: *std.Build) !void {
804 .skip_darwin = skip_darwin,798 .skip_darwin = skip_darwin,
805 .skip_linux = skip_linux,799 .skip_linux = skip_linux,
806 .skip_llvm = skip_llvm,800 .skip_llvm = skip_llvm,
801 .llvm_has_m68k = llvm_has_m68k,
802 .llvm_has_csky = llvm_has_csky,
803 .llvm_has_arc = llvm_has_arc,
804 .llvm_has_xtensa = llvm_has_xtensa,
807 .gdb = b.option([]const u8, "gdb", "path to gdb binary"),805 .gdb = b.option([]const u8, "gdb", "path to gdb binary"),
808 .lldb = b.option([]const u8, "lldb", "path to lldb binary"),806 .lldb = b.option([]const u8, "lldb", "path to lldb binary"),
809 };807 };
...@@ -821,6 +819,10 @@ pub fn build(b: *std.Build) !void {...@@ -821,6 +819,10 @@ pub fn build(b: *std.Build) !void {
821 const test_llvm_ir_step = b.step("test-llvm-ir", "Run the LLVM IR tests");819 const test_llvm_ir_step = b.step("test-llvm-ir", "Run the LLVM IR tests");
822 try tests.addRunnerTests(b, runner, test_llvm_ir_step, "test/llvm-ir", @import("test/llvm-ir/matrix.zon"), runner_opts);820 try tests.addRunnerTests(b, runner, test_llvm_ir_step, "test/llvm-ir", @import("test/llvm-ir/matrix.zon"), runner_opts);
823 test_step.dependOn(test_llvm_ir_step);821 test_step.dependOn(test_llvm_ir_step);
822
823 const test_llvm_targets_step = b.step("test-llvm-targets", "Run the LLVM targets tests");
824 try tests.addRunnerTests(b, runner, test_llvm_targets_step, "test/llvm-targets", @import("test/llvm-targets/matrix.zon"), runner_opts);
825 test_step.dependOn(test_llvm_targets_step);
824}826}
825827
826fn addWasiUpdateStep(b: *std.Build, version: [:0]const u8) !void {828fn addWasiUpdateStep(b: *std.Build, version: [:0]const u8) !void {
lib/std/Target/Query.zig+61-97
...@@ -261,13 +261,11 @@ pub fn parse(args: ParseOptions) !Query {...@@ -261,13 +261,11 @@ pub fn parse(args: ParseOptions) !Query {
261 if (abi_it.next() != null) {261 if (abi_it.next() != null) {
262 if (abi.isGnu()) {262 if (abi.isGnu()) {
263 result.glibc_version = parseVersion(abi_ver_text) catch |err| switch (err) {263 result.glibc_version = parseVersion(abi_ver_text) catch |err| switch (err) {
264 error.Overflow => return error.InvalidAbiVersion,264 error.Overflow, error.InvalidVersion => return error.InvalidAbiVersion,
265 error.InvalidVersion => return error.InvalidAbiVersion,
266 };265 };
267 } else if (abi.isAndroid()) {266 } else if (abi.isAndroid()) {
268 result.android_api_level = std.fmt.parseUnsigned(u32, abi_ver_text, 10) catch |err| switch (err) {267 result.android_api_level = std.fmt.parseUnsigned(u32, abi_ver_text, 10) catch |err| switch (err) {
269 error.InvalidCharacter => return error.InvalidVersion,268 error.InvalidCharacter, error.Overflow => return error.InvalidAbiVersion,
270 error.Overflow => |e| return e,
271 };269 };
272 } else {270 } else {
273 return error.InvalidAbiVersion;271 return error.InvalidAbiVersion;
...@@ -428,139 +426,105 @@ pub fn canDetectLibC(self: Query) bool {...@@ -428,139 +426,105 @@ pub fn canDetectLibC(self: Query) bool {
428 return false;426 return false;
429}427}
430428
431/// Formats a version with the patch component omitted if it is zero,429/// Prints a version with the patch component omitted if it is zero,
432/// unlike SemanticVersion.format which formats all its version components regardless.430/// unlike SemanticVersion.format which formats all its version components regardless.
433fn formatVersion(version: SemanticVersion, gpa: Allocator, list: *ArrayList(u8)) !void {431pub const PrintVersion = struct {
434 if (version.patch == 0) {432 version: SemanticVersion,
435 try list.print(gpa, "{d}.{d}", .{ version.major, version.minor });433 pub fn format(print: PrintVersion, w: *std.Io.Writer) std.Io.Writer.Error!void {
436 } else {434 try w.print("{d}.{d}", .{ print.version.major, print.version.minor });
437 try list.print(gpa, "{d}.{d}.{d}", .{ version.major, version.minor, version.patch });435 switch (print.version.patch) {
436 0 => {},
437 else => |patch| try w.print(".{d}", .{patch}),
438 }
438 }439 }
439}440};
440
441pub fn zigTriple(self: Query, gpa: Allocator) Allocator.Error![]u8 {
442 if (self.isNativeTriple()) return gpa.dupe(u8, "native");
443
444 const arch_name = if (self.cpu_arch) |arch| @tagName(arch) else "native";
445 const os_name = if (self.os_tag) |os_tag| @tagName(os_tag) else "native";
446441
447 var result: ArrayList(u8) = .empty;442pub fn printZigTriple(query: *const Query, w: *std.Io.Writer) std.Io.Writer.Error!void {
448 defer result.deinit(gpa);443 if (query.isNativeTriple()) return w.writeAll("native");
449444
450 try result.print(gpa, "{s}-{s}", .{ arch_name, os_name });445 try w.print("{s}-{s}", .{
446 if (query.cpu_arch) |arch| @tagName(arch) else "native",
447 if (query.os_tag) |os_tag| @tagName(os_tag) else "native",
448 });
451449
452 // The zig target syntax does not allow specifying a max os version with no min, so450 // The zig target syntax does not allow specifying a max os version with no min, so
453 // if either are present, we need the min.451 // if either are present, we need the min.
454 if (self.os_version_min) |min| {452 if (query.os_version_min) |min| {
455 switch (min) {453 switch (min) {
456 .none => {},454 .none => {},
457 .semver => |v| {455 .semver => |v| try w.print(".{f}", .{PrintVersion{ .version = v }}),
458 try result.appendSlice(gpa, ".");456 .windows => |v| try w.print("{f}", .{v}),
459 try formatVersion(v, gpa, &result);
460 },
461 .windows => |v| {
462 try result.print(gpa, "{f}", .{v});
463 },
464 }457 }
465 }458 }
466 if (self.os_version_max) |max| {459 if (query.os_version_max) |max| {
467 switch (max) {460 switch (max) {
468 .none => {},461 .none => {},
469 .semver => |v| {462 .semver => |v| try w.print("...{f}", .{PrintVersion{ .version = v }}),
470 try result.appendSlice(gpa, "...");463 // This is counting on a custom format() function defined on `WindowsVersion`
471 try formatVersion(v, gpa, &result);464 // to add a prefix '.' and make there be a total of three dots.
472 },465 .windows => |v| try w.print("..{f}", .{v}),
473 .windows => |v| {
474 // This is counting on a custom format() function defined on `WindowsVersion`
475 // to add a prefix '.' and make there be a total of three dots.
476 try result.print(gpa, "..{f}", .{v});
477 },
478 }466 }
479 }467 }
480468
481 if (self.glibc_version) |v| {469 if (query.glibc_version) |v| {
482 const name = @tagName(self.abi.?);470 try w.print("-{t}.{f}", .{ query.abi.?, PrintVersion{ .version = v } });
483 try result.ensureUnusedCapacity(gpa, name.len + 2);471 } else if (query.android_api_level) |lvl| {
484 result.appendAssumeCapacity('-');472 try w.print("-{t}.{d}", .{ query.abi.?, lvl });
485 result.appendSliceAssumeCapacity(name);473 } else if (query.abi) |abi| {
486 result.appendAssumeCapacity('.');474 try w.print("-{t}", .{abi});
487 try formatVersion(v, gpa, &result);
488 } else if (self.android_api_level) |lvl| {
489 const name = @tagName(self.abi.?);
490 try result.ensureUnusedCapacity(gpa, name.len + 2);
491 result.appendAssumeCapacity('-');
492 result.appendSliceAssumeCapacity(name);
493 result.appendAssumeCapacity('.');
494 try result.print(gpa, "{d}", .{lvl});
495 } else if (self.abi) |abi| {
496 const name = @tagName(abi);
497 try result.ensureUnusedCapacity(gpa, name.len + 1);
498 result.appendAssumeCapacity('-');
499 result.appendSliceAssumeCapacity(name);
500 }475 }
501
502 return result.toOwnedSlice(gpa);
503}476}
504477
505/// Renders the query into a textual representation that can be parsed via the478/// Prints the query into a textual representation that can be parsed via the
506/// `-mcpu` flag passed to the Zig compiler.479/// `-mcpu` flag passed to the Zig compiler.
507/// Appends the result to `buffer`.480pub fn printCpu(query: *const Query, w: *std.Io.Writer) std.Io.Writer.Error!void {
508pub fn serializeCpu(q: Query, buffer: *std.array_list.Managed(u8)) Allocator.Error!void {481 cpu_model: switch (query.cpu_model) {
509 try buffer.ensureUnusedCapacity(8);482 .native, .baseline => |_, cpu_model| try w.print("{t}", .{cpu_model}),
510 switch (q.cpu_model) {483 .determined_by_arch_os => continue :cpu_model if (query.cpu_arch) |_| .baseline else .native,
511 .native => {484 .explicit => |model| try w.writeAll(model.name),
512 buffer.appendSliceAssumeCapacity("native");
513 },
514 .baseline => {
515 buffer.appendSliceAssumeCapacity("baseline");
516 },
517 .determined_by_arch_os => {
518 if (q.cpu_arch == null) {
519 buffer.appendSliceAssumeCapacity("native");
520 } else {
521 buffer.appendSliceAssumeCapacity("baseline");
522 }
523 },
524 .explicit => |model| {
525 try buffer.appendSlice(model.name);
526 },
527 }485 }
528486
529 if (q.cpu_features_add.isEmpty() and q.cpu_features_sub.isEmpty()) {487 if (query.cpu_features_add.isEmpty() and query.cpu_features_sub.isEmpty()) {
530 // The CPU name alone is sufficient.488 // The CPU name alone is sufficient.
531 return;489 return;
532 }490 }
533491
534 const cpu_arch = q.cpu_arch orelse builtin.cpu.arch;492 const cpu_arch = query.cpu_arch orelse builtin.cpu.arch;
535 const all_features = cpu_arch.allFeaturesList();493 const all_features = cpu_arch.allFeaturesList();
536494
537 for (all_features, 0..) |feature, i_usize| {495 for (all_features, 0..) |feature, i_usize| {
538 const i: Target.Cpu.Feature.Set.Index = @intCast(i_usize);496 const i: Target.Cpu.Feature.Set.Index = @intCast(i_usize);
539 try buffer.ensureUnusedCapacity(feature.name.len + 1);497 if (query.cpu_features_sub.isEnabled(i)) {
540 if (q.cpu_features_sub.isEnabled(i)) {498 try w.print("-{s}", .{feature.name});
541 buffer.appendAssumeCapacity('-');499 } else if (query.cpu_features_add.isEnabled(i)) {
542 buffer.appendSliceAssumeCapacity(feature.name);500 try w.print("+{s}", .{feature.name});
543 } else if (q.cpu_features_add.isEnabled(i)) {
544 buffer.appendAssumeCapacity('+');
545 buffer.appendSliceAssumeCapacity(feature.name);
546 }501 }
547 }502 }
548}503}
549504
550pub fn serializeCpuAlloc(q: Query, ally: Allocator) Allocator.Error![]u8 {505/// Deprecated; use `printZigTriple` instead. Will be removed in 0.19.0.
551 var buffer = std.array_list.Managed(u8).init(ally);506pub fn zigTriple(query: Query, gpa: Allocator) Allocator.Error![]u8 {
552 try serializeCpu(q, &buffer);507 return gpa.print("{f}", .{std.fmt.alt(&query, .printZigTriple)});
553 return buffer.toOwnedSlice();508}
509
510/// Deprecated; use `printCpu` instead. Will be removed in 0.19.0.
511pub fn serializeCpu(query: Query, buffer: *std.array_list.Managed(u8)) Allocator.Error!void {
512 try buffer.print("{f}", .{std.fmt.alt(&query, .printCpu)});
513}
514
515/// Deprecated; use `printCpu` instead. Will be removed in 0.19.0.
516pub fn serializeCpuAlloc(query: Query, gpa: Allocator) Allocator.Error![]u8 {
517 return gpa.print("{f}", .{std.fmt.alt(&query, .printCpu)});
554}518}
555519
556/// Deprecated; use `zigTriple` instead. Will be removed in 0.18.0.520/// Deprecated; use `zigTriple` instead. Will be removed in 0.18.0.
557pub fn allocDescription(self: Query, allocator: Allocator) ![]u8 {521pub fn allocDescription(query: Query, allocator: Allocator) ![]u8 {
558 return self.zigTriple(allocator);522 return query.zigTriple(allocator);
559}523}
560524
561/// Deprecated; set `glibc_version` directly. Will be removed in 0.18.0.525/// Deprecated; set `glibc_version` directly. Will be removed in 0.18.0.
562pub fn setGnuLibCVersion(self: *Query, major: u32, minor: u32, patch: u32) void {526pub fn setGnuLibCVersion(query: *Query, major: u32, minor: u32, patch: u32) void {
563 self.glibc_version = SemanticVersion{ .major = major, .minor = minor, .patch = patch };527 query.glibc_version = SemanticVersion{ .major = major, .minor = minor, .patch = patch };
564}528}
565529
566fn parseOs(result: *Query, diags: *ParseOptions.Diagnostics, text: []const u8) !void {530fn parseOs(result: *Query, diags: *ParseOptions.Diagnostics, text: []const u8) !void {
test/Runner.zig+303-6
...@@ -3,6 +3,256 @@ const builtin = @import("builtin");...@@ -3,6 +3,256 @@ const builtin = @import("builtin");
3const std = @import("std");3const std = @import("std");
4const Runner = @This();4const Runner = @This();
55
6/// These are passed as `<target>-<cache_mode>-<backend>-<linker>-<pic>` strings.
7///
8/// If only one specific test is failing on a target, instead of entirely disabling the target here, you
9/// can skip the target for that specific test only by adding a line like this to top of the manifest:
10///
11/// #skip x86_64-linux-none-baseline-whole-selfhosted-new-pic
12pub const Target = struct {
13 cpu: Cpu = .{ .native = .{} },
14 os: Os = .native,
15 abi: Abi = .default,
16 ofmt: ObjectFormat = .default,
17 dynamic_linker: DynamicLinker = .default,
18
19 cache_mode: enum { whole, incremental },
20 backend: enum { selfhosted, llvm, llvmir, cbe },
21 linker: enum { lld, old, new },
22 pic: enum { nopic, pic, pie },
23
24 pub const Cpu = Cpu: {
25 @setEvalBranchQuota(3_000);
26 const Arch = std.Target.Cpu.Arch;
27 const arch_info = @typeInfo(Arch).@"enum";
28 const field_names = .{"native"} ++ arch_info.field_names;
29 var field_types: [field_names.len]type = undefined;
30 field_types[0] = struct {
31 model: Model = .native,
32
33 pub const Model = enum { native, baseline };
34 };
35 for (field_types[1..], field_names[1..]) |*field_type, field_name| {
36 const arch = @field(Arch, field_name);
37 const models = arch.allCpuModels();
38 const family = @field(std.Target, @tagName(arch.family()));
39 field_type.* = struct {
40 model: Model = .baseline,
41 features: struct {
42 add: []const Feature = &.{},
43 remove: []const Feature = &.{},
44 comptime {
45 _ = &family; // hack around compiler bug
46 }
47 } = .{},
48
49 pub const Model = Model: {
50 const explicit_models = @typeInfo(family.cpu).@"struct".decl_names;
51 var model_names: []const []const u8 = &.{"native"};
52 if (!@hasDecl(family.cpu, "baseline")) model_names = model_names ++ .{"baseline"};
53 model_names = model_names ++ explicit_models;
54 const TagInt = std.math.IntFittingRange(0, model_names.len - 1);
55 var model_values: [model_names.len]TagInt = undefined;
56 var model_index = 0;
57 {
58 var model_value = explicit_models.len;
59 model_values[model_index] = model_value;
60 model_index += 1;
61 model_value += 1;
62 if (!@hasDecl(family.cpu, "baseline")) {
63 model_values[model_index] = model_value;
64 model_index += 1;
65 model_value += 1;
66 }
67 }
68 for (model_values[model_index..], 0..) |*model_value, value| model_value.* = value;
69 break :Model @Enum(TagInt, .exhaustive, model_names, &model_values);
70 };
71
72 pub const Feature = family.Feature;
73
74 pub fn updateQuery(cpu: *const @This(), query: *std.Target.Query) void {
75 query.cpu_model = switch (cpu.model) {
76 .native => .native,
77 .baseline => .baseline,
78 else => |model| .{ .explicit = models[@backingInt(model)] },
79 };
80 for (cpu.features.add) |add_feature|
81 query.cpu_features_add.addFeature(@backingInt(add_feature));
82 for (cpu.features.remove) |remove_feature|
83 query.cpu_features_sub.addFeature(@backingInt(remove_feature));
84 }
85 };
86 }
87 const TagInt = std.math.IntFittingRange(0, field_names.len - 1);
88 var field_values: [field_names.len]TagInt = undefined;
89 field_values[0] = field_names.len - 1;
90 for (field_values[1..], arch_info.field_values) |*field_value, value| field_value.* = value;
91 const Tag = @Enum(TagInt, .exhaustive, field_names, &field_values);
92 break :Cpu @Union(.auto, Tag, field_names, &field_types, &@splat(.{}));
93 };
94
95 pub const Os = Os: {
96 const os_info = @typeInfo(std.Target.Os.Tag).@"enum";
97 const field_names = .{"native"} ++ os_info.field_names;
98 var field_types: [field_names.len]type = undefined;
99 field_types[0] = void;
100 for (field_types[1..], field_names[1..]) |*field_type, field_name| {
101 const version: enum {
102 none,
103 semver,
104 windows,
105 } = switch (@field(std.Target.Os.Tag, field_name).versionRangeTag()) {
106 .none => .none,
107 .semver, .hurd, .linux => .semver,
108 .windows => .windows,
109 };
110 field_type.* = struct {
111 version: ?Version = null,
112
113 pub const Version = switch (version) {
114 .none => struct {},
115 .semver => struct {
116 min: std.SemanticVersion,
117 max: ?std.SemanticVersion = null,
118 },
119 .windows => struct {
120 min: std.Target.Os.WindowsVersion,
121 max: ?std.Target.Os.WindowsVersion = null,
122 },
123 };
124
125 pub fn updateQuery(os: *const @This(), query: *std.Target.Query) void {
126 if (os.version) |v| switch (version) {
127 .none => {},
128 .semver => {
129 query.os_version_min = .{ .semver = v.min };
130 if (v.max) |max| query.os_version_max = .{ .semver = max };
131 },
132 .windows => {
133 query.os_version_min = .{ .windows = v.min };
134 if (v.max) |max| query.os_version_max = .{ .windows = max };
135 },
136 };
137 }
138 };
139 }
140 const TagInt = std.math.IntFittingRange(0, field_names.len - 1);
141 var field_values: [field_names.len]TagInt = undefined;
142 field_values[0] = field_names.len - 1;
143 for (field_values[1..], os_info.field_values) |*field_value, value| field_value.* = value;
144 const Tag = @Enum(TagInt, .exhaustive, field_names, &field_values);
145 break :Os @Union(.auto, Tag, field_names, &field_types, &@splat(.{}));
146 };
147
148 pub const Abi = Abi: {
149 const abi_info = @typeInfo(std.Target.Abi).@"enum";
150 const field_names = .{"default"} ++ abi_info.field_names;
151 var field_types: [field_names.len]type = undefined;
152 field_types[0] = void;
153 for (field_types[1..], field_names[1..]) |*field_type, field_name| {
154 const abi_tag = @field(std.Target.Abi, field_name);
155 const version: enum { none, libc, android } = if (abi_tag.isAndroid())
156 .android
157 else if (abi_tag.isGnu() or abi_tag.isMusl())
158 .libc
159 else
160 .none;
161 field_type.* = struct {
162 version: ?Version = null,
163
164 pub const Version = switch (version) {
165 .none => struct {},
166 .libc => std.SemanticVersion,
167 .android => u32,
168 };
169
170 pub fn updateQuery(abi: *const @This(), query: *std.Target.Query) void {
171 if (abi.version) |v| switch (version) {
172 .none => {},
173 .libc => query.glibc_version = v,
174 .android => query.android_api_level = v,
175 };
176 }
177 };
178 }
179 const TagInt = std.math.IntFittingRange(0, field_names.len - 1);
180 var field_values: [field_names.len]TagInt = undefined;
181 field_values[0] = field_names.len - 1;
182 for (field_values[1..], abi_info.field_values) |*field_value, value| field_value.* = value;
183 const Tag = @Enum(TagInt, .exhaustive, field_names, &field_values);
184 break :Abi @Union(.auto, Tag, field_names, &field_types, &@splat(.{}));
185 };
186
187 pub const ObjectFormat = ObjectFormat: {
188 const ofmt_info = @typeInfo(std.Target.ObjectFormat).@"enum";
189 const field_names = .{"default"} ++ ofmt_info.field_names;
190 const TagInt = std.math.IntFittingRange(0, field_names.len - 1);
191 var field_values: [field_names.len]TagInt = undefined;
192 field_values[0] = field_names.len - 1;
193 for (field_values[1..], ofmt_info.field_values) |*field_value, value| field_value.* = value;
194 break :ObjectFormat @Enum(TagInt, .exhaustive, field_names, &field_values);
195 };
196
197 pub const DynamicLinker = union(enum) {
198 default,
199 none,
200 explicit: []const u8,
201 };
202
203 pub fn toQuery(target: *const Target) std.Target.Query {
204 var query: std.Target.Query = .{};
205 query.cpu_arch = switch (target.cpu) {
206 .native => null,
207 else => |_, arch| @fromBackingInt(@backingInt(arch)),
208 };
209 switch (target.cpu) {
210 .native => |native| query.cpu_model = switch (native.model) {
211 .native => .native,
212 .baseline => .baseline,
213 },
214 inline else => |cpu| cpu.updateQuery(&query),
215 }
216 query.os_tag = switch (target.os) {
217 .native => null,
218 else => |_, os| @fromBackingInt(@backingInt(os)),
219 };
220 switch (target.os) {
221 .native => {},
222 inline else => |os| os.updateQuery(&query),
223 }
224 query.abi = switch (target.abi) {
225 .default => null,
226 else => |_, abi| @fromBackingInt(@backingInt(abi)),
227 };
228 switch (target.abi) {
229 .default => {},
230 inline else => |abi| abi.updateQuery(&query),
231 }
232 query.ofmt = switch (target.ofmt) {
233 .default => null,
234 else => |ofmt| @fromBackingInt(@backingInt(ofmt)),
235 };
236 query.dynamic_linker = switch (target.dynamic_linker) {
237 .default => null,
238 .none => .none,
239 .explicit => |dynamic_linker| .init(dynamic_linker),
240 };
241 return query;
242 }
243
244 pub fn format(target: *const Target, w: *std.Io.Writer) std.Io.Writer.Error!void {
245 try w.print("{f}-{f}-{t}-{t}-{t}-{t}", .{
246 std.fmt.alt(&target.toQuery(), .printZigTriple),
247 std.fmt.alt(&target.toQuery(), .printCpu),
248 target.cache_mode,
249 target.backend,
250 target.linker,
251 target.pic,
252 });
253 }
254};
255
6gpa: std.mem.Allocator,256gpa: std.mem.Allocator,
7arena: *std.heap.ArenaAllocator,257arena: *std.heap.ArenaAllocator,
8environ_map: std.process.Environ.Map,258environ_map: std.process.Environ.Map,
...@@ -908,22 +1158,69 @@ fn handleCommand(...@@ -908,22 +1158,69 @@ fn handleCommand(
908 return update.fail("target {q} unknown cache mode {q}", .{1158 return update.fail("target {q} unknown cache mode {q}", .{
909 update.target_query, cache_mode_str,1159 update.target_query, cache_mode_str,
910 });1160 });
911 const triple = component_it.rest();1161 const triple_cpu = component_it.rest();
1162 var triple_len: usize = 0;
1163 for (0..3) |_| {
1164 triple_len = if (std.mem.findScalarPos(u8, triple_cpu, triple_len, '-')) |dash_pos|
1165 dash_pos + 1
1166 else
1167 return update.fail("target {q} missing cpu", .{update.target_query});
1168 if (std.mem.eql(u8, triple_cpu[0..triple_len], "native-")) break;
1169 }
1170 const triple = triple_cpu[0 .. triple_len - 1];
1171 const cpu = triple_cpu[triple_len..];
1172 var query_parse_diags: std.Target.Query.ParseOptions.Diagnostics = undefined;
912 break :target .{1173 break :target .{
913 .triple = triple,1174 .triple = triple,
914 .resolved = std.zig.system.resolveTargetQuery(1175 .resolved = std.zig.system.resolveTargetQuery(
915 runner.io,1176 runner.io,
916 std.Build.parseTargetQuery(.{1177 std.Target.Query.parse(.{
917 .arch_os_abi = triple,1178 .arch_os_abi = triple,
1179 .cpu_features = cpu,
918 .object_format = switch (backend) {1180 .object_format = switch (backend) {
919 .sema, .selfhosted, .llvm => null,1181 .sema, .selfhosted, .llvm => null,
920 .llvmir => "llvmir",1182 .llvmir => "llvmir",
921 .cbe => "c",1183 .cbe => "c",
922 },1184 },
1185 .diagnostics = &query_parse_diags,
923 }) catch |err| switch (err) {1186 }) catch |err| switch (err) {
924 error.ParseFailed => return update.fail("unable to parse triple {q}", .{1187 error.UnknownArchitecture => return update.fail(
925 triple,1188 "unable to resolve target {q}: unknown architecture: {q}",
926 }),1189 .{ update.target_query, query_parse_diags.unknown_architecture_name.? },
1190 ),
1191 error.MissingOperatingSystem => return update.fail(
1192 "unable to resolve target {q}: missing operating system",
1193 .{update.target_query},
1194 ),
1195 error.UnknownOperatingSystem => return update.fail(
1196 "unable to resolve target {q}: unknown operating system: {q}",
1197 .{ update.target_query, query_parse_diags.os_name.? },
1198 ),
1199 error.InvalidOperatingSystemVersion => return update.fail(
1200 "unable to resolve target {q}: invalid operating system version",
1201 .{update.target_query},
1202 ),
1203 error.UnknownApplicationBinaryInterface => return update.fail(
1204 "unable to resolve target {q}: unknown abi",
1205 .{update.target_query},
1206 ),
1207 error.InvalidAbiVersion => return update.fail(
1208 "unable to resolve target {q}: invalid abi version",
1209 .{update.target_query},
1210 ),
1211 error.UnexpectedExtraField => unreachable, // validated above
1212 error.UnknownCpuModel => return update.fail(
1213 "unable to resolve target {q}: unknown cpu: {q}",
1214 .{ update.target_query, query_parse_diags.cpu_name.? },
1215 ),
1216 error.UnknownCpuFeature => return update.fail(
1217 "unable to resolve target {q}: unknown cpu feature: {q}",
1218 .{ update.target_query, query_parse_diags.unknown_feature_name.? },
1219 ),
1220 error.UnknownObjectFormat => return update.fail(
1221 "unable to resolve target {q}: unknown object format",
1222 .{update.target_query},
1223 ),
927 },1224 },
928 ) catch |err| switch (err) {1225 ) catch |err| switch (err) {
929 error.Canceled => |e| return e,1226 error.Canceled => |e| return e,
...@@ -1265,7 +1562,7 @@ const Compiler = struct {...@@ -1265,7 +1562,7 @@ const Compiler = struct {
1265 mr_buffer: std.Io.File.MultiReader.Buffer(2),1562 mr_buffer: std.Io.File.MultiReader.Buffer(2),
1266 mr: std.Io.File.MultiReader,1563 mr: std.Io.File.MultiReader,
1267 client: std.zig.Client,1564 client: std.zig.Client,
1268 target: Target,1565 target: Compiler.Target,
1269 out_name: []const u8,1566 out_name: []const u8,
1270 config: ?std.zig.Server.Message.Config,1567 config: ?std.zig.Server.Message.Config,
12711568
test/cases.zig+1-2
...@@ -9,7 +9,6 @@ pub const BuildOptions = struct {...@@ -9,7 +9,6 @@ pub const BuildOptions = struct {
9 llvm_has_xtensa: bool,9 llvm_has_xtensa: bool,
10};10};
1111
12pub fn addCases(cases: *Cases, build_options: BuildOptions, b: *std.Build) !void {12pub fn addCases(cases: *Cases, b: *std.Build) !void {
13 try @import("compile_errors.zig").addCases(cases, b);13 try @import("compile_errors.zig").addCases(cases, b);
14 try @import("llvm_targets.zig").addCases(cases, build_options, b);
15}14}
test/debugger/enums+4-4
...@@ -1,8 +1,8 @@...@@ -1,8 +1,8 @@
1#todo "passes, but prints errors"1#todo "passes, but prints errors"
2#skip x86_64-linux-none-whole-selfhosted-new-nopic2#skip x86_64-linux-none-baseline-whole-selfhosted-new-nopic
3#skip x86_64-linux-none-whole-selfhosted-new-pic3#skip x86_64-linux-none-baseline-whole-selfhosted-new-pic
4#skip x86_64-linux-none-incremental-selfhosted-new-nopic4#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic
5#skip x86_64-linux-none-incremental-selfhosted-new-pic5#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic
66
7#exe {7#exe {
8--name enums8--name enums
test/debugger/errors+4-4
...@@ -1,8 +1,8 @@...@@ -1,8 +1,8 @@
1#todo "passes, but prints errors"1#todo "passes, but prints errors"
2#skip x86_64-linux-none-whole-selfhosted-new-nopic2#skip x86_64-linux-none-baseline-whole-selfhosted-new-nopic
3#skip x86_64-linux-none-whole-selfhosted-new-pic3#skip x86_64-linux-none-baseline-whole-selfhosted-new-pic
4#skip x86_64-linux-none-incremental-selfhosted-new-nopic4#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic
5#skip x86_64-linux-none-incremental-selfhosted-new-pic5#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic
66
7#exe {7#exe {
8--name errors8--name errors
test/debugger/inline_call/manifest+2-2
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1#todo "implement inline line info in lldb"1#todo "implement inline line info in lldb"
2#skip x86_64-linux-none-incremental-selfhosted-new-nopic2#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic
3#skip x86_64-linux-none-incremental-selfhosted-new-pic3#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic
44
5#exe {5#exe {
6--name inline_call6--name inline_call
test/debugger/matrix.zon+18-30
...@@ -1,65 +1,53 @@...@@ -1,65 +1,53 @@
1.{1.{
2 .{2 .{
3 .target = .{3 .cpu = .{ .x86_64 = .{} },
4 .cpu_arch = .x86_64,4 .os = .{ .linux = .{} },
5 .os_tag = .linux,5 .abi = .{ .none = .{} },
6 .abi = .none,
7 },
8 .cache_mode = .whole,6 .cache_mode = .whole,
9 .backend = .selfhosted,7 .backend = .selfhosted,
10 .linker = .old,8 .linker = .old,
11 .pic = .nopic,9 .pic = .nopic,
12 },10 },
13 .{11 .{
14 .target = .{12 .cpu = .{ .x86_64 = .{} },
15 .cpu_arch = .x86_64,13 .os = .{ .linux = .{} },
16 .os_tag = .linux,14 .abi = .{ .none = .{} },
17 .abi = .none,
18 },
19 .cache_mode = .whole,15 .cache_mode = .whole,
20 .backend = .selfhosted,16 .backend = .selfhosted,
21 .linker = .old,17 .linker = .old,
22 .pic = .pic,18 .pic = .pic,
23 },19 },
24 .{20 .{
25 .target = .{21 .cpu = .{ .x86_64 = .{} },
26 .cpu_arch = .x86_64,22 .os = .{ .linux = .{} },
27 .os_tag = .linux,23 .abi = .{ .none = .{} },
28 .abi = .none,
29 },
30 .cache_mode = .whole,24 .cache_mode = .whole,
31 .backend = .selfhosted,25 .backend = .selfhosted,
32 .linker = .new,26 .linker = .new,
33 .pic = .nopic,27 .pic = .nopic,
34 },28 },
35 .{29 .{
36 .target = .{30 .cpu = .{ .x86_64 = .{} },
37 .cpu_arch = .x86_64,31 .os = .{ .linux = .{} },
38 .os_tag = .linux,32 .abi = .{ .none = .{} },
39 .abi = .none,
40 },
41 .cache_mode = .whole,33 .cache_mode = .whole,
42 .backend = .selfhosted,34 .backend = .selfhosted,
43 .linker = .new,35 .linker = .new,
44 .pic = .pic,36 .pic = .pic,
45 },37 },
46 .{38 .{
47 .target = .{39 .cpu = .{ .x86_64 = .{} },
48 .cpu_arch = .x86_64,40 .os = .{ .linux = .{} },
49 .os_tag = .linux,41 .abi = .{ .none = .{} },
50 .abi = .none,
51 },
52 .cache_mode = .incremental,42 .cache_mode = .incremental,
53 .backend = .selfhosted,43 .backend = .selfhosted,
54 .linker = .new,44 .linker = .new,
55 .pic = .nopic,45 .pic = .nopic,
56 },46 },
57 .{47 .{
58 .target = .{48 .cpu = .{ .x86_64 = .{} },
59 .cpu_arch = .x86_64,49 .os = .{ .linux = .{} },
60 .os_tag = .linux,50 .abi = .{ .none = .{} },
61 .abi = .none,
62 },
63 .cache_mode = .incremental,51 .cache_mode = .incremental,
64 .backend = .selfhosted,52 .backend = .selfhosted,
65 .linker = .new,53 .linker = .new,
test/debugger/unions+4-4
...@@ -1,8 +1,8 @@...@@ -1,8 +1,8 @@
1#todo "passes, but prints errors"1#todo "passes, but prints errors"
2#skip x86_64-linux-none-whole-selfhosted-new-nopic2#skip x86_64-linux-none-baseline-whole-selfhosted-new-nopic
3#skip x86_64-linux-none-whole-selfhosted-new-pic3#skip x86_64-linux-none-baseline-whole-selfhosted-new-pic
4#skip x86_64-linux-none-incremental-selfhosted-new-nopic4#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic
5#skip x86_64-linux-none-incremental-selfhosted-new-pic5#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic
66
7#exe {7#exe {
8--name unions8--name unions
test/incremental/matrix.zon+15-25
...@@ -3,22 +3,18 @@...@@ -3,22 +3,18 @@
3 // to run due to the output (C source code or LLVM IR) being built non-incrementally (by Clang3 // to run due to the output (C source code or LLVM IR) being built non-incrementally (by Clang
4 // or LLVM). We just have a couple here to make sure that it works.4 // or LLVM). We just have a couple here to make sure that it works.
5 .{5 .{
6 .target = .{6 .cpu = .{ .x86_64 = .{} },
7 .cpu_arch = .x86_64,7 .os = .{ .linux = .{} },
8 .os_tag = .linux,8 .abi = .{ .musl = .{} },
9 .abi = .musl,
10 },
11 .cache_mode = .incremental,9 .cache_mode = .incremental,
12 .backend = .cbe,10 .backend = .cbe,
13 .linker = .old,11 .linker = .old,
14 .pic = .nopic,12 .pic = .nopic,
15 },13 },
16 .{14 .{
17 .target = .{15 .cpu = .{ .x86_64 = .{} },
18 .cpu_arch = .x86_64,16 .os = .{ .linux = .{} },
19 .os_tag = .linux,17 .abi = .{ .none = .{} },
20 .abi = .none,
21 },
22 .cache_mode = .incremental,18 .cache_mode = .incremental,
23 .backend = .llvm,19 .backend = .llvm,
24 .linker = .lld,20 .linker = .lld,
...@@ -26,33 +22,27 @@...@@ -26,33 +22,27 @@
26 },22 },
2723
28 .{24 .{
29 .target = .{25 .cpu = .{ .x86_64 = .{} },
30 .cpu_arch = .x86_64,26 .os = .{ .linux = .{} },
31 .os_tag = .linux,27 .abi = .{ .none = .{} },
32 .abi = .none,
33 },
34 .cache_mode = .incremental,28 .cache_mode = .incremental,
35 .backend = .selfhosted,29 .backend = .selfhosted,
36 .linker = .new,30 .linker = .new,
37 .pic = .nopic,31 .pic = .nopic,
38 },32 },
39 .{33 .{
40 .target = .{34 .cpu = .{ .x86_64 = .{} },
41 .cpu_arch = .x86_64,35 .os = .{ .windows = .{} },
42 .os_tag = .windows,36 .abi = .{ .none = .{} },
43 .abi = .none,
44 },
45 .cache_mode = .incremental,37 .cache_mode = .incremental,
46 .backend = .selfhosted,38 .backend = .selfhosted,
47 .linker = .old,39 .linker = .old,
48 .pic = .pic,40 .pic = .pic,
49 },41 },
50 .{42 .{
51 .target = .{43 .cpu = .{ .wasm32 = .{} },
52 .cpu_arch = .wasm32,44 .os = .{ .wasi = .{} },
53 .os_tag = .wasi,45 .abi = .{ .none = .{} },
54 .abi = .none,
55 },
56 .cache_mode = .incremental,46 .cache_mode = .incremental,
57 .backend = .selfhosted,47 .backend = .selfhosted,
58 .linker = .old,48 .linker = .old,
test/llvm-ir/matrix.zon-1
...@@ -1,6 +1,5 @@...@@ -1,6 +1,5 @@
1.{1.{
2 .{2 .{
3 .target = .{},
4 .cache_mode = .whole,3 .cache_mode = .whole,
5 .backend = .llvmir,4 .backend = .llvmir,
6 .linker = .old,5 .linker = .old,
test/llvm-targets/empty_analyze created+50
...@@ -0,0 +1,50 @@
1#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
3
4#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic
5#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic
6
7#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic
8#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic
9#skip csky-linux-eabi-baseline-whole-llvm-lld-pic
10#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic
11#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic
12#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic
13
14#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
15#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
16#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
17#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
18#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
19
20#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
21#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
22#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
23
24#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic
25
26#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
27
28#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
29
30#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
31
32#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
33
34#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
35#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
36#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
37
38#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
39#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
40#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
41
42#obj {
43--name llvm_targets
44-Mroot=analyze.zig
45-fno-emit-asm -fno-emit-bin
46#}
47
48#write analyze.zig
49#update
50#check errors
test/llvm-targets/empty_assembly created+55
...@@ -0,0 +1,55 @@
1#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
3
4#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic
5#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic
6
7#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic
8#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic
9#skip csky-linux-eabi-baseline-whole-llvm-lld-pic
10#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic
11#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic
12#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic
13
14#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
15#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
16#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
17#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
18#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
19
20#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
21#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
22#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
23
24#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic
25
26#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
27
28#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
29
30#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
31
32#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
33
34#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
35#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
36#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
37
38#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
39#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
40#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
41
42#skip xtensa-freestanding-call0-baseline-whole-llvm-lld-pic
43#skip xtensa-freestanding-none-baseline-whole-llvm-lld-pic
44#skip xtensa-linux-call0-baseline-whole-llvm-lld-pic
45#skip xtensa-linux-none-baseline-whole-llvm-lld-pic
46
47#obj {
48--name llvm_targets
49-Mroot=assembly.zig
50-femit-asm -fno-emit-bin
51#}
52
53#write assembly.zig
54#update
55#check errors
test/llvm-targets/empty_object created+67
...@@ -0,0 +1,67 @@
1#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
3
4#skip arc-freestanding-none-baseline-whole-llvm-lld-pic
5#skip arc-linux-gnu-baseline-whole-llvm-lld-pic
6#skip arc-linux-none-baseline-whole-llvm-lld-pic
7
8#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic
9#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic
10
11#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic
12#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic
13#skip csky-linux-eabi-baseline-whole-llvm-lld-pic
14#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic
15#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic
16#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic
17
18#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
19#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
20#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
21#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
22#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
23
24#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
25#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
26#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
27
28#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic
29
30#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic
31#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic
32
33#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic
34#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic
35
36#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
37
38#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
39
40#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
41
42#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
43
44#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
45#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
46#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
47
48#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
49#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
50#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
51
52#skip xcore-freestanding-none-baseline-whole-llvm-lld-pic
53
54#skip xtensa-freestanding-call0-baseline-whole-llvm-lld-pic
55#skip xtensa-freestanding-none-baseline-whole-llvm-lld-pic
56#skip xtensa-linux-call0-baseline-whole-llvm-lld-pic
57#skip xtensa-linux-none-baseline-whole-llvm-lld-pic
58
59#obj {
60--name llvm_targets
61-Mroot=object.zig
62-fno-emit-asm -femit-bin
63#}
64
65#write object.zig
66#update
67#check errors
test/llvm-targets/matrix.zon created+355
...@@ -0,0 +1,355 @@
1.{
2 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .driverkit = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
3 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
4 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
5 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
6 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
7 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
8 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .ios = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
9 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .ios = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
10 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
11 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
12 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
13 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
14 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohos = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
15 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .maccatalyst = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
16 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .macos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
17 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
18 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
19 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
20 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
21 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .@"switch" = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
22 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .tvos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
23 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .tvos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
24 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
25 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .visionos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
26 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .visionos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
27 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .ilp32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
28 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
29 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
30 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
31 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
32 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
33
34 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
35 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
36 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
37 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
38 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
39
40 .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .amdhsa = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
41 .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .amdpal = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
42 .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .mesa3d = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
43
44 .{ .cpu = .{ .arc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
45 .{ .cpu = .{ .arc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
46 .{ .cpu = .{ .arc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
47
48 .{ .cpu = .{ .arm = .{} }, .os = .{ .@"3ds" = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
49 .{ .cpu = .{ .arm = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
50 .{ .cpu = .{ .arm = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
51 .{ .cpu = .{ .arm = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
52 .{ .cpu = .{ .arm = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
53 .{ .cpu = .{ .arm = .{} }, .os = .{ .gba = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
54 .{ .cpu = .{ .arm = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
55 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .androideabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
56 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
57 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
58 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
59 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
60 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
61 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
62 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohoseabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
63 .{ .cpu = .{ .arm = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
64 .{ .cpu = .{ .arm = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
65 .{ .cpu = .{ .arm = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
66 .{ .cpu = .{ .arm = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
67 .{ .cpu = .{ .arm = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
68 .{ .cpu = .{ .arm = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
69 .{ .cpu = .{ .arm = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
70 .{ .cpu = .{ .arm = .{} }, .os = .{ .vita = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
71
72 .{ .cpu = .{ .armeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
73 .{ .cpu = .{ .armeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
74 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
75 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
76 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
77 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
78 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
79 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
80 .{ .cpu = .{ .armeb = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
81 .{ .cpu = .{ .armeb = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
82 .{ .cpu = .{ .armeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
83 .{ .cpu = .{ .armeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
84
85 .{ .cpu = .{ .avr = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
86 .{ .cpu = .{ .avr = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
87
88 .{ .cpu = .{ .bpfeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
89
90 .{ .cpu = .{ .bpfel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
91
92 .{ .cpu = .{ .csky = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
93 .{ .cpu = .{ .csky = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
94 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
95 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
96 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
97 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
98
99 .{ .cpu = .{ .hexagon = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
100 .{ .cpu = .{ .hexagon = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
101 .{ .cpu = .{ .hexagon = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
102
103 .{ .cpu = .{ .lanai = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
104
105 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
106 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
107 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
108 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnusf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
109 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
110 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
111 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslsf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
112 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
113 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
114
115 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
116 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
117 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
118 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnusf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
119 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
120 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
121 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslsf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
122 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
123 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
124
125 .{ .cpu = .{ .m68k = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
126 .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
127 .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
128 .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
129 .{ .cpu = .{ .m68k = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
130 .{ .cpu = .{ .m68k = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
131
132 .{ .cpu = .{ .mips = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
133 .{ .cpu = .{ .mips = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
134 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
135 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
136 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
137 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
138 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
139 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
140 .{ .cpu = .{ .mips = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
141 .{ .cpu = .{ .mips = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
142 .{ .cpu = .{ .mips = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
143 .{ .cpu = .{ .mips = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
144
145 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
146 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
147 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
148 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
149 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
150 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
151 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
152 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
153 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
154 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
155 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .psx = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
156 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .psp = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
157 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
158 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
159
160 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
161 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .abin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
162 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
163 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
164 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
165 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
166 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
167 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
168
169 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
170 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .abin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
171 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
172 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
173 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
174 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
175 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
176 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
177
178 .{ .cpu = .{ .msp430 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
179
180 .{ .cpu = .{ .nvptx = .{} }, .os = .{ .cuda = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
181 .{ .cpu = .{ .nvptx = .{} }, .os = .{ .nvcl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
182
183 .{ .cpu = .{ .nvptx64 = .{} }, .os = .{ .cuda = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
184 .{ .cpu = .{ .nvptx64 = .{} }, .os = .{ .nvcl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
185
186 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
187 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
188 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
189 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
190 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
191 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
192 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
193 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
194 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
195 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
196 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .wiiu = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
197
198 .{ .cpu = .{ .powerpcle = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
199 .{ .cpu = .{ .powerpcle = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
200
201 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
202 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
203 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
204 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
205 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
206 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .ps3 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
207 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
208
209 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
210 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
211 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
212 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
213 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
214
215 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
216 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
217 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
218 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
219 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
220 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
221 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
222
223 .{ .cpu = .{ .riscv32be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
224
225 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
226 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
227 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
228 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
229 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
230 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
231 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
232 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
233 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
234 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
235 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
236 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
237 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
238 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
239
240 .{ .cpu = .{ .riscv64be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
241
242 .{ .cpu = .{ .s390x = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
243 .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
244 .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
245 .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
246
247 .{ .cpu = .{ .sparc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
248 .{ .cpu = .{ .sparc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
249 .{ .cpu = .{ .sparc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
250 .{ .cpu = .{ .sparc = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
251 .{ .cpu = .{ .sparc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
252
253 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
254 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
255 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
256 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
257 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
258 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
259
260 .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .opencl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
261 .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .opengl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
262 .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .vulkan = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
263
264 .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .amdhsa = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
265 .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .opencl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
266 .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .vulkan = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
267
268 .{ .cpu = .{ .thumb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
269 .{ .cpu = .{ .thumb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
270 .{ .cpu = .{ .thumb = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
271 .{ .cpu = .{ .thumb = .{} }, .os = .{ .gba = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
272 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
273 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
274 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
275 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
276 .{ .cpu = .{ .thumb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
277 .{ .cpu = .{ .thumb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
278 .{ .cpu = .{ .thumb = .{} }, .os = .{ .vita = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
279 .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
280 .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
281 .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
282
283 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
284 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
285 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
286 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
287 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
288 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
289 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
290 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
291
292 .{ .cpu = .{ .ve = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
293 .{ .cpu = .{ .ve = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
294
295 .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .emscripten = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
296 .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
297 .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .wasi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
298
299 .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .emscripten = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
300 .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
301 .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .wasi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
302
303 .{ .cpu = .{ .x86 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
304 .{ .cpu = .{ .x86 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
305 .{ .cpu = .{ .x86 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
306 .{ .cpu = .{ .x86 = .{} }, .os = .{ .illumos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
307 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
308 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
309 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
310 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
311 .{ .cpu = .{ .x86 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
312 .{ .cpu = .{ .x86 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
313 .{ .cpu = .{ .x86 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
314 .{ .cpu = .{ .x86 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
315 .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
316 .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
317 .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
318
319 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
320 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
321 .{ .cpu = .{ .x86_64 = .{ .features = .{ .add = .{.soft_float}, .remove = .{ .mmx, .sse, .sse2, .avx, .avx2 } } } }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
322 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
323 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .dragonfly = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
324 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .driverkit = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
325 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
326 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
327 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .illumos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
328 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
329 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
330 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnux32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
331 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
332 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslx32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
333 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
334 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohos = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
335 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .x32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
336 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .maccatalyst = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
337 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .macos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
338 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
339 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
340 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .ps4 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
341 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .ps5 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
342 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
343 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
344 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
345 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
346 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
347 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
348
349 .{ .cpu = .{ .xcore = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
350
351 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .call0 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
352 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
353 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .linux = .{} }, .abi = .{ .call0 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
354 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
355}
test/llvm_targets.zig deleted-382
...@@ -1,382 +0,0 @@
1const std = @import("std");
2const Cases = @import("src/Cases.zig");
3
4const targets = [_]std.Target.Query{
5 .{ .cpu_arch = .aarch64, .os_tag = .driverkit, .abi = .none },
6 .{ .cpu_arch = .aarch64, .os_tag = .freebsd, .abi = .none },
7 .{ .cpu_arch = .aarch64, .os_tag = .freestanding, .abi = .none },
8 .{ .cpu_arch = .aarch64, .os_tag = .fuchsia, .abi = .none },
9 .{ .cpu_arch = .aarch64, .os_tag = .haiku, .abi = .none },
10 .{ .cpu_arch = .aarch64, .os_tag = .hurd, .abi = .gnu },
11 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none },
12 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator },
13 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .android },
14 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu },
15 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl },
16 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },
17 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .ohos },
18 .{ .cpu_arch = .aarch64, .os_tag = .maccatalyst, .abi = .none },
19 .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },
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 = .none },
23 .{ .cpu_arch = .aarch64, .os_tag = .serenity, .abi = .none },
24 .{ .cpu_arch = .aarch64, .os_tag = .@"switch", .abi = .none },
25 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none },
26 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .simulator },
27 .{ .cpu_arch = .aarch64, .os_tag = .uefi, .abi = .none },
28 .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .none },
29 .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .simulator },
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 },
33 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .gnu },
34 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .itanium },
35 .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .msvc },
36
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 = .musl },
40 .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .none },
41 .{ .cpu_arch = .aarch64_be, .os_tag = .netbsd, .abi = .none },
42
43 .{ .cpu_arch = .amdgcn, .os_tag = .amdhsa, .abi = .none },
44 // .{ .cpu_arch = .amdgcn, .os_tag = .amdpal, .abi = .none },
45 // .{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none },
46
47 .{ .cpu_arch = .arc, .os_tag = .freestanding, .abi = .none },
48 .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .gnu },
49 .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .none },
50
51 .{ .cpu_arch = .arm, .os_tag = .@"3ds", .abi = .eabihf },
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 = .fuchsia, .abi = .eabihf },
56 .{ .cpu_arch = .arm, .os_tag = .gba, .abi = .eabi },
57 .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabihf },
58 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .androideabi },
59 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabi },
60 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabihf },
61 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabi },
62 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabihf },
63 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabi },
64 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabihf },
65 .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .ohoseabi },
66 .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabi },
67 .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabihf },
68 .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabi },
69 .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabi },
70 .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabihf },
71 // .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabi },
72 // .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabihf },
73 .{ .cpu_arch = .arm, .os_tag = .vita, .abi = .eabihf },
74
75 .{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .eabi },
76 .{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .eabihf },
77 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .eabi },
78 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .eabihf },
79 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .gnueabi },
80 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .gnueabihf },
81 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .musleabi },
82 .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .musleabihf },
83 .{ .cpu_arch = .armeb, .os_tag = .netbsd, .abi = .eabi },
84 .{ .cpu_arch = .armeb, .os_tag = .netbsd, .abi = .eabihf },
85 .{ .cpu_arch = .armeb, .os_tag = .rtems, .abi = .eabi },
86 .{ .cpu_arch = .armeb, .os_tag = .rtems, .abi = .eabihf },
87
88 .{ .cpu_arch = .avr, .os_tag = .freestanding, .abi = .none },
89 .{ .cpu_arch = .avr, .os_tag = .rtems, .abi = .none },
90
91 .{ .cpu_arch = .bpfeb, .os_tag = .freestanding, .abi = .none },
92
93 .{ .cpu_arch = .bpfel, .os_tag = .freestanding, .abi = .none },
94
95 // .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabi },
96 // .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabihf },
97 // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabi },
98 // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabihf },
99 // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabi },
100 // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabihf },
101
102 .{ .cpu_arch = .hexagon, .os_tag = .freestanding, .abi = .none },
103 .{ .cpu_arch = .hexagon, .os_tag = .linux, .abi = .musl },
104 .{ .cpu_arch = .hexagon, .os_tag = .linux, .abi = .none },
105
106 .{ .cpu_arch = .lanai, .os_tag = .freestanding, .abi = .none },
107
108 .{ .cpu_arch = .loongarch32, .os_tag = .freestanding, .abi = .none },
109 .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .gnu },
110 // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .gnuf32 },
111 .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .gnusf },
112 // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .musl },
113 // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .muslf32 },
114 // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .muslsf },
115 .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .none },
116 // .{ .cpu_arch = .loongarch32, .os_tag = .uefi, .abi = .none },
117
118 .{ .cpu_arch = .loongarch64, .os_tag = .freestanding, .abi = .none },
119 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnu },
120 // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 },
121 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnusf },
122 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .musl },
123 // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .muslf32 },
124 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .muslsf },
125 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .none },
126 // .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none },
127
128 .{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none },
129 .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .gnu },
130 .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .musl },
131 .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .none },
132 .{ .cpu_arch = .m68k, .os_tag = .netbsd, .abi = .none },
133 .{ .cpu_arch = .m68k, .os_tag = .rtems, .abi = .none },
134
135 .{ .cpu_arch = .mips, .os_tag = .freestanding, .abi = .eabi },
136 .{ .cpu_arch = .mips, .os_tag = .freestanding, .abi = .eabihf },
137 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .eabi },
138 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .eabihf },
139 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .gnueabi },
140 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .gnueabihf },
141 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musleabi },
142 .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musleabihf },
143 .{ .cpu_arch = .mips, .os_tag = .netbsd, .abi = .eabi },
144 .{ .cpu_arch = .mips, .os_tag = .netbsd, .abi = .eabihf },
145 .{ .cpu_arch = .mips, .os_tag = .rtems, .abi = .eabi },
146 .{ .cpu_arch = .mips, .os_tag = .rtems, .abi = .eabihf },
147
148 .{ .cpu_arch = .mipsel, .os_tag = .freestanding, .abi = .eabi },
149 .{ .cpu_arch = .mipsel, .os_tag = .freestanding, .abi = .eabihf },
150 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .eabi },
151 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .eabihf },
152 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .gnueabi },
153 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .gnueabihf },
154 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musleabi },
155 .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musleabihf },
156 .{ .cpu_arch = .mipsel, .os_tag = .netbsd, .abi = .eabi },
157 .{ .cpu_arch = .mipsel, .os_tag = .netbsd, .abi = .eabihf },
158 // .{ .cpu_arch = .mipsel, .os_tag = .psx, .abi = .eabi },
159 .{ .cpu_arch = .mipsel, .os_tag = .psp, .abi = .eabihf },
160 .{ .cpu_arch = .mipsel, .os_tag = .rtems, .abi = .eabi },
161 .{ .cpu_arch = .mipsel, .os_tag = .rtems, .abi = .eabihf },
162
163 .{ .cpu_arch = .mips64, .os_tag = .freestanding, .abi = .none },
164 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .abin32 },
165 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .gnuabi64 },
166 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .gnuabin32 },
167 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .muslabi64 },
168 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .muslabin32 },
169 .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .none },
170 .{ .cpu_arch = .mips64, .os_tag = .openbsd, .abi = .none },
171
172 .{ .cpu_arch = .mips64el, .os_tag = .freestanding, .abi = .none },
173 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .abin32 },
174 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .gnuabi64 },
175 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .gnuabin32 },
176 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .muslabi64 },
177 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .muslabin32 },
178 .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .none },
179 .{ .cpu_arch = .mips64el, .os_tag = .openbsd, .abi = .none },
180
181 .{ .cpu_arch = .msp430, .os_tag = .freestanding, .abi = .none },
182
183 .{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none },
184 .{ .cpu_arch = .nvptx, .os_tag = .nvcl, .abi = .none },
185
186 .{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none },
187 .{ .cpu_arch = .nvptx64, .os_tag = .nvcl, .abi = .none },
188
189 .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabi },
190 .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .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 = .musleabi },
194 .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabihf },
195 .{ .cpu_arch = .powerpc, .os_tag = .netbsd, .abi = .eabihf },
196 .{ .cpu_arch = .powerpc, .os_tag = .openbsd, .abi = .eabihf },
197 .{ .cpu_arch = .powerpc, .os_tag = .rtems, .abi = .eabi },
198 .{ .cpu_arch = .powerpc, .os_tag = .rtems, .abi = .eabihf },
199 .{ .cpu_arch = .powerpc, .os_tag = .wiiu, .abi = .eabihf },
200
201 .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabi },
202 .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabihf },
203
204 .{ .cpu_arch = .powerpc64, .os_tag = .freebsd, .abi = .none },
205 .{ .cpu_arch = .powerpc64, .os_tag = .freestanding, .abi = .none },
206 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .musl },
207 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .none },
208 .{ .cpu_arch = .powerpc64, .os_tag = .openbsd, .abi = .none },
209 .{ .cpu_arch = .powerpc64, .os_tag = .ps3, .abi = .ilp32 },
210 .{ .cpu_arch = .powerpc64, .os_tag = .rtems, .abi = .none },
211
212 .{ .cpu_arch = .powerpc64le, .os_tag = .freebsd, .abi = .none },
213 .{ .cpu_arch = .powerpc64le, .os_tag = .freestanding, .abi = .none },
214 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .gnu },
215 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .musl },
216 .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .none },
217
218 .{ .cpu_arch = .riscv32, .os_tag = .freestanding, .abi = .none },
219 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .gnu },
220 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .musl },
221 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .none },
222 .{ .cpu_arch = .riscv32, .os_tag = .netbsd, .abi = .none },
223 .{ .cpu_arch = .riscv32, .os_tag = .rtems, .abi = .none },
224 // .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none },
225
226 // .{ .cpu_arch = .riscv32be, .os_tag = .freestanding, .abi = .none },
227
228 .{ .cpu_arch = .riscv64, .os_tag = .freebsd, .abi = .none },
229 .{ .cpu_arch = .riscv64, .os_tag = .freestanding, .abi = .none },
230 .{ .cpu_arch = .riscv64, .os_tag = .fuchsia, .abi = .none },
231 .{ .cpu_arch = .riscv64, .os_tag = .haiku, .abi = .none },
232 .{ .cpu_arch = .riscv64, .os_tag = .hurd, .abi = .gnu },
233 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .android },
234 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .gnu },
235 .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .musl },
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
243 // .{ .cpu_arch = .riscv64be, .os_tag = .freestanding, .abi = .none },
244
245 .{ .cpu_arch = .s390x, .os_tag = .freestanding, .abi = .none },
246 .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .gnu },
247 .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .musl },
248 .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .none },
249
250 .{ .cpu_arch = .sparc, .os_tag = .freestanding, .abi = .none },
251 .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .gnu },
252 .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .none },
253 .{ .cpu_arch = .sparc, .os_tag = .netbsd, .abi = .none },
254 .{ .cpu_arch = .sparc, .os_tag = .rtems, .abi = .none },
255
256 .{ .cpu_arch = .sparc64, .os_tag = .freestanding, .abi = .none },
257 .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .gnu },
258 .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .none },
259 .{ .cpu_arch = .sparc64, .os_tag = .netbsd, .abi = .none },
260 .{ .cpu_arch = .sparc64, .os_tag = .openbsd, .abi = .none },
261 .{ .cpu_arch = .sparc64, .os_tag = .rtems, .abi = .none },
262
263 // .{ .cpu_arch = .spirv32, .os_tag = .opencl, .abi = .none },
264 // .{ .cpu_arch = .spirv32, .os_tag = .opengl, .abi = .none },
265 // .{ .cpu_arch = .spirv32, .os_tag = .vulkan, .abi = .none },
266 // .{ .cpu_arch = .spirv64, .os_tag = .amdhsa, .abi = .none },
267 // .{ .cpu_arch = .spirv64, .os_tag = .opencl, .abi = .none },
268 // .{ .cpu_arch = .spirv64, .os_tag = .vulkan, .abi = .none },
269
270 .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabi },
271 .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabihf },
272 .{ .cpu_arch = .thumb, .os_tag = .fuchsia, .abi = .eabihf },
273 .{ .cpu_arch = .thumb, .os_tag = .gba, .abi = .eabi },
274 .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabi },
275 .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabihf },
276 .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .musleabi },
277 .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .musleabihf },
278 .{ .cpu_arch = .thumb, .os_tag = .rtems, .abi = .eabi },
279 .{ .cpu_arch = .thumb, .os_tag = .rtems, .abi = .eabihf },
280 .{ .cpu_arch = .thumb, .os_tag = .vita, .abi = .eabihf },
281 .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .gnu },
282 .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .itanium },
283 .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .msvc },
284
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 = .rtems, .abi = .eabi },
292 .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabihf },
293
294 .{ .cpu_arch = .ve, .os_tag = .freestanding, .abi = .none },
295 .{ .cpu_arch = .ve, .os_tag = .linux, .abi = .none },
296
297 .{ .cpu_arch = .wasm32, .os_tag = .emscripten, .abi = .none },
298 .{ .cpu_arch = .wasm32, .os_tag = .freestanding, .abi = .none },
299 .{ .cpu_arch = .wasm32, .os_tag = .wasi, .abi = .none },
300
301 .{ .cpu_arch = .wasm64, .os_tag = .emscripten, .abi = .none },
302 .{ .cpu_arch = .wasm64, .os_tag = .freestanding, .abi = .none },
303 .{ .cpu_arch = .wasm64, .os_tag = .wasi, .abi = .none },
304
305 .{ .cpu_arch = .x86, .os_tag = .freestanding, .abi = .none },
306 .{ .cpu_arch = .x86, .os_tag = .haiku, .abi = .none },
307 .{ .cpu_arch = .x86, .os_tag = .hurd, .abi = .gnu },
308 .{ .cpu_arch = .x86, .os_tag = .illumos, .abi = .none },
309 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .android },
310 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .gnu },
311 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .musl },
312 .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .none },
313 .{ .cpu_arch = .x86, .os_tag = .netbsd, .abi = .none },
314 .{ .cpu_arch = .x86, .os_tag = .openbsd, .abi = .none },
315 .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none },
316 .{ .cpu_arch = .x86, .os_tag = .uefi, .abi = .none },
317 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .gnu },
318 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .itanium },
319 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .msvc },
320
321 .{ .cpu_arch = .x86_64, .os_tag = .freebsd, .abi = .none },
322 .{ .cpu_arch = .x86_64, .os_tag = .freestanding, .abi = .none },
323 .{
324 .cpu_arch = .x86_64,
325 .os_tag = .freestanding,
326 .abi = .none,
327 .cpu_features_add = std.Target.x86.featureSet(&.{.soft_float}),
328 .cpu_features_sub = std.Target.x86.featureSet(&.{ .mmx, .sse, .sse2, .avx, .avx2 }),
329 },
330 .{ .cpu_arch = .x86_64, .os_tag = .fuchsia, .abi = .none },
331 .{ .cpu_arch = .x86_64, .os_tag = .dragonfly, .abi = .none },
332 .{ .cpu_arch = .x86_64, .os_tag = .driverkit, .abi = .none },
333 .{ .cpu_arch = .x86_64, .os_tag = .haiku, .abi = .none },
334 .{ .cpu_arch = .x86_64, .os_tag = .hurd, .abi = .gnu },
335 .{ .cpu_arch = .x86_64, .os_tag = .illumos, .abi = .none },
336 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .android },
337 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnu },
338 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnux32 },
339 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .musl },
340 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .muslx32 },
341 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none },
342 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .ohos },
343 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .x32 },
344 .{ .cpu_arch = .x86_64, .os_tag = .maccatalyst, .abi = .none },
345 .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none },
346 .{ .cpu_arch = .x86_64, .os_tag = .netbsd, .abi = .none },
347 .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none },
348 .{ .cpu_arch = .x86_64, .os_tag = .ps4, .abi = .none },
349 .{ .cpu_arch = .x86_64, .os_tag = .ps5, .abi = .none },
350 .{ .cpu_arch = .x86_64, .os_tag = .rtems, .abi = .none },
351 .{ .cpu_arch = .x86_64, .os_tag = .serenity, .abi = .none },
352 .{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none },
353 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu },
354 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .itanium },
355 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .msvc },
356
357 .{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none },
358
359 .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .call0 },
360 .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none },
361 .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .call0 },
362 .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none },
363};
364
365pub fn addCases(
366 ctx: *Cases,
367 build_options: @import("cases.zig").BuildOptions,
368 b: *std.Build,
369) !void {
370 if (!build_options.enable_llvm) return;
371 for (targets) |target_query| {
372 if (target_query.cpu_arch) |arch| switch (arch) {
373 .m68k => if (!build_options.llvm_has_m68k) continue,
374 .csky => if (!build_options.llvm_has_csky) continue,
375 .arc => if (!build_options.llvm_has_arc) continue,
376 .xtensa => if (!build_options.llvm_has_xtensa) continue,
377 else => {},
378 };
379 var case = ctx.addObjLlvm("llvm_targets", b.resolveTargetQuery(target_query));
380 case.addCompile("");
381 }
382}
test/src/Cases.zig-32
...@@ -164,38 +164,6 @@ pub fn exeFromCompiledC(ctx: *Cases, name: []const u8, target_query: std.Target....@@ -164,38 +164,6 @@ pub fn exeFromCompiledC(ctx: *Cases, name: []const u8, target_query: std.Target.
164 return &ctx.cases.items[ctx.cases.items.len - 1];164 return &ctx.cases.items[ctx.cases.items.len - 1];
165}165}
166166
167pub fn addObjLlvm(ctx: *Cases, name: []const u8, target: std.Build.ResolvedTarget) *Case {
168 const can_emit_asm = switch (target.result.cpu.arch) {
169 .csky,
170 .xtensa,
171 => false,
172 else => true,
173 };
174 const can_emit_bin = switch (target.result.cpu.arch) {
175 .arc,
176 .csky,
177 .nvptx,
178 .nvptx64,
179 .xcore,
180 .xtensa,
181 => false,
182 else => true,
183 };
184
185 ctx.cases.append(.{
186 .name = name,
187 .target = target,
188 .files = .init(ctx.arena),
189 .case = null,
190 .output_mode = .Obj,
191 .deps = std.array_list.Managed(DepModule).init(ctx.arena),
192 .backend = .llvm,
193 .emit_bin = can_emit_bin,
194 .emit_asm = can_emit_asm,
195 }) catch @panic("out of memory");
196 return &ctx.cases.items[ctx.cases.items.len - 1];
197}
198
199pub fn addObj(167pub fn addObj(
200 ctx: *Cases,168 ctx: *Cases,
201 name: []const u8,169 name: []const u8,
test/tests.zig+18-25
...@@ -2186,19 +2186,6 @@ const link_targets = blk: {...@@ -2186,19 +2186,6 @@ const link_targets = blk: {
2186 };2186 };
2187};2187};
21882188
2189/// These are passed to `src/Runner.zig` as `<target>-<cache_mode>-<backend>-<linker>-<pic>` strings.
2190///
2191/// If only one specific test is failing on a target, instead of entirely disabling the target here, you
2192/// can skip the target for that specific test only by adding a line like this to top of the manifest:
2193/// #skip x86_64-linux-selfhosted
2194const RunnerTarget = struct {
2195 target: std.Target.Query,
2196 cache_mode: enum { whole, incremental },
2197 backend: enum { selfhosted, llvm, llvmir, cbe },
2198 linker: enum { lld, old, new },
2199 pic: enum { nopic, pic, pie },
2200};
2201
2202pub fn addStackTraceTests(b: *std.Build, options: StackTracesContext.Options) *Step {2189pub fn addStackTraceTests(b: *std.Build, options: StackTracesContext.Options) *Step {
2203 const step = b.step("test-stack-traces", "Run the stack trace tests");2190 const step = b.step("test-stack-traces", "Run the stack trace tests");
22042191
...@@ -3037,7 +3024,6 @@ pub fn addCases(...@@ -3037,7 +3024,6 @@ pub fn addCases(
3037 b: *std.Build,3024 b: *std.Build,
3038 parent_step: *Step,3025 parent_step: *Step,
3039 case_test_options: @import("src/Cases.zig").CaseTestOptions,3026 case_test_options: @import("src/Cases.zig").CaseTestOptions,
3040 build_options: @import("cases.zig").BuildOptions,
3041) !void {3027) !void {
3042 const arena = b.allocator;3028 const arena = b.allocator;
3043 const gpa = b.allocator;3029 const gpa = b.allocator;
...@@ -3051,7 +3037,7 @@ pub fn addCases(...@@ -3051,7 +3037,7 @@ pub fn addCases(
3051 defer dir.close(io);3037 defer dir.close(io);
30523038
3053 cases.addFromDir(dir, "test/cases", b);3039 cases.addFromDir(dir, "test/cases", b);
3054 try @import("cases.zig").addCases(&cases, build_options, b);3040 try @import("cases.zig").addCases(&cases, b);
30553041
3056 cases.lowerToBuildSteps(3042 cases.lowerToBuildSteps(
3057 b,3043 b,
...@@ -3060,6 +3046,7 @@ pub fn addCases(...@@ -3060,6 +3046,7 @@ pub fn addCases(
3060 );3046 );
3061}3047}
30623048
3049pub const RunnerTarget = @import("Runner.zig").Target;
3063pub const RunnerOptions = struct {3050pub const RunnerOptions = struct {
3064 test_filters: []const []const u8,3051 test_filters: []const []const u8,
3065 test_target_filters: []const []const u8,3052 test_target_filters: []const []const u8,
...@@ -3072,10 +3059,13 @@ pub const RunnerOptions = struct {...@@ -3072,10 +3059,13 @@ pub const RunnerOptions = struct {
3072 skip_darwin: bool,3059 skip_darwin: bool,
3073 skip_linux: bool,3060 skip_linux: bool,
3074 skip_llvm: bool,3061 skip_llvm: bool,
3062 llvm_has_m68k: bool,
3063 llvm_has_csky: bool,
3064 llvm_has_arc: bool,
3065 llvm_has_xtensa: bool,
3075 gdb: ?[]const u8,3066 gdb: ?[]const u8,
3076 lldb: ?[]const u8,3067 lldb: ?[]const u8,
3077};3068};
3078
3079pub fn addRunnerTests(3069pub fn addRunnerTests(
3080 b: *std.Build,3070 b: *std.Build,
3081 runner: *std.Build.Step.Compile,3071 runner: *std.Build.Step.Compile,
...@@ -3119,7 +3109,7 @@ pub fn addRunnerTests(...@@ -3119,7 +3109,7 @@ pub fn addRunnerTests(
3119 _ = run.addPrefixedOutputDirectoryArg("--src=", "src");3109 _ = run.addPrefixedOutputDirectoryArg("--src=", "src");
31203110
3121 for (matrix) |test_target| {3111 for (matrix) |test_target| {
3122 const resolved_target = b.resolveTargetQuery(test_target.target);3112 const resolved_target = b.resolveTargetQuery(test_target.toQuery());
31233113
3124 if (options.skip_non_native and !std.zig.target.isNative(&resolved_target.query, &resolved_target.result, &b.graph.host.result))3114 if (options.skip_non_native and !std.zig.target.isNative(&resolved_target.query, &resolved_target.result, &b.graph.host.result))
3125 continue;3115 continue;
...@@ -3135,15 +3125,18 @@ pub fn addRunnerTests(...@@ -3135,15 +3125,18 @@ pub fn addRunnerTests(
3135 if (options.skip_darwin and target.os.tag.isDarwin()) continue;3125 if (options.skip_darwin and target.os.tag.isDarwin()) continue;
3136 if (options.skip_linux and target.os.tag == .linux) continue;3126 if (options.skip_linux and target.os.tag == .linux) continue;
31373127
3138 if (options.skip_llvm and test_target.backend == .llvm) continue;3128 if (test_target.backend == .llvm) {
3129 if (options.skip_llvm) continue;
3130 switch (target.cpu.arch) {
3131 else => {},
3132 .m68k => if (!options.llvm_has_m68k) continue,
3133 .csky => if (!options.llvm_has_csky) continue,
3134 .arc => if (!options.llvm_has_arc) continue,
3135 .xtensa => if (!options.llvm_has_xtensa) continue,
3136 }
3137 }
31393138
3140 const target_str = b.fmt("{s}-{t}-{t}-{t}-{t}", .{3139 const target_str = b.fmt("{f}", .{test_target});
3141 resolved_target.query.zigTriple(b.allocator) catch @panic("OOM"),
3142 test_target.cache_mode,
3143 test_target.backend,
3144 test_target.linker,
3145 test_target.pic,
3146 });
31473140
3148 for (options.test_target_filters) |filter| {3141 for (options.test_target_filters) |filter| {
3149 if (std.mem.find(u8, target_str, filter) != null) break;3142 if (std.mem.find(u8, target_str, filter) != null) break;