diff --git a/build.zig b/build.zig index cca0bdb582e373599b54faef9414cc7a6eef393e..985418a1389f8aa1bd131e3d338d88afa8600943 100644 --- a/build.zig +++ b/build.zig @@ -504,12 +504,6 @@ pub fn build(b: *std.Build) !void { .skip_linux = skip_linux, .skip_llvm = skip_llvm, .skip_libc = skip_libc, - }, .{ - .enable_llvm = enable_llvm, - .llvm_has_m68k = llvm_has_m68k, - .llvm_has_csky = llvm_has_csky, - .llvm_has_arc = llvm_has_arc, - .llvm_has_xtensa = llvm_has_xtensa, }); test_step.dependOn(test_cases_step); @@ -804,6 +798,10 @@ pub fn build(b: *std.Build) !void { .skip_darwin = skip_darwin, .skip_linux = skip_linux, .skip_llvm = skip_llvm, + .llvm_has_m68k = llvm_has_m68k, + .llvm_has_csky = llvm_has_csky, + .llvm_has_arc = llvm_has_arc, + .llvm_has_xtensa = llvm_has_xtensa, .gdb = b.option([]const u8, "gdb", "path to gdb binary"), .lldb = b.option([]const u8, "lldb", "path to lldb binary"), }; @@ -821,6 +819,10 @@ pub fn build(b: *std.Build) !void { const test_llvm_ir_step = b.step("test-llvm-ir", "Run the LLVM IR tests"); try tests.addRunnerTests(b, runner, test_llvm_ir_step, "test/llvm-ir", @import("test/llvm-ir/matrix.zon"), runner_opts); test_step.dependOn(test_llvm_ir_step); + + const test_llvm_targets_step = b.step("test-llvm-targets", "Run the LLVM targets tests"); + try tests.addRunnerTests(b, runner, test_llvm_targets_step, "test/llvm-targets", @import("test/llvm-targets/matrix.zon"), runner_opts); + test_step.dependOn(test_llvm_targets_step); } fn addWasiUpdateStep(b: *std.Build, version: [:0]const u8) !void { diff --git a/lib/std/Target/Query.zig b/lib/std/Target/Query.zig index 91df353ef218342e4e790e2c64318dfef52ae797..bace539353e1fb9427d7e355a679ecf80275bd1b 100644 --- a/lib/std/Target/Query.zig +++ b/lib/std/Target/Query.zig @@ -261,13 +261,11 @@ pub fn parse(args: ParseOptions) !Query { if (abi_it.next() != null) { if (abi.isGnu()) { result.glibc_version = parseVersion(abi_ver_text) catch |err| switch (err) { - error.Overflow => return error.InvalidAbiVersion, - error.InvalidVersion => return error.InvalidAbiVersion, + error.Overflow, error.InvalidVersion => return error.InvalidAbiVersion, }; } else if (abi.isAndroid()) { result.android_api_level = std.fmt.parseUnsigned(u32, abi_ver_text, 10) catch |err| switch (err) { - error.InvalidCharacter => return error.InvalidVersion, - error.Overflow => |e| return e, + error.InvalidCharacter, error.Overflow => return error.InvalidAbiVersion, }; } else { return error.InvalidAbiVersion; @@ -428,139 +426,105 @@ pub fn canDetectLibC(self: Query) bool { return false; } -/// Formats a version with the patch component omitted if it is zero, +/// Prints a version with the patch component omitted if it is zero, /// unlike SemanticVersion.format which formats all its version components regardless. -fn formatVersion(version: SemanticVersion, gpa: Allocator, list: *ArrayList(u8)) !void { - if (version.patch == 0) { - try list.print(gpa, "{d}.{d}", .{ version.major, version.minor }); - } else { - try list.print(gpa, "{d}.{d}.{d}", .{ version.major, version.minor, version.patch }); +pub const PrintVersion = struct { + version: SemanticVersion, + pub fn format(print: PrintVersion, w: *std.Io.Writer) std.Io.Writer.Error!void { + try w.print("{d}.{d}", .{ print.version.major, print.version.minor }); + switch (print.version.patch) { + 0 => {}, + else => |patch| try w.print(".{d}", .{patch}), + } } -} +}; -pub fn zigTriple(self: Query, gpa: Allocator) Allocator.Error![]u8 { - if (self.isNativeTriple()) return gpa.dupe(u8, "native"); +pub fn printZigTriple(query: *const Query, w: *std.Io.Writer) std.Io.Writer.Error!void { + if (query.isNativeTriple()) return w.writeAll("native"); - const arch_name = if (self.cpu_arch) |arch| @tagName(arch) else "native"; - const os_name = if (self.os_tag) |os_tag| @tagName(os_tag) else "native"; - - var result: ArrayList(u8) = .empty; - defer result.deinit(gpa); - - try result.print(gpa, "{s}-{s}", .{ arch_name, os_name }); + try w.print("{s}-{s}", .{ + if (query.cpu_arch) |arch| @tagName(arch) else "native", + if (query.os_tag) |os_tag| @tagName(os_tag) else "native", + }); // The zig target syntax does not allow specifying a max os version with no min, so // if either are present, we need the min. - if (self.os_version_min) |min| { + if (query.os_version_min) |min| { switch (min) { .none => {}, - .semver => |v| { - try result.appendSlice(gpa, "."); - try formatVersion(v, gpa, &result); - }, - .windows => |v| { - try result.print(gpa, "{f}", .{v}); - }, + .semver => |v| try w.print(".{f}", .{PrintVersion{ .version = v }}), + .windows => |v| try w.print("{f}", .{v}), } } - if (self.os_version_max) |max| { + if (query.os_version_max) |max| { switch (max) { .none => {}, - .semver => |v| { - try result.appendSlice(gpa, "..."); - try formatVersion(v, gpa, &result); - }, - .windows => |v| { - // This is counting on a custom format() function defined on `WindowsVersion` - // to add a prefix '.' and make there be a total of three dots. - try result.print(gpa, "..{f}", .{v}); - }, + .semver => |v| try w.print("...{f}", .{PrintVersion{ .version = v }}), + // This is counting on a custom format() function defined on `WindowsVersion` + // to add a prefix '.' and make there be a total of three dots. + .windows => |v| try w.print("..{f}", .{v}), } } - if (self.glibc_version) |v| { - const name = @tagName(self.abi.?); - try result.ensureUnusedCapacity(gpa, name.len + 2); - result.appendAssumeCapacity('-'); - result.appendSliceAssumeCapacity(name); - result.appendAssumeCapacity('.'); - try formatVersion(v, gpa, &result); - } else if (self.android_api_level) |lvl| { - const name = @tagName(self.abi.?); - try result.ensureUnusedCapacity(gpa, name.len + 2); - result.appendAssumeCapacity('-'); - result.appendSliceAssumeCapacity(name); - result.appendAssumeCapacity('.'); - try result.print(gpa, "{d}", .{lvl}); - } else if (self.abi) |abi| { - const name = @tagName(abi); - try result.ensureUnusedCapacity(gpa, name.len + 1); - result.appendAssumeCapacity('-'); - result.appendSliceAssumeCapacity(name); + if (query.glibc_version) |v| { + try w.print("-{t}.{f}", .{ query.abi.?, PrintVersion{ .version = v } }); + } else if (query.android_api_level) |lvl| { + try w.print("-{t}.{d}", .{ query.abi.?, lvl }); + } else if (query.abi) |abi| { + try w.print("-{t}", .{abi}); } - - return result.toOwnedSlice(gpa); } -/// Renders the query into a textual representation that can be parsed via the +/// Prints the query into a textual representation that can be parsed via the /// `-mcpu` flag passed to the Zig compiler. -/// Appends the result to `buffer`. -pub fn serializeCpu(q: Query, buffer: *std.array_list.Managed(u8)) Allocator.Error!void { - try buffer.ensureUnusedCapacity(8); - switch (q.cpu_model) { - .native => { - buffer.appendSliceAssumeCapacity("native"); - }, - .baseline => { - buffer.appendSliceAssumeCapacity("baseline"); - }, - .determined_by_arch_os => { - if (q.cpu_arch == null) { - buffer.appendSliceAssumeCapacity("native"); - } else { - buffer.appendSliceAssumeCapacity("baseline"); - } - }, - .explicit => |model| { - try buffer.appendSlice(model.name); - }, +pub fn printCpu(query: *const Query, w: *std.Io.Writer) std.Io.Writer.Error!void { + cpu_model: switch (query.cpu_model) { + .native, .baseline => |_, cpu_model| try w.print("{t}", .{cpu_model}), + .determined_by_arch_os => continue :cpu_model if (query.cpu_arch) |_| .baseline else .native, + .explicit => |model| try w.writeAll(model.name), } - if (q.cpu_features_add.isEmpty() and q.cpu_features_sub.isEmpty()) { + if (query.cpu_features_add.isEmpty() and query.cpu_features_sub.isEmpty()) { // The CPU name alone is sufficient. return; } - const cpu_arch = q.cpu_arch orelse builtin.cpu.arch; + const cpu_arch = query.cpu_arch orelse builtin.cpu.arch; const all_features = cpu_arch.allFeaturesList(); for (all_features, 0..) |feature, i_usize| { const i: Target.Cpu.Feature.Set.Index = @intCast(i_usize); - try buffer.ensureUnusedCapacity(feature.name.len + 1); - if (q.cpu_features_sub.isEnabled(i)) { - buffer.appendAssumeCapacity('-'); - buffer.appendSliceAssumeCapacity(feature.name); - } else if (q.cpu_features_add.isEnabled(i)) { - buffer.appendAssumeCapacity('+'); - buffer.appendSliceAssumeCapacity(feature.name); + if (query.cpu_features_sub.isEnabled(i)) { + try w.print("-{s}", .{feature.name}); + } else if (query.cpu_features_add.isEnabled(i)) { + try w.print("+{s}", .{feature.name}); } } } -pub fn serializeCpuAlloc(q: Query, ally: Allocator) Allocator.Error![]u8 { - var buffer = std.array_list.Managed(u8).init(ally); - try serializeCpu(q, &buffer); - return buffer.toOwnedSlice(); +/// Deprecated; use `printZigTriple` instead. Will be removed in 0.19.0. +pub fn zigTriple(query: Query, gpa: Allocator) Allocator.Error![]u8 { + return gpa.print("{f}", .{std.fmt.alt(&query, .printZigTriple)}); +} + +/// Deprecated; use `printCpu` instead. Will be removed in 0.19.0. +pub fn serializeCpu(query: Query, buffer: *std.array_list.Managed(u8)) Allocator.Error!void { + try buffer.print("{f}", .{std.fmt.alt(&query, .printCpu)}); +} + +/// Deprecated; use `printCpu` instead. Will be removed in 0.19.0. +pub fn serializeCpuAlloc(query: Query, gpa: Allocator) Allocator.Error![]u8 { + return gpa.print("{f}", .{std.fmt.alt(&query, .printCpu)}); } /// Deprecated; use `zigTriple` instead. Will be removed in 0.18.0. -pub fn allocDescription(self: Query, allocator: Allocator) ![]u8 { - return self.zigTriple(allocator); +pub fn allocDescription(query: Query, allocator: Allocator) ![]u8 { + return query.zigTriple(allocator); } /// Deprecated; set `glibc_version` directly. Will be removed in 0.18.0. -pub fn setGnuLibCVersion(self: *Query, major: u32, minor: u32, patch: u32) void { - self.glibc_version = SemanticVersion{ .major = major, .minor = minor, .patch = patch }; +pub fn setGnuLibCVersion(query: *Query, major: u32, minor: u32, patch: u32) void { + query.glibc_version = SemanticVersion{ .major = major, .minor = minor, .patch = patch }; } fn parseOs(result: *Query, diags: *ParseOptions.Diagnostics, text: []const u8) !void { diff --git a/test/Runner.zig b/test/Runner.zig index 5be751b87806c1b2bf6e16b3249722a134805d54..858809125745c16e9f9ccc17b7c8f4d2bc245130 100644 --- a/test/Runner.zig +++ b/test/Runner.zig @@ -3,6 +3,256 @@ const builtin = @import("builtin"); const std = @import("std"); const Runner = @This(); +/// These are passed as `----` strings. +/// +/// If only one specific test is failing on a target, instead of entirely disabling the target here, you +/// can skip the target for that specific test only by adding a line like this to top of the manifest: +/// +/// #skip x86_64-linux-none-baseline-whole-selfhosted-new-pic +pub const Target = struct { + cpu: Cpu = .{ .native = .{} }, + os: Os = .native, + abi: Abi = .default, + ofmt: ObjectFormat = .default, + dynamic_linker: DynamicLinker = .default, + + cache_mode: enum { whole, incremental }, + backend: enum { selfhosted, llvm, llvmir, cbe }, + linker: enum { lld, old, new }, + pic: enum { nopic, pic, pie }, + + pub const Cpu = Cpu: { + @setEvalBranchQuota(3_000); + const Arch = std.Target.Cpu.Arch; + const arch_info = @typeInfo(Arch).@"enum"; + const field_names = .{"native"} ++ arch_info.field_names; + var field_types: [field_names.len]type = undefined; + field_types[0] = struct { + model: Model = .native, + + pub const Model = enum { native, baseline }; + }; + for (field_types[1..], field_names[1..]) |*field_type, field_name| { + const arch = @field(Arch, field_name); + const models = arch.allCpuModels(); + const family = @field(std.Target, @tagName(arch.family())); + field_type.* = struct { + model: Model = .baseline, + features: struct { + add: []const Feature = &.{}, + remove: []const Feature = &.{}, + comptime { + _ = &family; // hack around compiler bug + } + } = .{}, + + pub const Model = Model: { + const explicit_models = @typeInfo(family.cpu).@"struct".decl_names; + var model_names: []const []const u8 = &.{"native"}; + if (!@hasDecl(family.cpu, "baseline")) model_names = model_names ++ .{"baseline"}; + model_names = model_names ++ explicit_models; + const TagInt = std.math.IntFittingRange(0, model_names.len - 1); + var model_values: [model_names.len]TagInt = undefined; + var model_index = 0; + { + var model_value = explicit_models.len; + model_values[model_index] = model_value; + model_index += 1; + model_value += 1; + if (!@hasDecl(family.cpu, "baseline")) { + model_values[model_index] = model_value; + model_index += 1; + model_value += 1; + } + } + for (model_values[model_index..], 0..) |*model_value, value| model_value.* = value; + break :Model @Enum(TagInt, .exhaustive, model_names, &model_values); + }; + + pub const Feature = family.Feature; + + pub fn updateQuery(cpu: *const @This(), query: *std.Target.Query) void { + query.cpu_model = switch (cpu.model) { + .native => .native, + .baseline => .baseline, + else => |model| .{ .explicit = models[@backingInt(model)] }, + }; + for (cpu.features.add) |add_feature| + query.cpu_features_add.addFeature(@backingInt(add_feature)); + for (cpu.features.remove) |remove_feature| + query.cpu_features_sub.addFeature(@backingInt(remove_feature)); + } + }; + } + const TagInt = std.math.IntFittingRange(0, field_names.len - 1); + var field_values: [field_names.len]TagInt = undefined; + field_values[0] = field_names.len - 1; + for (field_values[1..], arch_info.field_values) |*field_value, value| field_value.* = value; + const Tag = @Enum(TagInt, .exhaustive, field_names, &field_values); + break :Cpu @Union(.auto, Tag, field_names, &field_types, &@splat(.{})); + }; + + pub const Os = Os: { + const os_info = @typeInfo(std.Target.Os.Tag).@"enum"; + const field_names = .{"native"} ++ os_info.field_names; + var field_types: [field_names.len]type = undefined; + field_types[0] = void; + for (field_types[1..], field_names[1..]) |*field_type, field_name| { + const version: enum { + none, + semver, + windows, + } = switch (@field(std.Target.Os.Tag, field_name).versionRangeTag()) { + .none => .none, + .semver, .hurd, .linux => .semver, + .windows => .windows, + }; + field_type.* = struct { + version: ?Version = null, + + pub const Version = switch (version) { + .none => struct {}, + .semver => struct { + min: std.SemanticVersion, + max: ?std.SemanticVersion = null, + }, + .windows => struct { + min: std.Target.Os.WindowsVersion, + max: ?std.Target.Os.WindowsVersion = null, + }, + }; + + pub fn updateQuery(os: *const @This(), query: *std.Target.Query) void { + if (os.version) |v| switch (version) { + .none => {}, + .semver => { + query.os_version_min = .{ .semver = v.min }; + if (v.max) |max| query.os_version_max = .{ .semver = max }; + }, + .windows => { + query.os_version_min = .{ .windows = v.min }; + if (v.max) |max| query.os_version_max = .{ .windows = max }; + }, + }; + } + }; + } + const TagInt = std.math.IntFittingRange(0, field_names.len - 1); + var field_values: [field_names.len]TagInt = undefined; + field_values[0] = field_names.len - 1; + for (field_values[1..], os_info.field_values) |*field_value, value| field_value.* = value; + const Tag = @Enum(TagInt, .exhaustive, field_names, &field_values); + break :Os @Union(.auto, Tag, field_names, &field_types, &@splat(.{})); + }; + + pub const Abi = Abi: { + const abi_info = @typeInfo(std.Target.Abi).@"enum"; + const field_names = .{"default"} ++ abi_info.field_names; + var field_types: [field_names.len]type = undefined; + field_types[0] = void; + for (field_types[1..], field_names[1..]) |*field_type, field_name| { + const abi_tag = @field(std.Target.Abi, field_name); + const version: enum { none, libc, android } = if (abi_tag.isAndroid()) + .android + else if (abi_tag.isGnu() or abi_tag.isMusl()) + .libc + else + .none; + field_type.* = struct { + version: ?Version = null, + + pub const Version = switch (version) { + .none => struct {}, + .libc => std.SemanticVersion, + .android => u32, + }; + + pub fn updateQuery(abi: *const @This(), query: *std.Target.Query) void { + if (abi.version) |v| switch (version) { + .none => {}, + .libc => query.glibc_version = v, + .android => query.android_api_level = v, + }; + } + }; + } + const TagInt = std.math.IntFittingRange(0, field_names.len - 1); + var field_values: [field_names.len]TagInt = undefined; + field_values[0] = field_names.len - 1; + for (field_values[1..], abi_info.field_values) |*field_value, value| field_value.* = value; + const Tag = @Enum(TagInt, .exhaustive, field_names, &field_values); + break :Abi @Union(.auto, Tag, field_names, &field_types, &@splat(.{})); + }; + + pub const ObjectFormat = ObjectFormat: { + const ofmt_info = @typeInfo(std.Target.ObjectFormat).@"enum"; + const field_names = .{"default"} ++ ofmt_info.field_names; + const TagInt = std.math.IntFittingRange(0, field_names.len - 1); + var field_values: [field_names.len]TagInt = undefined; + field_values[0] = field_names.len - 1; + for (field_values[1..], ofmt_info.field_values) |*field_value, value| field_value.* = value; + break :ObjectFormat @Enum(TagInt, .exhaustive, field_names, &field_values); + }; + + pub const DynamicLinker = union(enum) { + default, + none, + explicit: []const u8, + }; + + pub fn toQuery(target: *const Target) std.Target.Query { + var query: std.Target.Query = .{}; + query.cpu_arch = switch (target.cpu) { + .native => null, + else => |_, arch| @fromBackingInt(@backingInt(arch)), + }; + switch (target.cpu) { + .native => |native| query.cpu_model = switch (native.model) { + .native => .native, + .baseline => .baseline, + }, + inline else => |cpu| cpu.updateQuery(&query), + } + query.os_tag = switch (target.os) { + .native => null, + else => |_, os| @fromBackingInt(@backingInt(os)), + }; + switch (target.os) { + .native => {}, + inline else => |os| os.updateQuery(&query), + } + query.abi = switch (target.abi) { + .default => null, + else => |_, abi| @fromBackingInt(@backingInt(abi)), + }; + switch (target.abi) { + .default => {}, + inline else => |abi| abi.updateQuery(&query), + } + query.ofmt = switch (target.ofmt) { + .default => null, + else => |ofmt| @fromBackingInt(@backingInt(ofmt)), + }; + query.dynamic_linker = switch (target.dynamic_linker) { + .default => null, + .none => .none, + .explicit => |dynamic_linker| .init(dynamic_linker), + }; + return query; + } + + pub fn format(target: *const Target, w: *std.Io.Writer) std.Io.Writer.Error!void { + try w.print("{f}-{f}-{t}-{t}-{t}-{t}", .{ + std.fmt.alt(&target.toQuery(), .printZigTriple), + std.fmt.alt(&target.toQuery(), .printCpu), + target.cache_mode, + target.backend, + target.linker, + target.pic, + }); + } +}; + gpa: std.mem.Allocator, arena: *std.heap.ArenaAllocator, environ_map: std.process.Environ.Map, @@ -908,22 +1158,69 @@ fn handleCommand( return update.fail("target {q} unknown cache mode {q}", .{ update.target_query, cache_mode_str, }); - const triple = component_it.rest(); + const triple_cpu = component_it.rest(); + var triple_len: usize = 0; + for (0..3) |_| { + triple_len = if (std.mem.findScalarPos(u8, triple_cpu, triple_len, '-')) |dash_pos| + dash_pos + 1 + else + return update.fail("target {q} missing cpu", .{update.target_query}); + if (std.mem.eql(u8, triple_cpu[0..triple_len], "native-")) break; + } + const triple = triple_cpu[0 .. triple_len - 1]; + const cpu = triple_cpu[triple_len..]; + var query_parse_diags: std.Target.Query.ParseOptions.Diagnostics = undefined; break :target .{ .triple = triple, .resolved = std.zig.system.resolveTargetQuery( runner.io, - std.Build.parseTargetQuery(.{ + std.Target.Query.parse(.{ .arch_os_abi = triple, + .cpu_features = cpu, .object_format = switch (backend) { .sema, .selfhosted, .llvm => null, .llvmir => "llvmir", .cbe => "c", }, + .diagnostics = &query_parse_diags, }) catch |err| switch (err) { - error.ParseFailed => return update.fail("unable to parse triple {q}", .{ - triple, - }), + error.UnknownArchitecture => return update.fail( + "unable to resolve target {q}: unknown architecture: {q}", + .{ update.target_query, query_parse_diags.unknown_architecture_name.? }, + ), + error.MissingOperatingSystem => return update.fail( + "unable to resolve target {q}: missing operating system", + .{update.target_query}, + ), + error.UnknownOperatingSystem => return update.fail( + "unable to resolve target {q}: unknown operating system: {q}", + .{ update.target_query, query_parse_diags.os_name.? }, + ), + error.InvalidOperatingSystemVersion => return update.fail( + "unable to resolve target {q}: invalid operating system version", + .{update.target_query}, + ), + error.UnknownApplicationBinaryInterface => return update.fail( + "unable to resolve target {q}: unknown abi", + .{update.target_query}, + ), + error.InvalidAbiVersion => return update.fail( + "unable to resolve target {q}: invalid abi version", + .{update.target_query}, + ), + error.UnexpectedExtraField => unreachable, // validated above + error.UnknownCpuModel => return update.fail( + "unable to resolve target {q}: unknown cpu: {q}", + .{ update.target_query, query_parse_diags.cpu_name.? }, + ), + error.UnknownCpuFeature => return update.fail( + "unable to resolve target {q}: unknown cpu feature: {q}", + .{ update.target_query, query_parse_diags.unknown_feature_name.? }, + ), + error.UnknownObjectFormat => return update.fail( + "unable to resolve target {q}: unknown object format", + .{update.target_query}, + ), }, ) catch |err| switch (err) { error.Canceled => |e| return e, @@ -1265,7 +1562,7 @@ const Compiler = struct { mr_buffer: std.Io.File.MultiReader.Buffer(2), mr: std.Io.File.MultiReader, client: std.zig.Client, - target: Target, + target: Compiler.Target, out_name: []const u8, config: ?std.zig.Server.Message.Config, diff --git a/test/cases.zig b/test/cases.zig index 834855099ed17dd16b981c22c01935bd460a7906..573a10764e5530319655a46fa3f7ec5a8c319af4 100644 --- a/test/cases.zig +++ b/test/cases.zig @@ -9,7 +9,6 @@ pub const BuildOptions = struct { llvm_has_xtensa: bool, }; -pub fn addCases(cases: *Cases, build_options: BuildOptions, b: *std.Build) !void { +pub fn addCases(cases: *Cases, b: *std.Build) !void { try @import("compile_errors.zig").addCases(cases, b); - try @import("llvm_targets.zig").addCases(cases, build_options, b); } diff --git a/test/debugger/enums b/test/debugger/enums index dfd6375be0cdad75c30e4c0f41ba1ad9ce87adcb..10888bfe4ee60a51d7b04d3719c97c71f1dfa42a 100644 --- a/test/debugger/enums +++ b/test/debugger/enums @@ -1,8 +1,8 @@ #todo "passes, but prints errors" -#skip x86_64-linux-none-whole-selfhosted-new-nopic -#skip x86_64-linux-none-whole-selfhosted-new-pic -#skip x86_64-linux-none-incremental-selfhosted-new-nopic -#skip x86_64-linux-none-incremental-selfhosted-new-pic +#skip x86_64-linux-none-baseline-whole-selfhosted-new-nopic +#skip x86_64-linux-none-baseline-whole-selfhosted-new-pic +#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic +#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic #exe { --name enums diff --git a/test/debugger/errors b/test/debugger/errors index 8a8143330ac40d161c7c2f229a6deeb263c6bc66..4d8eadbd4098275511016d87a7d6705264f973eb 100644 --- a/test/debugger/errors +++ b/test/debugger/errors @@ -1,8 +1,8 @@ #todo "passes, but prints errors" -#skip x86_64-linux-none-whole-selfhosted-new-nopic -#skip x86_64-linux-none-whole-selfhosted-new-pic -#skip x86_64-linux-none-incremental-selfhosted-new-nopic -#skip x86_64-linux-none-incremental-selfhosted-new-pic +#skip x86_64-linux-none-baseline-whole-selfhosted-new-nopic +#skip x86_64-linux-none-baseline-whole-selfhosted-new-pic +#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic +#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic #exe { --name errors diff --git a/test/debugger/inline_call/manifest b/test/debugger/inline_call/manifest index f23cf902c8e1da1a5b670744003ae295b4283a01..ba99272bea5103cb01277ea4a4903a798487a24e 100644 --- a/test/debugger/inline_call/manifest +++ b/test/debugger/inline_call/manifest @@ -1,6 +1,6 @@ #todo "implement inline line info in lldb" -#skip x86_64-linux-none-incremental-selfhosted-new-nopic -#skip x86_64-linux-none-incremental-selfhosted-new-pic +#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic +#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic #exe { --name inline_call diff --git a/test/debugger/matrix.zon b/test/debugger/matrix.zon index a3b36d803468d510b7a6af7c64c90efb3e37060b..fb9bc41d4ba88ae453950a6fe5b21ba4efae67e2 100644 --- a/test/debugger/matrix.zon +++ b/test/debugger/matrix.zon @@ -1,65 +1,53 @@ .{ .{ - .target = .{ - .cpu_arch = .x86_64, - .os_tag = .linux, - .abi = .none, - }, + .cpu = .{ .x86_64 = .{} }, + .os = .{ .linux = .{} }, + .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .selfhosted, .linker = .old, .pic = .nopic, }, .{ - .target = .{ - .cpu_arch = .x86_64, - .os_tag = .linux, - .abi = .none, - }, + .cpu = .{ .x86_64 = .{} }, + .os = .{ .linux = .{} }, + .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .selfhosted, .linker = .old, .pic = .pic, }, .{ - .target = .{ - .cpu_arch = .x86_64, - .os_tag = .linux, - .abi = .none, - }, + .cpu = .{ .x86_64 = .{} }, + .os = .{ .linux = .{} }, + .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .selfhosted, .linker = .new, .pic = .nopic, }, .{ - .target = .{ - .cpu_arch = .x86_64, - .os_tag = .linux, - .abi = .none, - }, + .cpu = .{ .x86_64 = .{} }, + .os = .{ .linux = .{} }, + .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .selfhosted, .linker = .new, .pic = .pic, }, .{ - .target = .{ - .cpu_arch = .x86_64, - .os_tag = .linux, - .abi = .none, - }, + .cpu = .{ .x86_64 = .{} }, + .os = .{ .linux = .{} }, + .abi = .{ .none = .{} }, .cache_mode = .incremental, .backend = .selfhosted, .linker = .new, .pic = .nopic, }, .{ - .target = .{ - .cpu_arch = .x86_64, - .os_tag = .linux, - .abi = .none, - }, + .cpu = .{ .x86_64 = .{} }, + .os = .{ .linux = .{} }, + .abi = .{ .none = .{} }, .cache_mode = .incremental, .backend = .selfhosted, .linker = .new, diff --git a/test/debugger/unions b/test/debugger/unions index 786ba275cbf92d418ac4db98301ed24c3214217b..f999ee37135bcfcf027bcd1573b4d322a2fb12c3 100644 --- a/test/debugger/unions +++ b/test/debugger/unions @@ -1,8 +1,8 @@ #todo "passes, but prints errors" -#skip x86_64-linux-none-whole-selfhosted-new-nopic -#skip x86_64-linux-none-whole-selfhosted-new-pic -#skip x86_64-linux-none-incremental-selfhosted-new-nopic -#skip x86_64-linux-none-incremental-selfhosted-new-pic +#skip x86_64-linux-none-baseline-whole-selfhosted-new-nopic +#skip x86_64-linux-none-baseline-whole-selfhosted-new-pic +#skip x86_64-linux-none-baseline-incremental-selfhosted-new-nopic +#skip x86_64-linux-none-baseline-incremental-selfhosted-new-pic #exe { --name unions diff --git a/test/incremental/matrix.zon b/test/incremental/matrix.zon index 7c239ec719c4d5d5ccaf2b0e96cc305633f7d38f..2f62c48bdbd44b68ab91628bd187e2321d3f2518 100644 --- a/test/incremental/matrix.zon +++ b/test/incremental/matrix.zon @@ -3,22 +3,18 @@ // to run due to the output (C source code or LLVM IR) being built non-incrementally (by Clang // or LLVM). We just have a couple here to make sure that it works. .{ - .target = .{ - .cpu_arch = .x86_64, - .os_tag = .linux, - .abi = .musl, - }, + .cpu = .{ .x86_64 = .{} }, + .os = .{ .linux = .{} }, + .abi = .{ .musl = .{} }, .cache_mode = .incremental, .backend = .cbe, .linker = .old, .pic = .nopic, }, .{ - .target = .{ - .cpu_arch = .x86_64, - .os_tag = .linux, - .abi = .none, - }, + .cpu = .{ .x86_64 = .{} }, + .os = .{ .linux = .{} }, + .abi = .{ .none = .{} }, .cache_mode = .incremental, .backend = .llvm, .linker = .lld, @@ -26,33 +22,27 @@ }, .{ - .target = .{ - .cpu_arch = .x86_64, - .os_tag = .linux, - .abi = .none, - }, + .cpu = .{ .x86_64 = .{} }, + .os = .{ .linux = .{} }, + .abi = .{ .none = .{} }, .cache_mode = .incremental, .backend = .selfhosted, .linker = .new, .pic = .nopic, }, .{ - .target = .{ - .cpu_arch = .x86_64, - .os_tag = .windows, - .abi = .none, - }, + .cpu = .{ .x86_64 = .{} }, + .os = .{ .windows = .{} }, + .abi = .{ .none = .{} }, .cache_mode = .incremental, .backend = .selfhosted, .linker = .old, .pic = .pic, }, .{ - .target = .{ - .cpu_arch = .wasm32, - .os_tag = .wasi, - .abi = .none, - }, + .cpu = .{ .wasm32 = .{} }, + .os = .{ .wasi = .{} }, + .abi = .{ .none = .{} }, .cache_mode = .incremental, .backend = .selfhosted, .linker = .old, diff --git a/test/llvm-ir/matrix.zon b/test/llvm-ir/matrix.zon index 681e7f7c3a925f928804bb598be3b52a5fabad59..4c810d784d3a445f913defa190d1c6e55a230b38 100644 --- a/test/llvm-ir/matrix.zon +++ b/test/llvm-ir/matrix.zon @@ -1,6 +1,5 @@ .{ .{ - .target = .{}, .cache_mode = .whole, .backend = .llvmir, .linker = .old, diff --git a/test/llvm-targets/empty_analyze b/test/llvm-targets/empty_analyze new file mode 100644 index 0000000000000000000000000000000000000000..c6fdbea1129cc1a7ec6107a812a899d99d46817a --- /dev/null +++ b/test/llvm-targets/empty_analyze @@ -0,0 +1,50 @@ +#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic +#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic + +#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic +#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic + +#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic +#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic +#skip csky-linux-eabi-baseline-whole-llvm-lld-pic +#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic +#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic +#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic + +#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic +#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic +#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic +#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic +#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic + +#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic +#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic +#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic + +#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic + +#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic + +#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic + +#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic + +#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic + +#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic +#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic +#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic + +#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic +#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic +#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic + +#obj { +--name llvm_targets +-Mroot=analyze.zig +-fno-emit-asm -fno-emit-bin +#} + +#write analyze.zig +#update +#check errors diff --git a/test/llvm-targets/empty_assembly b/test/llvm-targets/empty_assembly new file mode 100644 index 0000000000000000000000000000000000000000..e140e4f6fcfa0108147f877626e267311203dbd6 --- /dev/null +++ b/test/llvm-targets/empty_assembly @@ -0,0 +1,55 @@ +#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic +#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic + +#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic +#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic + +#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic +#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic +#skip csky-linux-eabi-baseline-whole-llvm-lld-pic +#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic +#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic +#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic + +#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic +#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic +#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic +#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic +#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic + +#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic +#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic +#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic + +#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic + +#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic + +#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic + +#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic + +#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic + +#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic +#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic +#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic + +#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic +#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic +#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic + +#skip xtensa-freestanding-call0-baseline-whole-llvm-lld-pic +#skip xtensa-freestanding-none-baseline-whole-llvm-lld-pic +#skip xtensa-linux-call0-baseline-whole-llvm-lld-pic +#skip xtensa-linux-none-baseline-whole-llvm-lld-pic + +#obj { +--name llvm_targets +-Mroot=assembly.zig +-femit-asm -fno-emit-bin +#} + +#write assembly.zig +#update +#check errors diff --git a/test/llvm-targets/empty_object b/test/llvm-targets/empty_object new file mode 100644 index 0000000000000000000000000000000000000000..6d52ba2d3a9ee515e453f9d13b7bdb1249615391 --- /dev/null +++ b/test/llvm-targets/empty_object @@ -0,0 +1,67 @@ +#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic +#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic + +#skip arc-freestanding-none-baseline-whole-llvm-lld-pic +#skip arc-linux-gnu-baseline-whole-llvm-lld-pic +#skip arc-linux-none-baseline-whole-llvm-lld-pic + +#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic +#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic + +#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic +#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic +#skip csky-linux-eabi-baseline-whole-llvm-lld-pic +#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic +#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic +#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic + +#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic +#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic +#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic +#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic +#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic + +#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic +#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic +#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic + +#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic + +#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic +#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic + +#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic +#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic + +#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic + +#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic + +#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic + +#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic + +#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic +#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic +#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic + +#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic +#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic +#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic + +#skip xcore-freestanding-none-baseline-whole-llvm-lld-pic + +#skip xtensa-freestanding-call0-baseline-whole-llvm-lld-pic +#skip xtensa-freestanding-none-baseline-whole-llvm-lld-pic +#skip xtensa-linux-call0-baseline-whole-llvm-lld-pic +#skip xtensa-linux-none-baseline-whole-llvm-lld-pic + +#obj { +--name llvm_targets +-Mroot=object.zig +-fno-emit-asm -femit-bin +#} + +#write object.zig +#update +#check errors diff --git a/test/llvm-targets/matrix.zon b/test/llvm-targets/matrix.zon new file mode 100644 index 0000000000000000000000000000000000000000..a3ec7955d459ec1a2493db0a647731bf488b2eca --- /dev/null +++ b/test/llvm-targets/matrix.zon @@ -0,0 +1,355 @@ +.{ + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .driverkit = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .ios = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .ios = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohos = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .maccatalyst = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .macos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .@"switch" = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .tvos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .tvos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .visionos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .visionos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .ilp32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .amdhsa = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .amdpal = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .mesa3d = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .arc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .arm = .{} }, .os = .{ .@"3ds" = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .gba = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .androideabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohoseabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .arm = .{} }, .os = .{ .vita = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .armeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .armeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .avr = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .avr = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .bpfeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .bpfel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .csky = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .csky = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .hexagon = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .hexagon = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .hexagon = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .lanai = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnusf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslsf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnusf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslsf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .m68k = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .m68k = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .m68k = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .mips = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .psx = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .psp = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mipsel = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .mips64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .abin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .mips64el = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .abin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .mips64el = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .msp430 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .nvptx = .{} }, .os = .{ .cuda = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .nvptx = .{} }, .os = .{ .nvcl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .nvptx64 = .{} }, .os = .{ .cuda = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .nvptx64 = .{} }, .os = .{ .nvcl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc = .{} }, .os = .{ .wiiu = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .powerpcle = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpcle = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .ps3 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .riscv32be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .riscv64be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .s390x = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .sparc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .sparc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .sparc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .sparc = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .sparc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .opencl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .opengl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .vulkan = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .amdhsa = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .opencl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .vulkan = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .thumb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .gba = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .vita = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .ve = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .ve = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .emscripten = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .wasi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .emscripten = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .wasi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .x86 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .illumos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .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 }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .dragonfly = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .driverkit = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .illumos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnux32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslx32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohos = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .x32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .maccatalyst = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .macos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .ps4 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .ps5 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .xcore = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + + .{ .cpu = .{ .xtensa = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .call0 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .xtensa = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .xtensa = .{} }, .os = .{ .linux = .{} }, .abi = .{ .call0 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, + .{ .cpu = .{ .xtensa = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic }, +} diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig deleted file mode 100644 index 0c758566fe37fc1af4862620f36dda3d17a9dc0d..0000000000000000000000000000000000000000 --- a/test/llvm_targets.zig +++ /dev/null @@ -1,382 +0,0 @@ -const std = @import("std"); -const Cases = @import("src/Cases.zig"); - -const targets = [_]std.Target.Query{ - .{ .cpu_arch = .aarch64, .os_tag = .driverkit, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .freebsd, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .fuchsia, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .haiku, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .hurd, .abi = .gnu }, - .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator }, - .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .android }, - .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .ohos }, - .{ .cpu_arch = .aarch64, .os_tag = .maccatalyst, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .serenity, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .@"switch", .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .simulator }, - .{ .cpu_arch = .aarch64, .os_tag = .uefi, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .simulator }, - .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .ilp32 }, - .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .simulator }, - .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .gnu }, - .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .itanium }, - .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .msvc }, - - .{ .cpu_arch = .aarch64_be, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .aarch64_be, .os_tag = .netbsd, .abi = .none }, - - .{ .cpu_arch = .amdgcn, .os_tag = .amdhsa, .abi = .none }, - // .{ .cpu_arch = .amdgcn, .os_tag = .amdpal, .abi = .none }, - // .{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none }, - - .{ .cpu_arch = .arc, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .none }, - - .{ .cpu_arch = .arm, .os_tag = .@"3ds", .abi = .eabihf }, - .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabihf }, - .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabi }, - .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabihf }, - .{ .cpu_arch = .arm, .os_tag = .fuchsia, .abi = .eabihf }, - .{ .cpu_arch = .arm, .os_tag = .gba, .abi = .eabi }, - .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabihf }, - .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .androideabi }, - .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabi }, - .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabihf }, - .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabi }, - .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabihf }, - .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabi }, - .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabihf }, - .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .ohoseabi }, - .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabi }, - .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabihf }, - .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabi }, - .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabi }, - .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabihf }, - // .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabi }, - // .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabihf }, - .{ .cpu_arch = .arm, .os_tag = .vita, .abi = .eabihf }, - - .{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .eabi }, - .{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .eabihf }, - .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .eabi }, - .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .eabihf }, - .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .gnueabi }, - .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .gnueabihf }, - .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .musleabi }, - .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .musleabihf }, - .{ .cpu_arch = .armeb, .os_tag = .netbsd, .abi = .eabi }, - .{ .cpu_arch = .armeb, .os_tag = .netbsd, .abi = .eabihf }, - .{ .cpu_arch = .armeb, .os_tag = .rtems, .abi = .eabi }, - .{ .cpu_arch = .armeb, .os_tag = .rtems, .abi = .eabihf }, - - .{ .cpu_arch = .avr, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .avr, .os_tag = .rtems, .abi = .none }, - - .{ .cpu_arch = .bpfeb, .os_tag = .freestanding, .abi = .none }, - - .{ .cpu_arch = .bpfel, .os_tag = .freestanding, .abi = .none }, - - // .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabi }, - // .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabihf }, - // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabi }, - // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabihf }, - // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabi }, - // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabihf }, - - .{ .cpu_arch = .hexagon, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .hexagon, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .hexagon, .os_tag = .linux, .abi = .none }, - - .{ .cpu_arch = .lanai, .os_tag = .freestanding, .abi = .none }, - - .{ .cpu_arch = .loongarch32, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .gnu }, - // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .gnuf32 }, - .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .gnusf }, - // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .musl }, - // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .muslf32 }, - // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .muslsf }, - .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .none }, - // .{ .cpu_arch = .loongarch32, .os_tag = .uefi, .abi = .none }, - - .{ .cpu_arch = .loongarch64, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnu }, - // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 }, - .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnusf }, - .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .musl }, - // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .muslf32 }, - .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .muslsf }, - .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .none }, - // .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none }, - - .{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .m68k, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .m68k, .os_tag = .rtems, .abi = .none }, - - .{ .cpu_arch = .mips, .os_tag = .freestanding, .abi = .eabi }, - .{ .cpu_arch = .mips, .os_tag = .freestanding, .abi = .eabihf }, - .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .eabi }, - .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .eabihf }, - .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .gnueabi }, - .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .gnueabihf }, - .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musleabi }, - .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musleabihf }, - .{ .cpu_arch = .mips, .os_tag = .netbsd, .abi = .eabi }, - .{ .cpu_arch = .mips, .os_tag = .netbsd, .abi = .eabihf }, - .{ .cpu_arch = .mips, .os_tag = .rtems, .abi = .eabi }, - .{ .cpu_arch = .mips, .os_tag = .rtems, .abi = .eabihf }, - - .{ .cpu_arch = .mipsel, .os_tag = .freestanding, .abi = .eabi }, - .{ .cpu_arch = .mipsel, .os_tag = .freestanding, .abi = .eabihf }, - .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .eabi }, - .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .eabihf }, - .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .gnueabi }, - .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .gnueabihf }, - .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musleabi }, - .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musleabihf }, - .{ .cpu_arch = .mipsel, .os_tag = .netbsd, .abi = .eabi }, - .{ .cpu_arch = .mipsel, .os_tag = .netbsd, .abi = .eabihf }, - // .{ .cpu_arch = .mipsel, .os_tag = .psx, .abi = .eabi }, - .{ .cpu_arch = .mipsel, .os_tag = .psp, .abi = .eabihf }, - .{ .cpu_arch = .mipsel, .os_tag = .rtems, .abi = .eabi }, - .{ .cpu_arch = .mipsel, .os_tag = .rtems, .abi = .eabihf }, - - .{ .cpu_arch = .mips64, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .abin32 }, - .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .gnuabi64 }, - .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .gnuabin32 }, - .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .muslabi64 }, - .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .muslabin32 }, - .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .mips64, .os_tag = .openbsd, .abi = .none }, - - .{ .cpu_arch = .mips64el, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .abin32 }, - .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .gnuabi64 }, - .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .gnuabin32 }, - .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .muslabi64 }, - .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .muslabin32 }, - .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .mips64el, .os_tag = .openbsd, .abi = .none }, - - .{ .cpu_arch = .msp430, .os_tag = .freestanding, .abi = .none }, - - .{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none }, - .{ .cpu_arch = .nvptx, .os_tag = .nvcl, .abi = .none }, - - .{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none }, - .{ .cpu_arch = .nvptx64, .os_tag = .nvcl, .abi = .none }, - - .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabi }, - .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabihf }, - .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .eabi }, - .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .eabihf }, - .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabi }, - .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabihf }, - .{ .cpu_arch = .powerpc, .os_tag = .netbsd, .abi = .eabihf }, - .{ .cpu_arch = .powerpc, .os_tag = .openbsd, .abi = .eabihf }, - .{ .cpu_arch = .powerpc, .os_tag = .rtems, .abi = .eabi }, - .{ .cpu_arch = .powerpc, .os_tag = .rtems, .abi = .eabihf }, - .{ .cpu_arch = .powerpc, .os_tag = .wiiu, .abi = .eabihf }, - - .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabi }, - .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabihf }, - - .{ .cpu_arch = .powerpc64, .os_tag = .freebsd, .abi = .none }, - .{ .cpu_arch = .powerpc64, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .powerpc64, .os_tag = .openbsd, .abi = .none }, - .{ .cpu_arch = .powerpc64, .os_tag = .ps3, .abi = .ilp32 }, - .{ .cpu_arch = .powerpc64, .os_tag = .rtems, .abi = .none }, - - .{ .cpu_arch = .powerpc64le, .os_tag = .freebsd, .abi = .none }, - .{ .cpu_arch = .powerpc64le, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .none }, - - .{ .cpu_arch = .riscv32, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .riscv32, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .riscv32, .os_tag = .rtems, .abi = .none }, - // .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none }, - - // .{ .cpu_arch = .riscv32be, .os_tag = .freestanding, .abi = .none }, - - .{ .cpu_arch = .riscv64, .os_tag = .freebsd, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .fuchsia, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .haiku, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .hurd, .abi = .gnu }, - .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .android }, - .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .openbsd, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .serenity, .abi = .none }, - // .{ .cpu_arch = .riscv64, .os_tag = .uefi, .abi = .none }, - - // .{ .cpu_arch = .riscv64be, .os_tag = .freestanding, .abi = .none }, - - .{ .cpu_arch = .s390x, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .none }, - - .{ .cpu_arch = .sparc, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .sparc, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .sparc, .os_tag = .rtems, .abi = .none }, - - .{ .cpu_arch = .sparc64, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .sparc64, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .sparc64, .os_tag = .openbsd, .abi = .none }, - .{ .cpu_arch = .sparc64, .os_tag = .rtems, .abi = .none }, - - // .{ .cpu_arch = .spirv32, .os_tag = .opencl, .abi = .none }, - // .{ .cpu_arch = .spirv32, .os_tag = .opengl, .abi = .none }, - // .{ .cpu_arch = .spirv32, .os_tag = .vulkan, .abi = .none }, - // .{ .cpu_arch = .spirv64, .os_tag = .amdhsa, .abi = .none }, - // .{ .cpu_arch = .spirv64, .os_tag = .opencl, .abi = .none }, - // .{ .cpu_arch = .spirv64, .os_tag = .vulkan, .abi = .none }, - - .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabi }, - .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabihf }, - .{ .cpu_arch = .thumb, .os_tag = .fuchsia, .abi = .eabihf }, - .{ .cpu_arch = .thumb, .os_tag = .gba, .abi = .eabi }, - .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabi }, - .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabihf }, - .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .musleabi }, - .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .musleabihf }, - .{ .cpu_arch = .thumb, .os_tag = .rtems, .abi = .eabi }, - .{ .cpu_arch = .thumb, .os_tag = .rtems, .abi = .eabihf }, - .{ .cpu_arch = .thumb, .os_tag = .vita, .abi = .eabihf }, - .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .gnu }, - .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .itanium }, - .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .msvc }, - - .{ .cpu_arch = .thumbeb, .os_tag = .freestanding, .abi = .eabi }, - .{ .cpu_arch = .thumbeb, .os_tag = .freestanding, .abi = .eabihf }, - .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .eabi }, - .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .eabihf }, - .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .musleabi }, - .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .musleabihf }, - .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabi }, - .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabihf }, - - .{ .cpu_arch = .ve, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .ve, .os_tag = .linux, .abi = .none }, - - .{ .cpu_arch = .wasm32, .os_tag = .emscripten, .abi = .none }, - .{ .cpu_arch = .wasm32, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .wasm32, .os_tag = .wasi, .abi = .none }, - - .{ .cpu_arch = .wasm64, .os_tag = .emscripten, .abi = .none }, - .{ .cpu_arch = .wasm64, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .wasm64, .os_tag = .wasi, .abi = .none }, - - .{ .cpu_arch = .x86, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .haiku, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .hurd, .abi = .gnu }, - .{ .cpu_arch = .x86, .os_tag = .illumos, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .android }, - .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .openbsd, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .uefi, .abi = .none }, - .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .gnu }, - .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .itanium }, - .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .msvc }, - - .{ .cpu_arch = .x86_64, .os_tag = .freebsd, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .freestanding, .abi = .none }, - .{ - .cpu_arch = .x86_64, - .os_tag = .freestanding, - .abi = .none, - .cpu_features_add = std.Target.x86.featureSet(&.{.soft_float}), - .cpu_features_sub = std.Target.x86.featureSet(&.{ .mmx, .sse, .sse2, .avx, .avx2 }), - }, - .{ .cpu_arch = .x86_64, .os_tag = .fuchsia, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .dragonfly, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .driverkit, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .haiku, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .hurd, .abi = .gnu }, - .{ .cpu_arch = .x86_64, .os_tag = .illumos, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .android }, - .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnux32 }, - .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .muslx32 }, - .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .ohos }, - .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .x32 }, - .{ .cpu_arch = .x86_64, .os_tag = .maccatalyst, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .ps4, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .ps5, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .serenity, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none }, - .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu }, - .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .itanium }, - .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .msvc }, - - .{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none }, - - .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .call0 }, - .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .call0 }, - .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none }, -}; - -pub fn addCases( - ctx: *Cases, - build_options: @import("cases.zig").BuildOptions, - b: *std.Build, -) !void { - if (!build_options.enable_llvm) return; - for (targets) |target_query| { - if (target_query.cpu_arch) |arch| switch (arch) { - .m68k => if (!build_options.llvm_has_m68k) continue, - .csky => if (!build_options.llvm_has_csky) continue, - .arc => if (!build_options.llvm_has_arc) continue, - .xtensa => if (!build_options.llvm_has_xtensa) continue, - else => {}, - }; - var case = ctx.addObjLlvm("llvm_targets", b.resolveTargetQuery(target_query)); - case.addCompile(""); - } -} diff --git a/test/src/Cases.zig b/test/src/Cases.zig index c6036823d92ffd09d752de600a25a354229a0de8..ac367a5813f9d644617aaa0c22259307105144c3 100644 --- a/test/src/Cases.zig +++ b/test/src/Cases.zig @@ -164,38 +164,6 @@ pub fn exeFromCompiledC(ctx: *Cases, name: []const u8, target_query: std.Target. return &ctx.cases.items[ctx.cases.items.len - 1]; } -pub fn addObjLlvm(ctx: *Cases, name: []const u8, target: std.Build.ResolvedTarget) *Case { - const can_emit_asm = switch (target.result.cpu.arch) { - .csky, - .xtensa, - => false, - else => true, - }; - const can_emit_bin = switch (target.result.cpu.arch) { - .arc, - .csky, - .nvptx, - .nvptx64, - .xcore, - .xtensa, - => false, - else => true, - }; - - ctx.cases.append(.{ - .name = name, - .target = target, - .files = .init(ctx.arena), - .case = null, - .output_mode = .Obj, - .deps = std.array_list.Managed(DepModule).init(ctx.arena), - .backend = .llvm, - .emit_bin = can_emit_bin, - .emit_asm = can_emit_asm, - }) catch @panic("out of memory"); - return &ctx.cases.items[ctx.cases.items.len - 1]; -} - pub fn addObj( ctx: *Cases, name: []const u8, diff --git a/test/tests.zig b/test/tests.zig index eca020095684e3ee05feaf4ba093c8d0e1fc6bdd..3ed14aedd5f077e47896465829564134db178d7c 100644 --- a/test/tests.zig +++ b/test/tests.zig @@ -2186,19 +2186,6 @@ const link_targets = blk: { }; }; -/// These are passed to `src/Runner.zig` as `----` strings. -/// -/// If only one specific test is failing on a target, instead of entirely disabling the target here, you -/// can skip the target for that specific test only by adding a line like this to top of the manifest: -/// #skip x86_64-linux-selfhosted -const RunnerTarget = struct { - target: std.Target.Query, - cache_mode: enum { whole, incremental }, - backend: enum { selfhosted, llvm, llvmir, cbe }, - linker: enum { lld, old, new }, - pic: enum { nopic, pic, pie }, -}; - pub fn addStackTraceTests(b: *std.Build, options: StackTracesContext.Options) *Step { const step = b.step("test-stack-traces", "Run the stack trace tests"); @@ -3037,7 +3024,6 @@ pub fn addCases( b: *std.Build, parent_step: *Step, case_test_options: @import("src/Cases.zig").CaseTestOptions, - build_options: @import("cases.zig").BuildOptions, ) !void { const arena = b.allocator; const gpa = b.allocator; @@ -3051,7 +3037,7 @@ pub fn addCases( defer dir.close(io); cases.addFromDir(dir, "test/cases", b); - try @import("cases.zig").addCases(&cases, build_options, b); + try @import("cases.zig").addCases(&cases, b); cases.lowerToBuildSteps( b, @@ -3060,6 +3046,7 @@ pub fn addCases( ); } +pub const RunnerTarget = @import("Runner.zig").Target; pub const RunnerOptions = struct { test_filters: []const []const u8, test_target_filters: []const []const u8, @@ -3072,10 +3059,13 @@ pub const RunnerOptions = struct { skip_darwin: bool, skip_linux: bool, skip_llvm: bool, + llvm_has_m68k: bool, + llvm_has_csky: bool, + llvm_has_arc: bool, + llvm_has_xtensa: bool, gdb: ?[]const u8, lldb: ?[]const u8, }; - pub fn addRunnerTests( b: *std.Build, runner: *std.Build.Step.Compile, @@ -3119,7 +3109,7 @@ pub fn addRunnerTests( _ = run.addPrefixedOutputDirectoryArg("--src=", "src"); for (matrix) |test_target| { - const resolved_target = b.resolveTargetQuery(test_target.target); + const resolved_target = b.resolveTargetQuery(test_target.toQuery()); if (options.skip_non_native and !std.zig.target.isNative(&resolved_target.query, &resolved_target.result, &b.graph.host.result)) continue; @@ -3135,15 +3125,18 @@ pub fn addRunnerTests( if (options.skip_darwin and target.os.tag.isDarwin()) continue; if (options.skip_linux and target.os.tag == .linux) continue; - if (options.skip_llvm and test_target.backend == .llvm) continue; + if (test_target.backend == .llvm) { + if (options.skip_llvm) continue; + switch (target.cpu.arch) { + else => {}, + .m68k => if (!options.llvm_has_m68k) continue, + .csky => if (!options.llvm_has_csky) continue, + .arc => if (!options.llvm_has_arc) continue, + .xtensa => if (!options.llvm_has_xtensa) continue, + } + } - const target_str = b.fmt("{s}-{t}-{t}-{t}-{t}", .{ - resolved_target.query.zigTriple(b.allocator) catch @panic("OOM"), - test_target.cache_mode, - test_target.backend, - test_target.linker, - test_target.pic, - }); + const target_str = b.fmt("{f}", .{test_target}); for (options.test_target_filters) |filter| { if (std.mem.find(u8, target_str, filter) != null) break;