diff --git a/lib/compiler/aro/aro/target.zig b/lib/compiler/aro/aro/target.zig index b4b5bb896a..1799dac5da 100644 --- a/lib/compiler/aro/aro/target.zig +++ b/lib/compiler/aro/aro/target.zig @@ -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", diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 14d2f10d64..10e0de169e 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -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"), } } diff --git a/lib/std/Target/lanai.zig b/lib/std/Target/lanai.zig new file mode 100644 index 0000000000..041934b6d4 --- /dev/null +++ b/lib/std/Target/lanai.zig @@ -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{}), + }; +}; diff --git a/lib/std/Target/xcore.zig b/lib/std/Target/xcore.zig new file mode 100644 index 0000000000..4069620849 --- /dev/null +++ b/lib/std/Target/xcore.zig @@ -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{}), + }; +}; diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 1f21516e9e..9520f17a4b 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -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, diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index 76b9e668fa..e1661cfbd4 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -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 }, }; diff --git a/tools/update_cpu_features.zig b/tools/update_cpu_features.zig index a73db34e29..fdc7b02a9e 100644 --- a/tools/update_cpu_features.zig +++ b/tools/update_cpu_features.zig @@ -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(