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 {
504504 .skip_linux = skip_linux,
505505 .skip_llvm = skip_llvm,
506506 .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,
513507 });
514508 test_step.dependOn(test_cases_step);
515509
......@@ -804,6 +798,10 @@ pub fn build(b: *std.Build) !void {
804798 .skip_darwin = skip_darwin,
805799 .skip_linux = skip_linux,
806800 .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,
807805 .gdb = b.option([]const u8, "gdb", "path to gdb binary"),
808806 .lldb = b.option([]const u8, "lldb", "path to lldb binary"),
809807 };
......@@ -821,6 +819,10 @@ pub fn build(b: *std.Build) !void {
821819 const test_llvm_ir_step = b.step("test-llvm-ir", "Run the LLVM IR tests");
822820 try tests.addRunnerTests(b, runner, test_llvm_ir_step, "test/llvm-ir", @import("test/llvm-ir/matrix.zon"), runner_opts);
823821 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);
824826}
825827
826828fn 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 {
261261 if (abi_it.next() != null) {
262262 if (abi.isGnu()) {
263263 result.glibc_version = parseVersion(abi_ver_text) catch |err| switch (err) {
264 error.Overflow => return error.InvalidAbiVersion,
265 error.InvalidVersion => return error.InvalidAbiVersion,
264 error.Overflow, error.InvalidVersion => return error.InvalidAbiVersion,
266265 };
267266 } else if (abi.isAndroid()) {
268267 result.android_api_level = std.fmt.parseUnsigned(u32, abi_ver_text, 10) catch |err| switch (err) {
269 error.InvalidCharacter => return error.InvalidVersion,
270 error.Overflow => |e| return e,
268 error.InvalidCharacter, error.Overflow => return error.InvalidAbiVersion,
271269 };
272270 } else {
273271 return error.InvalidAbiVersion;
......@@ -428,139 +426,105 @@ pub fn canDetectLibC(self: Query) bool {
428426 return false;
429427}
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,
432430/// unlike SemanticVersion.format which formats all its version components regardless.
433fn formatVersion(version: SemanticVersion, gpa: Allocator, list: *ArrayList(u8)) !void {
434 if (version.patch == 0) {
435 try list.print(gpa, "{d}.{d}", .{ version.major, version.minor });
436 } else {
437 try list.print(gpa, "{d}.{d}.{d}", .{ version.major, version.minor, version.patch });
431pub const PrintVersion = struct {
432 version: SemanticVersion,
433 pub fn format(print: PrintVersion, w: *std.Io.Writer) std.Io.Writer.Error!void {
434 try w.print("{d}.{d}", .{ print.version.major, print.version.minor });
435 switch (print.version.patch) {
436 0 => {},
437 else => |patch| try w.print(".{d}", .{patch}),
438 }
438439 }
439}
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";
440};
446441
447 var result: ArrayList(u8) = .empty;
448 defer result.deinit(gpa);
442pub fn printZigTriple(query: *const Query, w: *std.Io.Writer) std.Io.Writer.Error!void {
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
452450 // The zig target syntax does not allow specifying a max os version with no min, so
453451 // if either are present, we need the min.
454 if (self.os_version_min) |min| {
452 if (query.os_version_min) |min| {
455453 switch (min) {
456454 .none => {},
457 .semver => |v| {
458 try result.appendSlice(gpa, ".");
459 try formatVersion(v, gpa, &result);
460 },
461 .windows => |v| {
462 try result.print(gpa, "{f}", .{v});
463 },
455 .semver => |v| try w.print(".{f}", .{PrintVersion{ .version = v }}),
456 .windows => |v| try w.print("{f}", .{v}),
464457 }
465458 }
466 if (self.os_version_max) |max| {
459 if (query.os_version_max) |max| {
467460 switch (max) {
468461 .none => {},
469 .semver => |v| {
470 try result.appendSlice(gpa, "...");
471 try formatVersion(v, gpa, &result);
472 },
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 },
462 .semver => |v| try w.print("...{f}", .{PrintVersion{ .version = v }}),
463 // This is counting on a custom format() function defined on `WindowsVersion`
464 // to add a prefix '.' and make there be a total of three dots.
465 .windows => |v| try w.print("..{f}", .{v}),
478466 }
479467 }
480468
481 if (self.glibc_version) |v| {
482 const name = @tagName(self.abi.?);
483 try result.ensureUnusedCapacity(gpa, name.len + 2);
484 result.appendAssumeCapacity('-');
485 result.appendSliceAssumeCapacity(name);
486 result.appendAssumeCapacity('.');
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);
469 if (query.glibc_version) |v| {
470 try w.print("-{t}.{f}", .{ query.abi.?, PrintVersion{ .version = v } });
471 } else if (query.android_api_level) |lvl| {
472 try w.print("-{t}.{d}", .{ query.abi.?, lvl });
473 } else if (query.abi) |abi| {
474 try w.print("-{t}", .{abi});
500475 }
501
502 return result.toOwnedSlice(gpa);
503476}
504477
505/// Renders the query into a textual representation that can be parsed via the
478/// Prints the query into a textual representation that can be parsed via the
506479/// `-mcpu` flag passed to the Zig compiler.
507/// Appends the result to `buffer`.
508pub fn serializeCpu(q: Query, buffer: *std.array_list.Managed(u8)) Allocator.Error!void {
509 try buffer.ensureUnusedCapacity(8);
510 switch (q.cpu_model) {
511 .native => {
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 },
480pub fn printCpu(query: *const Query, w: *std.Io.Writer) std.Io.Writer.Error!void {
481 cpu_model: switch (query.cpu_model) {
482 .native, .baseline => |_, cpu_model| try w.print("{t}", .{cpu_model}),
483 .determined_by_arch_os => continue :cpu_model if (query.cpu_arch) |_| .baseline else .native,
484 .explicit => |model| try w.writeAll(model.name),
527485 }
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()) {
530488 // The CPU name alone is sufficient.
531489 return;
532490 }
533491
534 const cpu_arch = q.cpu_arch orelse builtin.cpu.arch;
492 const cpu_arch = query.cpu_arch orelse builtin.cpu.arch;
535493 const all_features = cpu_arch.allFeaturesList();
536494
537495 for (all_features, 0..) |feature, i_usize| {
538496 const i: Target.Cpu.Feature.Set.Index = @intCast(i_usize);
539 try buffer.ensureUnusedCapacity(feature.name.len + 1);
540 if (q.cpu_features_sub.isEnabled(i)) {
541 buffer.appendAssumeCapacity('-');
542 buffer.appendSliceAssumeCapacity(feature.name);
543 } else if (q.cpu_features_add.isEnabled(i)) {
544 buffer.appendAssumeCapacity('+');
545 buffer.appendSliceAssumeCapacity(feature.name);
497 if (query.cpu_features_sub.isEnabled(i)) {
498 try w.print("-{s}", .{feature.name});
499 } else if (query.cpu_features_add.isEnabled(i)) {
500 try w.print("+{s}", .{feature.name});
546501 }
547502 }
548503}
549504
550pub fn serializeCpuAlloc(q: Query, ally: Allocator) Allocator.Error![]u8 {
551 var buffer = std.array_list.Managed(u8).init(ally);
552 try serializeCpu(q, &buffer);
553 return buffer.toOwnedSlice();
505/// Deprecated; use `printZigTriple` instead. Will be removed in 0.19.0.
506pub fn zigTriple(query: Query, gpa: Allocator) Allocator.Error![]u8 {
507 return gpa.print("{f}", .{std.fmt.alt(&query, .printZigTriple)});
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)});
554518}
555519
556520/// Deprecated; use `zigTriple` instead. Will be removed in 0.18.0.
557pub fn allocDescription(self: Query, allocator: Allocator) ![]u8 {
558 return self.zigTriple(allocator);
521pub fn allocDescription(query: Query, allocator: Allocator) ![]u8 {
522 return query.zigTriple(allocator);
559523}
560524
561525/// Deprecated; set `glibc_version` directly. Will be removed in 0.18.0.
562pub fn setGnuLibCVersion(self: *Query, major: u32, minor: u32, patch: u32) void {
563 self.glibc_version = SemanticVersion{ .major = major, .minor = minor, .patch = patch };
526pub fn setGnuLibCVersion(query: *Query, major: u32, minor: u32, patch: u32) void {
527 query.glibc_version = SemanticVersion{ .major = major, .minor = minor, .patch = patch };
564528}
565529
566530fn parseOs(result: *Query, diags: *ParseOptions.Diagnostics, text: []const u8) !void {
test/Runner.zig+303-6
......@@ -3,6 +3,256 @@ const builtin = @import("builtin");
33const std = @import("std");
44const 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
6256gpa: std.mem.Allocator,
7257arena: *std.heap.ArenaAllocator,
8258environ_map: std.process.Environ.Map,
......@@ -908,22 +1158,69 @@ fn handleCommand(
9081158 return update.fail("target {q} unknown cache mode {q}", .{
9091159 update.target_query, cache_mode_str,
9101160 });
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;
9121173 break :target .{
9131174 .triple = triple,
9141175 .resolved = std.zig.system.resolveTargetQuery(
9151176 runner.io,
916 std.Build.parseTargetQuery(.{
1177 std.Target.Query.parse(.{
9171178 .arch_os_abi = triple,
1179 .cpu_features = cpu,
9181180 .object_format = switch (backend) {
9191181 .sema, .selfhosted, .llvm => null,
9201182 .llvmir => "llvmir",
9211183 .cbe => "c",
9221184 },
1185 .diagnostics = &query_parse_diags,
9231186 }) catch |err| switch (err) {
924 error.ParseFailed => return update.fail("unable to parse triple {q}", .{
925 triple,
926 }),
1187 error.UnknownArchitecture => return update.fail(
1188 "unable to resolve target {q}: unknown architecture: {q}",
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 ),
9271224 },
9281225 ) catch |err| switch (err) {
9291226 error.Canceled => |e| return e,
......@@ -1265,7 +1562,7 @@ const Compiler = struct {
12651562 mr_buffer: std.Io.File.MultiReader.Buffer(2),
12661563 mr: std.Io.File.MultiReader,
12671564 client: std.zig.Client,
1268 target: Target,
1565 target: Compiler.Target,
12691566 out_name: []const u8,
12701567 config: ?std.zig.Server.Message.Config,
12711568
test/cases.zig+1-2
......@@ -9,7 +9,6 @@ pub const BuildOptions = struct {
99 llvm_has_xtensa: bool,
1010};
1111
12pub fn addCases(cases: *Cases, build_options: BuildOptions, b: *std.Build) !void {
12pub fn addCases(cases: *Cases, b: *std.Build) !void {
1313 try @import("compile_errors.zig").addCases(cases, b);
14 try @import("llvm_targets.zig").addCases(cases, build_options, b);
1514}
test/debugger/enums+4-4
......@@ -1,8 +1,8 @@
11#todo "passes, but prints errors"
2#skip x86_64-linux-none-whole-selfhosted-new-nopic
3#skip x86_64-linux-none-whole-selfhosted-new-pic
4#skip x86_64-linux-none-incremental-selfhosted-new-nopic
5#skip x86_64-linux-none-incremental-selfhosted-new-pic
2#skip x86_64-linux-none-baseline-whole-selfhosted-new-nopic
3#skip x86_64-linux-none-baseline-whole-selfhosted-new-pic
4#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic
5#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic
66
77#exe {
88--name enums
test/debugger/errors+4-4
......@@ -1,8 +1,8 @@
11#todo "passes, but prints errors"
2#skip x86_64-linux-none-whole-selfhosted-new-nopic
3#skip x86_64-linux-none-whole-selfhosted-new-pic
4#skip x86_64-linux-none-incremental-selfhosted-new-nopic
5#skip x86_64-linux-none-incremental-selfhosted-new-pic
2#skip x86_64-linux-none-baseline-whole-selfhosted-new-nopic
3#skip x86_64-linux-none-baseline-whole-selfhosted-new-pic
4#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic
5#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic
66
77#exe {
88--name errors
test/debugger/inline_call/manifest+2-2
......@@ -1,6 +1,6 @@
11#todo "implement inline line info in lldb"
2#skip x86_64-linux-none-incremental-selfhosted-new-nopic
3#skip x86_64-linux-none-incremental-selfhosted-new-pic
2#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic
3#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic
44
55#exe {
66--name inline_call
test/debugger/matrix.zon+18-30
......@@ -1,65 +1,53 @@
11.{
22 .{
3 .target = .{
4 .cpu_arch = .x86_64,
5 .os_tag = .linux,
6 .abi = .none,
7 },
3 .cpu = .{ .x86_64 = .{} },
4 .os = .{ .linux = .{} },
5 .abi = .{ .none = .{} },
86 .cache_mode = .whole,
97 .backend = .selfhosted,
108 .linker = .old,
119 .pic = .nopic,
1210 },
1311 .{
14 .target = .{
15 .cpu_arch = .x86_64,
16 .os_tag = .linux,
17 .abi = .none,
18 },
12 .cpu = .{ .x86_64 = .{} },
13 .os = .{ .linux = .{} },
14 .abi = .{ .none = .{} },
1915 .cache_mode = .whole,
2016 .backend = .selfhosted,
2117 .linker = .old,
2218 .pic = .pic,
2319 },
2420 .{
25 .target = .{
26 .cpu_arch = .x86_64,
27 .os_tag = .linux,
28 .abi = .none,
29 },
21 .cpu = .{ .x86_64 = .{} },
22 .os = .{ .linux = .{} },
23 .abi = .{ .none = .{} },
3024 .cache_mode = .whole,
3125 .backend = .selfhosted,
3226 .linker = .new,
3327 .pic = .nopic,
3428 },
3529 .{
36 .target = .{
37 .cpu_arch = .x86_64,
38 .os_tag = .linux,
39 .abi = .none,
40 },
30 .cpu = .{ .x86_64 = .{} },
31 .os = .{ .linux = .{} },
32 .abi = .{ .none = .{} },
4133 .cache_mode = .whole,
4234 .backend = .selfhosted,
4335 .linker = .new,
4436 .pic = .pic,
4537 },
4638 .{
47 .target = .{
48 .cpu_arch = .x86_64,
49 .os_tag = .linux,
50 .abi = .none,
51 },
39 .cpu = .{ .x86_64 = .{} },
40 .os = .{ .linux = .{} },
41 .abi = .{ .none = .{} },
5242 .cache_mode = .incremental,
5343 .backend = .selfhosted,
5444 .linker = .new,
5545 .pic = .nopic,
5646 },
5747 .{
58 .target = .{
59 .cpu_arch = .x86_64,
60 .os_tag = .linux,
61 .abi = .none,
62 },
48 .cpu = .{ .x86_64 = .{} },
49 .os = .{ .linux = .{} },
50 .abi = .{ .none = .{} },
6351 .cache_mode = .incremental,
6452 .backend = .selfhosted,
6553 .linker = .new,
test/debugger/unions+4-4
......@@ -1,8 +1,8 @@
11#todo "passes, but prints errors"
2#skip x86_64-linux-none-whole-selfhosted-new-nopic
3#skip x86_64-linux-none-whole-selfhosted-new-pic
4#skip x86_64-linux-none-incremental-selfhosted-new-nopic
5#skip x86_64-linux-none-incremental-selfhosted-new-pic
2#skip x86_64-linux-none-baseline-whole-selfhosted-new-nopic
3#skip x86_64-linux-none-baseline-whole-selfhosted-new-pic
4#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic
5#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic
66
77#exe {
88--name unions
test/incremental/matrix.zon+15-25
......@@ -3,22 +3,18 @@
33 // to run due to the output (C source code or LLVM IR) being built non-incrementally (by Clang
44 // or LLVM). We just have a couple here to make sure that it works.
55 .{
6 .target = .{
7 .cpu_arch = .x86_64,
8 .os_tag = .linux,
9 .abi = .musl,
10 },
6 .cpu = .{ .x86_64 = .{} },
7 .os = .{ .linux = .{} },
8 .abi = .{ .musl = .{} },
119 .cache_mode = .incremental,
1210 .backend = .cbe,
1311 .linker = .old,
1412 .pic = .nopic,
1513 },
1614 .{
17 .target = .{
18 .cpu_arch = .x86_64,
19 .os_tag = .linux,
20 .abi = .none,
21 },
15 .cpu = .{ .x86_64 = .{} },
16 .os = .{ .linux = .{} },
17 .abi = .{ .none = .{} },
2218 .cache_mode = .incremental,
2319 .backend = .llvm,
2420 .linker = .lld,
......@@ -26,33 +22,27 @@
2622 },
2723
2824 .{
29 .target = .{
30 .cpu_arch = .x86_64,
31 .os_tag = .linux,
32 .abi = .none,
33 },
25 .cpu = .{ .x86_64 = .{} },
26 .os = .{ .linux = .{} },
27 .abi = .{ .none = .{} },
3428 .cache_mode = .incremental,
3529 .backend = .selfhosted,
3630 .linker = .new,
3731 .pic = .nopic,
3832 },
3933 .{
40 .target = .{
41 .cpu_arch = .x86_64,
42 .os_tag = .windows,
43 .abi = .none,
44 },
34 .cpu = .{ .x86_64 = .{} },
35 .os = .{ .windows = .{} },
36 .abi = .{ .none = .{} },
4537 .cache_mode = .incremental,
4638 .backend = .selfhosted,
4739 .linker = .old,
4840 .pic = .pic,
4941 },
5042 .{
51 .target = .{
52 .cpu_arch = .wasm32,
53 .os_tag = .wasi,
54 .abi = .none,
55 },
43 .cpu = .{ .wasm32 = .{} },
44 .os = .{ .wasi = .{} },
45 .abi = .{ .none = .{} },
5646 .cache_mode = .incremental,
5747 .backend = .selfhosted,
5848 .linker = .old,
test/llvm-ir/matrix.zon-1
......@@ -1,6 +1,5 @@
11.{
22 .{
3 .target = .{},
43 .cache_mode = .whole,
54 .backend = .llvmir,
65 .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.
164164 return &ctx.cases.items[ctx.cases.items.len - 1];
165165}
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
199167pub fn addObj(
200168 ctx: *Cases,
201169 name: []const u8,
test/tests.zig+18-25
......@@ -2186,19 +2186,6 @@ const link_targets = blk: {
21862186 };
21872187};
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
22022189pub fn addStackTraceTests(b: *std.Build, options: StackTracesContext.Options) *Step {
22032190 const step = b.step("test-stack-traces", "Run the stack trace tests");
22042191
......@@ -3037,7 +3024,6 @@ pub fn addCases(
30373024 b: *std.Build,
30383025 parent_step: *Step,
30393026 case_test_options: @import("src/Cases.zig").CaseTestOptions,
3040 build_options: @import("cases.zig").BuildOptions,
30413027) !void {
30423028 const arena = b.allocator;
30433029 const gpa = b.allocator;
......@@ -3051,7 +3037,7 @@ pub fn addCases(
30513037 defer dir.close(io);
30523038
30533039 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
30563042 cases.lowerToBuildSteps(
30573043 b,
......@@ -3060,6 +3046,7 @@ pub fn addCases(
30603046 );
30613047}
30623048
3049pub const RunnerTarget = @import("Runner.zig").Target;
30633050pub const RunnerOptions = struct {
30643051 test_filters: []const []const u8,
30653052 test_target_filters: []const []const u8,
......@@ -3072,10 +3059,13 @@ pub const RunnerOptions = struct {
30723059 skip_darwin: bool,
30733060 skip_linux: bool,
30743061 skip_llvm: bool,
3062 llvm_has_m68k: bool,
3063 llvm_has_csky: bool,
3064 llvm_has_arc: bool,
3065 llvm_has_xtensa: bool,
30753066 gdb: ?[]const u8,
30763067 lldb: ?[]const u8,
30773068};
3078
30793069pub fn addRunnerTests(
30803070 b: *std.Build,
30813071 runner: *std.Build.Step.Compile,
......@@ -3119,7 +3109,7 @@ pub fn addRunnerTests(
31193109 _ = run.addPrefixedOutputDirectoryArg("--src=", "src");
31203110
31213111 for (matrix) |test_target| {
3122 const resolved_target = b.resolveTargetQuery(test_target.target);
3112 const resolved_target = b.resolveTargetQuery(test_target.toQuery());
31233113
31243114 if (options.skip_non_native and !std.zig.target.isNative(&resolved_target.query, &resolved_target.result, &b.graph.host.result))
31253115 continue;
......@@ -3135,15 +3125,18 @@ pub fn addRunnerTests(
31353125 if (options.skip_darwin and target.os.tag.isDarwin()) continue;
31363126 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}", .{
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 });
3139 const target_str = b.fmt("{f}", .{test_target});
31473140
31483141 for (options.test_target_filters) |filter| {
31493142 if (std.mem.find(u8, target_str, filter) != null) break;