| author | |
| committer | |
| log | 06d9e3bc065be1614ff8e01e394a5160d7283dd7 |
| tree | 13da053ff6f744a5db769af887cf87c34d7be29e |
| parent | 35e1755c996eb1cff77ff262d93302e5d6f16f9a |
| parent | 104c272ae5dc0ab2fc6f81da5918f1b8abf7e131 |
| signature |
feat: init x86_16 arch via CBE16 files changed, 96 insertions(+), 33 deletions(-)
lib/compiler_rt/int_from_float.zig+1-1| ... | ... | @@ -74,7 +74,7 @@ pub inline fn bigIntFromFloat(comptime signedness: std.builtin.Signedness, resul |
| 74 | 74 | const parts = math.frexp(a); |
| 75 | 75 | const significand_bits_adjusted_to_handle_smin = @as(i32, significand_bits) + |
| 76 | 76 | @intFromBool(signedness == .signed and parts.exponent == 32 * result.len); |
| 77 | const exponent = @max(parts.exponent - significand_bits_adjusted_to_handle_smin, 0); | |
| 77 | const exponent: usize = @intCast(@max(parts.exponent - significand_bits_adjusted_to_handle_smin, 0)); | |
| 78 | 78 | const int: I = @intFromFloat(switch (exponent) { |
| 79 | 79 | 0 => a, |
| 80 | 80 | else => math.ldexp(parts.significand, significand_bits_adjusted_to_handle_smin), |
lib/std/Io/Writer.zig+1-1| ... | ... | @@ -604,7 +604,7 @@ pub fn print(w: *Writer, comptime fmt: []const u8, args: anytype) Error!void { |
| 604 | 604 | @compileError("32 arguments max are supported per format call"); |
| 605 | 605 | } |
| 606 | 606 | |
| 607 | @setEvalBranchQuota(fmt.len * 1000); | |
| 607 | @setEvalBranchQuota(@as(comptime_int, fmt.len) * 1000); // NOTE: We're upcasting as 16-bit usize overflows. | |
| 608 | 608 | comptime var arg_state: std.fmt.ArgState = .{ .args_len = fields_info.len }; |
| 609 | 609 | comptime var i = 0; |
| 610 | 610 | comptime var literal: []const u8 = ""; |
lib/std/Target.zig+23-7| ... | ... | @@ -1083,7 +1083,7 @@ pub fn toElfMachine(target: *const Target) std.elf.EM { |
| 1083 | 1083 | .sparc => if (target.cpu.has(.sparc, .v9)) .SPARC32PLUS else .SPARC, |
| 1084 | 1084 | .sparc64 => .SPARCV9, |
| 1085 | 1085 | .ve => .VE, |
| 1086 | .x86 => .@"386", | |
| 1086 | .x86_16, .x86 => .@"386", | |
| 1087 | 1087 | .x86_64 => .X86_64, |
| 1088 | 1088 | .xcore => .XCORE, |
| 1089 | 1089 | .xtensa, .xtensaeb => .XTENSA, |
| ... | ... | @@ -1154,6 +1154,7 @@ pub fn toCoffMachine(target: *const Target) std.coff.IMAGE.FILE.MACHINE { |
| 1154 | 1154 | .ve, |
| 1155 | 1155 | .wasm32, |
| 1156 | 1156 | .wasm64, |
| 1157 | .x86_16, | |
| 1157 | 1158 | .xcore, |
| 1158 | 1159 | .xtensa, |
| 1159 | 1160 | .xtensaeb, |
| ... | ... | @@ -1376,6 +1377,7 @@ pub const Cpu = struct { |
| 1376 | 1377 | ve, |
| 1377 | 1378 | wasm32, |
| 1378 | 1379 | wasm64, |
| 1380 | x86_16, | |
| 1379 | 1381 | x86, |
| 1380 | 1382 | x86_64, |
| 1381 | 1383 | xcore, |
| ... | ... | @@ -1467,7 +1469,7 @@ pub const Cpu = struct { |
| 1467 | 1469 | .spirv32, .spirv64 => .spirv, |
| 1468 | 1470 | .ve => .ve, |
| 1469 | 1471 | .wasm32, .wasm64 => .wasm, |
| 1470 | .x86, .x86_64 => .x86, | |
| 1472 | .x86_16, .x86, .x86_64 => .x86, | |
| 1471 | 1473 | .xcore => .xcore, |
| 1472 | 1474 | .xtensa, .xtensaeb => .xtensa, |
| 1473 | 1475 | }; |
| ... | ... | @@ -1475,7 +1477,7 @@ pub const Cpu = struct { |
| 1475 | 1477 | |
| 1476 | 1478 | pub inline fn isX86(arch: Arch) bool { |
| 1477 | 1479 | return switch (arch) { |
| 1478 | .x86, .x86_64 => true, | |
| 1480 | .x86_16, .x86, .x86_64 => true, | |
| 1479 | 1481 | else => false, |
| 1480 | 1482 | }; |
| 1481 | 1483 | } |
| ... | ... | @@ -1669,6 +1671,7 @@ pub const Cpu = struct { |
| 1669 | 1671 | .ve, |
| 1670 | 1672 | .wasm32, |
| 1671 | 1673 | .wasm64, |
| 1674 | .x86_16, | |
| 1672 | 1675 | .x86, |
| 1673 | 1676 | .x86_64, |
| 1674 | 1677 | .xcore, |
| ... | ... | @@ -1789,6 +1792,12 @@ pub const Cpu = struct { |
| 1789 | 1792 | .x86_interrupt, |
| 1790 | 1793 | => &.{.x86}, |
| 1791 | 1794 | |
| 1795 | .x86_16_cdecl, | |
| 1796 | .x86_16_stdcall, | |
| 1797 | .x86_16_regparmcall, | |
| 1798 | .x86_16_interrupt, | |
| 1799 | => &.{.x86_16}, | |
| 1800 | ||
| 1792 | 1801 | .aarch64_aapcs, |
| 1793 | 1802 | .aarch64_aapcs_darwin, |
| 1794 | 1803 | .aarch64_aapcs_win, |
| ... | ... | @@ -1971,6 +1980,7 @@ pub const Cpu = struct { |
| 1971 | 1980 | .riscv64, .riscv64be => &riscv.cpu.generic_rv64, |
| 1972 | 1981 | .sparc64 => &sparc.cpu.v9, // SPARC can only be 64-bit from v9 and up. |
| 1973 | 1982 | .wasm32, .wasm64 => &wasm.cpu.mvp, |
| 1983 | .x86_16 => &x86.cpu.i86, | |
| 1974 | 1984 | .x86 => &x86.cpu.i386, |
| 1975 | 1985 | .x86_64 => &x86.cpu.x86_64, |
| 1976 | 1986 | inline else => |a| &@field(Target, @tagName(a.family())).cpu.generic, |
| ... | ... | @@ -2237,7 +2247,10 @@ pub fn supportsAddressSpace( |
| 2237 | 2247 | |
| 2238 | 2248 | return switch (address_space) { |
| 2239 | 2249 | .generic => true, |
| 2240 | .fs, .gs, .ss => (arch == .x86_64 or arch == .x86) and (context == null or context == .pointer), | |
| 2250 | .fs, .gs, .ss => (arch == .x86_64 or arch == .x86 or arch == .x86_16) and (context == null or context == .pointer), | |
| 2251 | // Technically x86 can use segmentation... | |
| 2252 | .far => (arch == .x86_16), | |
| 2253 | ||
| 2241 | 2254 | .flash, .flash1, .flash2, .flash3, .flash4, .flash5 => arch == .avr, // TODO this should also check how many flash banks the cpu has |
| 2242 | 2255 | .cog, .hub => arch == .propeller, |
| 2243 | 2256 | .lut => arch == .propeller and std.Target.propeller.featureSetHas(target.cpu.features, .p2), |
| ... | ... | @@ -2800,6 +2813,7 @@ pub fn ptrBitWidth_arch_abi(cpu_arch: Cpu.Arch, abi: Abi) u16 { |
| 2800 | 2813 | return switch (cpu_arch) { |
| 2801 | 2814 | .avr, |
| 2802 | 2815 | .msp430, |
| 2816 | .x86_16, | |
| 2803 | 2817 | => 16, |
| 2804 | 2818 | |
| 2805 | 2819 | .arc, |
| ... | ... | @@ -3013,7 +3027,7 @@ pub fn cTypeByteSize(t: *const Target, c_type: CType) u16 { |
| 3013 | 3027 | pub fn cTypeBitSize(target: *const Target, c_type: CType) u16 { |
| 3014 | 3028 | switch (target.os.tag) { |
| 3015 | 3029 | .freestanding, .other => switch (target.cpu.arch) { |
| 3016 | .msp430 => switch (c_type) { | |
| 3030 | .msp430, .x86_16 => switch (c_type) { | |
| 3017 | 3031 | .char => return 8, |
| 3018 | 3032 | .short, .ushort, .int, .uint => return 16, |
| 3019 | 3033 | .float, .long, .ulong => return 32, |
| ... | ... | @@ -3369,6 +3383,7 @@ pub fn cTypeAlignment(target: *const Target, c_type: CType) u16 { |
| 3369 | 3383 | std.math.ceilPowerOfTwoAssert(u16, (cTypeBitSize(target, c_type) + 7) / 8), |
| 3370 | 3384 | @as(u16, switch (target.cpu.arch) { |
| 3371 | 3385 | .msp430, |
| 3386 | .x86_16, | |
| 3372 | 3387 | => 2, |
| 3373 | 3388 | |
| 3374 | 3389 | .arc, |
| ... | ... | @@ -3476,7 +3491,7 @@ pub fn cTypePreferredAlignment(target: *const Target, c_type: CType) u16 { |
| 3476 | 3491 | return @min( |
| 3477 | 3492 | std.math.ceilPowerOfTwoAssert(u16, (cTypeBitSize(target, c_type) + 7) / 8), |
| 3478 | 3493 | @as(u16, switch (target.cpu.arch) { |
| 3479 | .msp430 => 2, | |
| 3494 | .x86_16, .msp430 => 2, | |
| 3480 | 3495 | |
| 3481 | 3496 | .arc, |
| 3482 | 3497 | .arceb, |
| ... | ... | @@ -3548,7 +3563,7 @@ pub fn cMaxIntAlignment(target: *const Target) u16 { |
| 3548 | 3563 | return switch (target.cpu.arch) { |
| 3549 | 3564 | .avr => 1, |
| 3550 | 3565 | |
| 3551 | .msp430 => 2, | |
| 3566 | .msp430, .x86_16 => 2, | |
| 3552 | 3567 | |
| 3553 | 3568 | .arc, |
| 3554 | 3569 | .arceb, |
| ... | ... | @@ -3625,6 +3640,7 @@ pub fn cCallingConvention(target: *const Target) ?std.builtin.CallingConvention |
| 3625 | 3640 | .windows, .uefi => .{ .x86_win = .{} }, |
| 3626 | 3641 | else => .{ .x86_sysv = .{} }, |
| 3627 | 3642 | }, |
| 3643 | .x86_16 => .{ .x86_16_cdecl = .{} }, | |
| 3628 | 3644 | .aarch64, .aarch64_be => if (target.os.tag.isDarwin()) |
| 3629 | 3645 | .{ .aarch64_aapcs_darwin = .{} } |
| 3630 | 3646 | else switch (target.os.tag) { |
lib/std/Target/x86.zig+5| ... | ... | @@ -3081,6 +3081,11 @@ pub const cpu = struct { |
| 3081 | 3081 | .xsaveopt, |
| 3082 | 3082 | }), |
| 3083 | 3083 | }; |
| 3084 | pub const @"i86": CpuModel = .{ | |
| 3085 | .name = "i86", | |
| 3086 | .llvm_name = null, | |
| 3087 | .features = featureSet(&[_]Feature{}), | |
| 3088 | }; | |
| 3084 | 3089 | pub const @"i386": CpuModel = .{ |
| 3085 | 3090 | .name = "i386", |
| 3086 | 3091 | .llvm_name = "i386", |
lib/std/builtin.zig+11| ... | ... | @@ -223,6 +223,13 @@ pub const CallingConvention = union(enum(u8)) { |
| 223 | 223 | x86_vectorcall: CommonOptions, |
| 224 | 224 | x86_interrupt: CommonOptions, |
| 225 | 225 | |
| 226 | // Calling conventions for the `x86_16` architecture. | |
| 227 | ||
| 228 | x86_16_cdecl: CommonOptions, | |
| 229 | x86_16_stdcall: CommonOptions, | |
| 230 | x86_16_regparmcall: CommonOptions, | |
| 231 | x86_16_interrupt: CommonOptions, | |
| 232 | ||
| 226 | 233 | // Calling conventions for the `aarch64` and `aarch64_be` architectures. |
| 227 | 234 | aarch64_aapcs: CommonOptions, |
| 228 | 235 | aarch64_aapcs_darwin: CommonOptions, |
| ... | ... | @@ -523,6 +530,10 @@ pub const AddressSpace = enum(u5) { |
| 523 | 530 | fs, |
| 524 | 531 | ss, |
| 525 | 532 | |
| 533 | // x86_16 extra address spaces. | |
| 534 | /// Allows addressing the entire address space by storing both segment and offset. | |
| 535 | far, | |
| 536 | ||
| 526 | 537 | // GPU address spaces. |
| 527 | 538 | global, |
| 528 | 539 | constant, |
lib/std/builtin/assembly.zig+1-1| ... | ... | @@ -1,5 +1,5 @@ |
| 1 | 1 | pub const Clobbers = switch (@import("builtin").cpu.arch) { |
| 2 | .x86, .x86_64 => packed struct { | |
| 2 | .x86_16, .x86, .x86_64 => packed struct { | |
| 3 | 3 | /// Whether the inline assembly code may perform stores to memory |
| 4 | 4 | /// addresses other than those derived from input pointer provenance. |
| 5 | 5 | memory: bool = false, |
lib/std/os/windows.zig+22-19| ... | ... | @@ -4634,25 +4634,28 @@ pub const TEB = extern struct { |
| 4634 | 4634 | }; |
| 4635 | 4635 | |
| 4636 | 4636 | comptime { |
| 4637 | // Offsets taken from WinDbg info and Geoff Chappell[1] (RIP) | |
| 4638 | // [1]: https://www.geoffchappell.com/studies/windows/km/ntoskrnl/inc/api/pebteb/teb/index.htm | |
| 4639 | assert(@offsetOf(TEB, "NtTib") == 0x00); | |
| 4640 | if (@sizeOf(usize) == 4) { | |
| 4641 | assert(@offsetOf(TEB, "EnvironmentPointer") == 0x1C); | |
| 4642 | assert(@offsetOf(TEB, "ClientId") == 0x20); | |
| 4643 | assert(@offsetOf(TEB, "ActiveRpcHandle") == 0x28); | |
| 4644 | assert(@offsetOf(TEB, "ThreadLocalStoragePointer") == 0x2C); | |
| 4645 | assert(@offsetOf(TEB, "ProcessEnvironmentBlock") == 0x30); | |
| 4646 | assert(@offsetOf(TEB, "LastErrorValue") == 0x34); | |
| 4647 | assert(@offsetOf(TEB, "TlsSlots") == 0xe10); | |
| 4648 | } else if (@sizeOf(usize) == 8) { | |
| 4649 | assert(@offsetOf(TEB, "EnvironmentPointer") == 0x38); | |
| 4650 | assert(@offsetOf(TEB, "ClientId") == 0x40); | |
| 4651 | assert(@offsetOf(TEB, "ActiveRpcHandle") == 0x50); | |
| 4652 | assert(@offsetOf(TEB, "ThreadLocalStoragePointer") == 0x58); | |
| 4653 | assert(@offsetOf(TEB, "ProcessEnvironmentBlock") == 0x60); | |
| 4654 | assert(@offsetOf(TEB, "LastErrorValue") == 0x68); | |
| 4655 | assert(@offsetOf(TEB, "TlsSlots") == 0x1480); | |
| 4637 | // XXX: Without this check we cannot use `std.Io.Writer` on 16-bit platforms. `std.fmt.bufPrint` will hit the unreachable in `PEB.GdiHandleBuffer` without this guard. | |
| 4638 | if (builtin.os.tag == .windows) { | |
| 4639 | // Offsets taken from WinDbg info and Geoff Chappell[1] (RIP) | |
| 4640 | // [1]: https://www.geoffchappell.com/studies/windows/km/ntoskrnl/inc/api/pebteb/teb/index.htm | |
| 4641 | assert(@offsetOf(TEB, "NtTib") == 0x00); | |
| 4642 | if (@sizeOf(usize) == 4) { | |
| 4643 | assert(@offsetOf(TEB, "EnvironmentPointer") == 0x1C); | |
| 4644 | assert(@offsetOf(TEB, "ClientId") == 0x20); | |
| 4645 | assert(@offsetOf(TEB, "ActiveRpcHandle") == 0x28); | |
| 4646 | assert(@offsetOf(TEB, "ThreadLocalStoragePointer") == 0x2C); | |
| 4647 | assert(@offsetOf(TEB, "ProcessEnvironmentBlock") == 0x30); | |
| 4648 | assert(@offsetOf(TEB, "LastErrorValue") == 0x34); | |
| 4649 | assert(@offsetOf(TEB, "TlsSlots") == 0xe10); | |
| 4650 | } else if (@sizeOf(usize) == 8) { | |
| 4651 | assert(@offsetOf(TEB, "EnvironmentPointer") == 0x38); | |
| 4652 | assert(@offsetOf(TEB, "ClientId") == 0x40); | |
| 4653 | assert(@offsetOf(TEB, "ActiveRpcHandle") == 0x50); | |
| 4654 | assert(@offsetOf(TEB, "ThreadLocalStoragePointer") == 0x58); | |
| 4655 | assert(@offsetOf(TEB, "ProcessEnvironmentBlock") == 0x60); | |
| 4656 | assert(@offsetOf(TEB, "LastErrorValue") == 0x68); | |
| 4657 | assert(@offsetOf(TEB, "TlsSlots") == 0x1480); | |
| 4658 | } | |
| 4656 | 4659 | } |
| 4657 | 4660 | } |
| 4658 | 4661 |
lib/std/zig/system.zig+5| ... | ... | @@ -374,6 +374,11 @@ pub fn resolveTargetQuery(query: Target.Query) DetectError!Target { |
| 374 | 374 | // However, the "mode" flags can be used as overrides, so if the user explicitly |
| 375 | 375 | // sets one of them, that takes precedence. |
| 376 | 376 | switch (query_cpu_arch) { |
| 377 | .x86_16 => { | |
| 378 | cpu.features.addFeature( | |
| 379 | @intFromEnum(Target.x86.Feature.@"16bit_mode"), | |
| 380 | ); | |
| 381 | }, | |
| 377 | 382 | .x86 => { |
| 378 | 383 | if (!Target.x86.featureSetHasAny(query.cpu_features_add, .{ |
| 379 | 384 | .@"16bit_mode", .@"32bit_mode", |
lib/std/zig/target.zig+3-2| ... | ... | @@ -472,8 +472,9 @@ fn eqlIgnoreCase(ignore_case: bool, a: []const u8, b: []const u8) bool { |
| 472 | 472 | } |
| 473 | 473 | } |
| 474 | 474 | |
| 475 | pub fn intByteSize(target: *const std.Target, bits: u16) u19 { | |
| 476 | return std.mem.alignForward(u19, @intCast((@as(u17, bits) + 7) / 8), intAlignment(target, bits)); | |
| 475 | pub fn intByteSize(target: *const std.Target, bits: u16) u16 { | |
| 476 | const previous_aligned = std.mem.alignBackward(u16, bits, 8); | |
| 477 | return std.mem.alignForward(u16, @divExact(previous_aligned, 8) + @intFromBool(previous_aligned != bits), intAlignment(target, bits)); | |
| 477 | 478 | } |
| 478 | 479 | |
| 479 | 480 | pub fn intAlignment(target: *const std.Target, bits: u16) u16 { |
lib/zig.h+6-1| ... | ... | @@ -74,6 +74,9 @@ |
| 74 | 74 | #elif defined (__x86_64__) || (defined(zig_msvc) && defined(_M_X64)) |
| 75 | 75 | #define zig_x86_64 |
| 76 | 76 | #define zig_x86 |
| 77 | #elif defined(__I86__) | |
| 78 | #define zig_x86_16 | |
| 79 | #define zig_x86 | |
| 77 | 80 | #endif |
| 78 | 81 | |
| 79 | 82 | #if defined(zig_msvc) || __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ |
| ... | ... | @@ -400,6 +403,8 @@ |
| 400 | 403 | #define zig_trap() __asm__ volatile("j 0x2") |
| 401 | 404 | #elif defined(zig_sparc) |
| 402 | 405 | #define zig_trap() __asm__ volatile("illtrap") |
| 406 | #elif defined(zig_x86_16) | |
| 407 | #define zig_trap() __asm__ volatile("int $0x3") | |
| 403 | 408 | #elif defined(zig_x86) |
| 404 | 409 | #define zig_trap() __asm__ volatile("ud2") |
| 405 | 410 | #else |
| ... | ... | @@ -4219,7 +4224,7 @@ static inline void zig_loongarch_cpucfg(uint32_t word, uint32_t* result) { |
| 4219 | 4224 | #endif |
| 4220 | 4225 | } |
| 4221 | 4226 | |
| 4222 | #elif defined(zig_x86) | |
| 4227 | #elif defined(zig_x86) && !defined(zig_x86_16) | |
| 4223 | 4228 | |
| 4224 | 4229 | static inline void zig_x86_cpuid(uint32_t leaf_id, uint32_t subid, uint32_t* eax, uint32_t* ebx, uint32_t* ecx, uint32_t* edx) { |
| 4225 | 4230 | #if defined(zig_msvc) |
src/Sema.zig+1| ... | ... | @@ -9034,6 +9034,7 @@ pub fn handleExternLibName( |
| 9034 | 9034 | /// Any calling conventions not included here are either not yet verified to work with variadic |
| 9035 | 9035 | /// functions or there are no more other calling conventions that support variadic functions. |
| 9036 | 9036 | const calling_conventions_supporting_var_args = [_]std.builtin.CallingConvention.Tag{ |
| 9037 | .x86_16_cdecl, | |
| 9037 | 9038 | .x86_64_sysv, |
| 9038 | 9039 | .x86_64_x32, |
| 9039 | 9040 | .x86_64_win, |
src/Zcu.zig+4| ... | ... | @@ -4406,6 +4406,10 @@ pub fn callconvSupported(zcu: *Zcu, cc: std.builtin.CallingConvention) union(enu |
| 4406 | 4406 | } |
| 4407 | 4407 | } |
| 4408 | 4408 | break :ok switch (cc) { |
| 4409 | .x86_16_cdecl, | |
| 4410 | .x86_16_stdcall, | |
| 4411 | .x86_16_regparmcall, | |
| 4412 | .x86_16_interrupt, | |
| 4409 | 4413 | .x86_64_sysv, |
| 4410 | 4414 | .x86_64_win, |
| 4411 | 4415 | .x86_64_vectorcall, |
src/codegen/c.zig+4-1| ... | ... | @@ -8055,9 +8055,11 @@ fn toCallingConvention(cc: std.builtin.CallingConvention, zcu: *Zcu) ?[]const u8 |
| 8055 | 8055 | return switch (cc) { |
| 8056 | 8056 | .auto, .naked => null, |
| 8057 | 8057 | |
| 8058 | .x86_16_cdecl => "cdecl", | |
| 8059 | .x86_16_regparmcall => "regparmcall", | |
| 8058 | 8060 | .x86_64_sysv, .x86_sysv => "sysv_abi", |
| 8059 | 8061 | .x86_64_win, .x86_win => "ms_abi", |
| 8060 | .x86_stdcall => "stdcall", | |
| 8062 | .x86_16_stdcall, .x86_stdcall => "stdcall", | |
| 8061 | 8063 | .x86_fastcall => "fastcall", |
| 8062 | 8064 | .x86_thiscall => "thiscall", |
| 8063 | 8065 | |
| ... | ... | @@ -8127,6 +8129,7 @@ fn toCallingConvention(cc: std.builtin.CallingConvention, zcu: *Zcu) ?[]const u8 |
| 8127 | 8129 | .csky_interrupt, |
| 8128 | 8130 | .m68k_interrupt, |
| 8129 | 8131 | .msp430_interrupt, |
| 8132 | .x86_16_interrupt, | |
| 8130 | 8133 | .x86_interrupt, |
| 8131 | 8134 | .x86_64_interrupt, |
| 8132 | 8135 | => "interrupt", |
src/codegen/llvm.zig+7| ... | ... | @@ -117,6 +117,7 @@ pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 |
| 117 | 117 | .propeller, |
| 118 | 118 | .sh, |
| 119 | 119 | .sheb, |
| 120 | .x86_16, | |
| 120 | 121 | .xtensaeb, |
| 121 | 122 | => unreachable, // Gated by hasLlvmSupport(). |
| 122 | 123 | }; |
| ... | ... | @@ -493,6 +494,7 @@ pub fn dataLayout(target: *const std.Target) []const u8 { |
| 493 | 494 | .propeller, |
| 494 | 495 | .sh, |
| 495 | 496 | .sheb, |
| 497 | .x86_16, | |
| 496 | 498 | .xtensaeb, |
| 497 | 499 | => unreachable, // Gated by hasLlvmSupport(). |
| 498 | 500 | }; |
| ... | ... | @@ -11902,6 +11904,10 @@ fn toLlvmCallConvTag(cc_tag: std.builtin.CallingConvention.Tag, target: *const s |
| 11902 | 11904 | |
| 11903 | 11905 | // All the calling conventions which LLVM does not have a general representation for. |
| 11904 | 11906 | // Note that these are often still supported through the `cCallingConvention` path above via `ccc`. |
| 11907 | .x86_16_cdecl, | |
| 11908 | .x86_16_stdcall, | |
| 11909 | .x86_16_regparmcall, | |
| 11910 | .x86_16_interrupt, | |
| 11905 | 11911 | .x86_sysv, |
| 11906 | 11912 | .x86_win, |
| 11907 | 11913 | .x86_thiscall_mingw, |
| ... | ... | @@ -13131,6 +13137,7 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void { |
| 13131 | 13137 | .propeller, |
| 13132 | 13138 | .sh, |
| 13133 | 13139 | .sheb, |
| 13140 | .x86_16, | |
| 13134 | 13141 | .xtensaeb, |
| 13135 | 13142 | => unreachable, |
| 13136 | 13143 | } |
src/codegen/spirv/Module.zig+1| ... | ... | @@ -927,6 +927,7 @@ pub fn storageClass(module: *Module, as: std.builtin.AddressSpace) spec.StorageC |
| 927 | 927 | .gs, |
| 928 | 928 | .fs, |
| 929 | 929 | .ss, |
| 930 | .far, | |
| 930 | 931 | .param, |
| 931 | 932 | .flash, |
| 932 | 933 | .flash1, |
src/target.zig+1| ... | ... | @@ -227,6 +227,7 @@ pub fn hasLlvmSupport(target: *const std.Target, ofmt: std.Target.ObjectFormat) |
| 227 | 227 | .propeller, |
| 228 | 228 | .sh, |
| 229 | 229 | .sheb, |
| 230 | .x86_16, | |
| 230 | 231 | .xtensaeb, |
| 231 | 232 | => false, |
| 232 | 233 | }; |