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

`test`: Rewrite the target triple list for `llvm_targets`.
This commit is contained in:
Alex Rønne Petersen 2024-10-04 19:37:12 +02:00 committed by GitHub
commit eb363bf845
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 374 additions and 71 deletions

View file

@ -652,7 +652,6 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 {
.tvos => "tvos",
.watchos => "watchos",
.driverkit => "driverkit",
.shadermodel => "shadermodel",
.visionos => "xros",
.serenity => "serenity",
.bridgeos => "bridgeos",

View file

@ -66,13 +66,13 @@ pub const Os = struct {
nvcl,
opencl,
opengl,
shadermodel,
vulkan,
// LLVM tags deliberately omitted:
// - darwin
// - kfreebsd
// - nacl
// - shadermodel
pub inline fn isDarwin(tag: Tag) bool {
return switch (tag) {
@ -178,7 +178,6 @@ pub const Os = struct {
.hermit,
.hurd,
.emscripten,
.shadermodel,
.uefi,
.opencl, // TODO: OpenCL versions
.opengl, // TODO: GLSL versions
@ -189,7 +188,9 @@ pub const Os = struct {
.other,
=> .none,
.bridgeos,
// This should use semver once we determine the version history.
.bridgeos => .none,
.driverkit,
.freebsd,
.macos,
@ -408,7 +409,6 @@ pub const Os = struct {
.hermit,
.hurd,
.emscripten,
.shadermodel,
.uefi,
.opencl, // TODO: OpenCL versions
.opengl, // TODO: GLSL versions
@ -613,7 +613,6 @@ pub const Os = struct {
.hurd,
.wasi,
.emscripten,
.shadermodel,
.uefi,
.opencl,
.opengl,
@ -633,6 +632,7 @@ pub const avr = @import("Target/avr.zig");
pub const bpf = @import("Target/bpf.zig");
pub const csky = @import("Target/csky.zig");
pub const hexagon = @import("Target/hexagon.zig");
pub const lanai = @import("Target/lanai.zig");
pub const loongarch = @import("Target/loongarch.zig");
pub const m68k = @import("Target/m68k.zig");
pub const mips = @import("Target/mips.zig");
@ -646,6 +646,7 @@ pub const s390x = @import("Target/s390x.zig");
pub const ve = @import("Target/ve.zig");
pub const wasm = @import("Target/wasm.zig");
pub const x86 = @import("Target/x86.zig");
pub const xcore = @import("Target/xcore.zig");
pub const xtensa = @import("Target/xtensa.zig");
pub const Abi = enum {
@ -739,7 +740,6 @@ pub const Abi = enum {
.watchos,
.visionos,
.driverkit,
.shadermodel,
.solaris,
.illumos,
.serenity,
@ -1419,6 +1419,7 @@ pub const Cpu = struct {
.bpfel, .bpfeb => &bpf.all_features,
.csky => &csky.all_features,
.hexagon => &hexagon.all_features,
.lanai => &lanai.all_features,
.loongarch32, .loongarch64 => &loongarch.all_features,
.m68k => &m68k.all_features,
.mips, .mipsel, .mips64, .mips64el => &mips.all_features,
@ -1430,6 +1431,7 @@ pub const Cpu = struct {
.spirv, .spirv32, .spirv64 => &spirv.all_features,
.s390x => &s390x.all_features,
.x86, .x86_64 => &x86.all_features,
.xcore => &xcore.all_features,
.xtensa => &xtensa.all_features,
.nvptx, .nvptx64 => &nvptx.all_features,
.ve => &ve.all_features,
@ -1449,6 +1451,7 @@ pub const Cpu = struct {
.bpfel, .bpfeb => comptime allCpusFromDecls(bpf.cpu),
.csky => comptime allCpusFromDecls(csky.cpu),
.hexagon => comptime allCpusFromDecls(hexagon.cpu),
.lanai => comptime allCpusFromDecls(lanai.cpu),
.loongarch32, .loongarch64 => comptime allCpusFromDecls(loongarch.cpu),
.m68k => comptime allCpusFromDecls(m68k.cpu),
.mips, .mipsel, .mips64, .mips64el => comptime allCpusFromDecls(mips.cpu),
@ -1460,6 +1463,7 @@ pub const Cpu = struct {
.spirv, .spirv32, .spirv64 => comptime allCpusFromDecls(spirv.cpu),
.s390x => comptime allCpusFromDecls(s390x.cpu),
.x86, .x86_64 => comptime allCpusFromDecls(x86.cpu),
.xcore => comptime allCpusFromDecls(xcore.cpu),
.xtensa => comptime allCpusFromDecls(xtensa.cpu),
.nvptx, .nvptx64 => comptime allCpusFromDecls(nvptx.cpu),
.ve => comptime allCpusFromDecls(ve.cpu),
@ -1529,11 +1533,14 @@ pub const Cpu = struct {
};
};
return switch (arch) {
.arc => &arc.cpu.generic,
.arm, .armeb, .thumb, .thumbeb => &arm.cpu.generic,
.aarch64, .aarch64_be => &aarch64.cpu.generic,
.avr => &avr.cpu.avr2,
.bpfel, .bpfeb => &bpf.cpu.generic,
.csky => &csky.cpu.generic,
.hexagon => &hexagon.cpu.generic,
.lanai => &lanai.cpu.generic,
.loongarch32 => &loongarch.cpu.generic_la32,
.loongarch64 => &loongarch.cpu.generic_la64,
.m68k => &m68k.cpu.generic,
@ -1556,8 +1563,12 @@ pub const Cpu = struct {
.nvptx, .nvptx64 => &nvptx.cpu.sm_20,
.ve => &ve.cpu.generic,
.wasm32, .wasm64 => &wasm.cpu.generic,
.xcore => &xcore.cpu.generic,
.xtensa => &xtensa.cpu.generic,
else => &S.generic_model,
.kalimba,
.spu_2,
=> &S.generic_model,
};
}
@ -1873,7 +1884,6 @@ pub const DynamicLinker = struct {
.amdpal,
.hermit,
.hurd,
.shadermodel,
=> none,
};
}
@ -2366,7 +2376,6 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
.hermit,
.hurd,
.opengl,
.shadermodel,
=> @panic("TODO specify the C integer and float type sizes for this OS"),
}
}

37
lib/std/Target/lanai.zig Normal file
View file

@ -0,0 +1,37 @@
//! This file is auto-generated by tools/update_cpu_features.zig.
const std = @import("../std.zig");
const CpuFeature = std.Target.Cpu.Feature;
const CpuModel = std.Target.Cpu.Model;
pub const Feature = enum {};
pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
pub const all_features = blk: {
const len = @typeInfo(Feature).@"enum".fields.len;
std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
var result: [len]CpuFeature = undefined;
const ti = @typeInfo(Feature);
for (&result, 0..) |*elem, i| {
elem.index = i;
elem.name = ti.@"enum".fields[i].name;
}
break :blk result;
};
pub const cpu = struct {
pub const generic = CpuModel{
.name = "generic",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{}),
};
pub const v11 = CpuModel{
.name = "v11",
.llvm_name = "v11",
.features = featureSet(&[_]Feature{}),
};
};

37
lib/std/Target/xcore.zig Normal file
View file

@ -0,0 +1,37 @@
//! This file is auto-generated by tools/update_cpu_features.zig.
const std = @import("../std.zig");
const CpuFeature = std.Target.Cpu.Feature;
const CpuModel = std.Target.Cpu.Model;
pub const Feature = enum {};
pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
pub const all_features = blk: {
const len = @typeInfo(Feature).@"enum".fields.len;
std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
var result: [len]CpuFeature = undefined;
const ti = @typeInfo(Feature);
for (&result, 0..) |*elem, i| {
elem.index = i;
elem.name = ti.@"enum".fields[i].name;
}
break :blk result;
};
pub const cpu = struct {
pub const generic = CpuModel{
.name = "generic",
.llvm_name = "generic",
.features = featureSet(&[_]Feature{}),
};
pub const xs1b_generic = CpuModel{
.name = "xs1b_generic",
.llvm_name = "xs1b-generic",
.features = featureSet(&[_]Feature{}),
};
};

View file

@ -134,7 +134,6 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
.tvos => "tvos",
.watchos => "watchos",
.driverkit => "driverkit",
.shadermodel => "shadermodel",
.visionos => "xros",
.serenity => "serenity",
.vulkan => "vulkan",
@ -224,7 +223,6 @@ pub fn targetOs(os_tag: std.Target.Os.Tag) llvm.OSType {
.wasi => .WASI,
.emscripten => .Emscripten,
.driverkit => .DriverKit,
.shadermodel => .ShaderModel,
.vulkan => .Vulkan,
.serenity => .Serenity,
.bridgeos => .BridgeOS,

View file

@ -2,115 +2,326 @@ const std = @import("std");
const Cases = @import("src/Cases.zig");
const targets = [_]std.Target.Query{
.{ .cpu_arch = .aarch64, .os_tag = .bridgeos, .abi = .none },
.{ .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 = .freestanding, .abi = .ilp32 },
.{ .cpu_arch = .aarch64, .os_tag = .fuchsia, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .haiku, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .hermit, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .hurd, .abi = .gnu },
.{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .macabi },
.{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator },
.{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu },
.{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnuilp32 },
.{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .simulator },
.{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .ilp32 },
.{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .none },
.{ .cpu_arch = .aarch64, .os_tag = .serenity, .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 = .uefi, .abi = .none },
.{ .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 = .gnuilp32 },
.{ .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 = .linux, .abi = .none },
//.{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .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 = .freestanding, .abi = .none },
.{ .cpu_arch = .arm, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .none },
.{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .avr, .os_tag = .freebsd, .abi = .none },
.{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabi },
.{ .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 = .haiku, .abi = .eabi },
.{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabihf },
.{ .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 = .netbsd, .abi = .eabi },
.{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabihf },
.{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabi },
.{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabihf },
.{ .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 = .armeb, .os_tag = .freebsd, .abi = .eabi },
.{ .cpu_arch = .armeb, .os_tag = .freebsd, .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 = .linux, .abi = .none },
.{ .cpu_arch = .bpfel, .os_tag = .linux, .abi = .gnu },
.{ .cpu_arch = .bpfel, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .bpfeb, .os_tag = .linux, .abi = .gnu },
.{ .cpu_arch = .bpfeb, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .csky, .os_tag = .linux, .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 = .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 = .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 = .none },
.{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none },
.{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .m68k, .os_tag = .haiku, .abi = .none },
.{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .gnu },
.{ .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 = .freebsd, .abi = .eabi },
.{ .cpu_arch = .mips, .os_tag = .freebsd, .abi = .eabihf },
.{ .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 = .musl },
.{ .cpu_arch = .mips, .os_tag = .linux, .abi = .none },
.{ .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 = .freebsd, .abi = .eabi },
.{ .cpu_arch = .mipsel, .os_tag = .freebsd, .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 = .musl },
.{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .none },
.{ .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 = .rtems, .abi = .eabi },
.{ .cpu_arch = .mipsel, .os_tag = .rtems, .abi = .eabihf },
.{ .cpu_arch = .mips64, .os_tag = .freebsd, .abi = .none },
.{ .cpu_arch = .mips64, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .gnuabi64 },
.{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .gnuabin32 },
.{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .musl },
.{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .mips64, .os_tag = .netbsd, .abi = .none },
.{ .cpu_arch = .mips64, .os_tag = .openbsd, .abi = .none },
.{ .cpu_arch = .mips64el, .os_tag = .freebsd, .abi = .none },
.{ .cpu_arch = .mips64el, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .gnuabi64 },
.{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .gnuabin32 },
.{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .musl },
.{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .msp430, .os_tag = .freebsd, .abi = .none },
.{ .cpu_arch = .mips64el, .os_tag = .netbsd, .abi = .none },
.{ .cpu_arch = .mips64el, .os_tag = .openbsd, .abi = .none },
.{ .cpu_arch = .msp430, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .msp430, .os_tag = .linux, .abi = .none },
//.{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none },
//.{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none },
.{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .none },
.{ .cpu_arch = .powerpc, .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 = .aix, .abi = .eabi },
.{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .eabi },
.{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .eabihf },
.{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabi },
.{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabihf },
.{ .cpu_arch = .powerpc, .os_tag = .haiku, .abi = .eabi },
.{ .cpu_arch = .powerpc, .os_tag = .haiku, .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 = .gnueabi },
.{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .gnueabihf },
.{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musl },
.{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .powerpcle, .os_tag = .freebsd, .abi = .none },
.{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .powerpcle, .os_tag = .linux, .abi = .gnu },
.{ .cpu_arch = .powerpcle, .os_tag = .linux, .abi = .musl },
.{ .cpu_arch = .powerpcle, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabi },
.{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabihf },
.{ .cpu_arch = .powerpc, .os_tag = .netbsd, .abi = .eabi },
.{ .cpu_arch = .powerpc, .os_tag = .netbsd, .abi = .eabihf },
.{ .cpu_arch = .powerpc, .os_tag = .openbsd, .abi = .eabi },
.{ .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 = .powerpcle, .os_tag = .freestanding, .abi = .eabi },
.{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabihf },
.{ .cpu_arch = .powerpc64, .os_tag = .aix, .abi = .none },
.{ .cpu_arch = .powerpc64, .os_tag = .freebsd, .abi = .none },
.{ .cpu_arch = .powerpc64, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .gnu },
.{ .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 = .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 = .rtems, .abi = .none },
.{ .cpu_arch = .riscv32, .os_tag = .uefi, .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 = .hermit, .abi = .none },
.{ .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 = .s390x, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .gnu },
.{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .none },
.{ .cpu_arch = .s390x, .os_tag = .zos, .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 = .freebsd, .abi = .none },
.{ .cpu_arch = .sparc64, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .sparc64, .os_tag = .haiku, .abi = .none },
.{ .cpu_arch = .sparc64, .os_tag = .illumos, .abi = .none },
.{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .gnu },
//.{ .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 = .opencl, .abi = .none },
//.{ .cpu_arch = .spirv64, .os_tag = .opengl, .abi = .none },
//.{ .cpu_arch = .spirv64, .os_tag = .vulkan, .abi = .none },
.{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .none },
.{ .cpu_arch = .thumbeb, .os_tag = .freestanding, .abi = .none },
.{ .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 = .sparc64, .os_tag = .solaris, .abi = .none },
.{ .cpu_arch = .thumb, .os_tag = .freebsd, .abi = .eabi },
.{ .cpu_arch = .thumb, .os_tag = .freebsd, .abi = .eabihf },
.{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabi },
.{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabihf },
.{ .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 = .netbsd, .abi = .eabi },
.{ .cpu_arch = .thumb, .os_tag = .netbsd, .abi = .eabihf },
.{ .cpu_arch = .thumb, .os_tag = .openbsd, .abi = .eabi },
.{ .cpu_arch = .thumb, .os_tag = .openbsd, .abi = .eabihf },
.{ .cpu_arch = .thumb, .os_tag = .rtems, .abi = .eabi },
.{ .cpu_arch = .thumb, .os_tag = .rtems, .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 = .freebsd, .abi = .eabi },
.{ .cpu_arch = .thumbeb, .os_tag = .freebsd, .abi = .eabihf },
.{ .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 = .netbsd, .abi = .eabi },
.{ .cpu_arch = .thumbeb, .os_tag = .netbsd, .abi = .eabihf },
.{ .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 = .linux, .abi = .none },
.{ .cpu_arch = .wasm32, .os_tag = .wasi, .abi = .musl },
.{ .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 = .linux, .abi = .none },
.{ .cpu_arch = .wasm64, .os_tag = .wasi, .abi = .musl },
.{ .cpu_arch = .wasm64, .os_tag = .wasi, .abi = .none },
.{ .cpu_arch = .x86, .os_tag = .elfiamcu, .abi = .none },
.{ .cpu_arch = .x86, .os_tag = .freebsd, .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 = .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 },
.{
@ -120,15 +331,32 @@ const targets = [_]std.Target.Query{
.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 = .hermit, .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 = .ios, .abi = .macabi },
.{ .cpu_arch = .x86_64, .os_tag = .ios, .abi = .simulator },
.{ .cpu_arch = .x86_64, .os_tag = .watchos, .abi = .simulator },
.{ .cpu_arch = .x86_64, .os_tag = .tvos, .abi = .simulator },
.{ .cpu_arch = .x86_64, .os_tag = .visionos, .abi = .simulator },
.{ .cpu_arch = .x86_64, .os_tag = .linux, .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 = .rtems, .abi = .none },
.{ .cpu_arch = .x86_64, .os_tag = .serenity, .abi = .none },
.{ .cpu_arch = .x86_64, .os_tag = .solaris, .abi = .none },
.{ .cpu_arch = .x86_64, .os_tag = .tvos, .abi = .simulator },
.{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none },
.{ .cpu_arch = .x86_64, .os_tag = .visionos, .abi = .simulator },
.{ .cpu_arch = .x86_64, .os_tag = .watchos, .abi = .simulator },
.{ .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 = .none },
.{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none },
};

View file

@ -1576,12 +1576,6 @@ fn processOneTarget(job: Job) anyerror!void {
const zig_code_basename = try std.fmt.allocPrint(arena, "{s}.zig", .{llvm_target.zig_name});
if (all_features.items.len == 0) {
// We represent this with an empty file.
try target_dir.deleteTree(zig_code_basename);
return;
}
var zig_code_file = try target_dir.createFile(zig_code_basename, .{});
defer zig_code_file.close();
@ -1596,11 +1590,12 @@ fn processOneTarget(job: Job) anyerror!void {
\\const CpuModel = std.Target.Cpu.Model;
\\
\\pub const Feature = enum {
\\
);
for (all_features.items) |feature| {
try w.print(" {p},\n", .{std.zig.fmtId(feature.zig_name)});
for (all_features.items, 0..) |feature, i| {
try w.print("\n {p},", .{std.zig.fmtId(feature.zig_name)});
if (i == all_features.items.len - 1) try w.writeAll("\n");
}
try w.writeAll(