| author | |
| committer | |
| log | ce4245f873c68cfcc431deb303383f25f6d50855 |
| tree | be29f6d6d6bfa1c8fc7a8f20d61f19215a62554a |
| parent | cb419a1a8692cdbd612c6b63b65ba9a02e23c6c1 |
| parent | d7cf25f5ca40e5cbcd739911e773769a62c2abe1 |
| signature |
bsd: debitrot11 files changed, 108 insertions(+), 73 deletions(-)
lib/compiler_rt/emutls.zig+2-2| ... | ... | @@ -246,7 +246,7 @@ const emutls_control = extern struct { |
| 246 | 246 | // Two threads could race against the same emutls_control. |
| 247 | 247 | |
| 248 | 248 | // Use atomic for reading coherent value lockless. |
| 249 | const index_lockless = @atomicLoad(usize, &self.object.index, .Acquire); | |
| 249 | const index_lockless = @atomicLoad(usize, &self.object.index, .acquire); | |
| 250 | 250 | |
| 251 | 251 | if (index_lockless != 0) { |
| 252 | 252 | // index is already initialized, return it. |
| ... | ... | @@ -264,7 +264,7 @@ const emutls_control = extern struct { |
| 264 | 264 | } |
| 265 | 265 | |
| 266 | 266 | // Store a new index atomically (for having coherent index_lockless reading). |
| 267 | @atomicStore(usize, &self.object.index, emutls_control.next_index, .Release); | |
| 267 | @atomicStore(usize, &self.object.index, emutls_control.next_index, .release); | |
| 268 | 268 | |
| 269 | 269 | // Increment the next available index |
| 270 | 270 | emutls_control.next_index += 1; |
lib/std/Thread/Futex.zig+4-4| ... | ... | @@ -801,7 +801,7 @@ const PosixImpl = struct { |
| 801 | 801 | assert(std.c.pthread_mutex_lock(&bucket.mutex) == .SUCCESS); |
| 802 | 802 | defer assert(std.c.pthread_mutex_unlock(&bucket.mutex) == .SUCCESS); |
| 803 | 803 | |
| 804 | cancelled = ptr.load(.Monotonic) != expect; | |
| 804 | cancelled = ptr.load(.monotonic) != expect; | |
| 805 | 805 | if (cancelled) { |
| 806 | 806 | return; |
| 807 | 807 | } |
| ... | ... | @@ -855,14 +855,14 @@ const PosixImpl = struct { |
| 855 | 855 | // The pending count increment in wait() must also now use seq_cst for the update + this pending load |
| 856 | 856 | // to be in the same modification order as our load isn't using release/acquire to guarantee it. |
| 857 | 857 | bucket.pending.fence(.seq_cst); |
| 858 | if (bucket.pending.load(.Monotonic) == 0) { | |
| 858 | if (bucket.pending.load(.monotonic) == 0) { | |
| 859 | 859 | return; |
| 860 | 860 | } |
| 861 | 861 | |
| 862 | 862 | // Keep a list of all the waiters notified and wake then up outside the mutex critical section. |
| 863 | 863 | var notified = WaitList{}; |
| 864 | 864 | defer if (notified.len > 0) { |
| 865 | const pending = bucket.pending.fetchSub(notified.len, .Monotonic); | |
| 865 | const pending = bucket.pending.fetchSub(notified.len, .monotonic); | |
| 866 | 866 | assert(pending >= notified.len); |
| 867 | 867 | |
| 868 | 868 | while (notified.pop()) |waiter| { |
| ... | ... | @@ -875,7 +875,7 @@ const PosixImpl = struct { |
| 875 | 875 | defer assert(std.c.pthread_mutex_unlock(&bucket.mutex) == .SUCCESS); |
| 876 | 876 | |
| 877 | 877 | // Another pending check again to avoid the WaitQueue lookup if not necessary. |
| 878 | if (bucket.pending.load(.Monotonic) > 0) { | |
| 878 | if (bucket.pending.load(.monotonic) > 0) { | |
| 879 | 879 | notified = WaitQueue.remove(&bucket.treap, address, max_waiters); |
| 880 | 880 | } |
| 881 | 881 | } |
lib/std/Thread/RwLock.zig+1-1| ... | ... | @@ -375,5 +375,5 @@ test "concurrent access" { |
| 375 | 375 | |
| 376 | 376 | try testing.expectEqual(num_writes, runner.writes); |
| 377 | 377 | |
| 378 | //std.debug.print("reads={}\n", .{ runner.reads.load(.Unordered)}); | |
| 378 | //std.debug.print("reads={}\n", .{ runner.reads.load(.unordered)}); | |
| 379 | 379 | } |
lib/std/atomic.zig+1-1| ... | ... | @@ -159,7 +159,7 @@ test Value { |
| 159 | 159 | // acquire ensures count decrement and code before |
| 160 | 160 | // previous unrefs()s happens-before we call dropFn |
| 161 | 161 | // below. |
| 162 | // Another alternative is to use .AcqRel on the | |
| 162 | // Another alternative is to use .acq_rel on the | |
| 163 | 163 | // fetchSub count decrement but it's extra barrier in |
| 164 | 164 | // possibly hot path. |
| 165 | 165 | rc.count.fence(.acquire); |
lib/std/c.zig+85-17| ... | ... | @@ -1502,25 +1502,19 @@ pub extern "c" fn closedir(dp: *DIR) c_int; |
| 1502 | 1502 | pub extern "c" fn telldir(dp: *DIR) c_long; |
| 1503 | 1503 | pub extern "c" fn seekdir(dp: *DIR, loc: c_long) void; |
| 1504 | 1504 | |
| 1505 | pub extern "c" fn clock_gettime(clk_id: c_int, tp: *c.timespec) c_int; | |
| 1506 | pub extern "c" fn clock_getres(clk_id: c_int, tp: *c.timespec) c_int; | |
| 1507 | pub extern "c" fn gettimeofday(noalias tv: ?*c.timeval, noalias tz: ?*c.timezone) c_int; | |
| 1508 | pub extern "c" fn nanosleep(rqtp: *const c.timespec, rmtp: ?*c.timespec) c_int; | |
| 1509 | ||
| 1510 | pub extern "c" fn getrusage(who: c_int, usage: *c.rusage) c_int; | |
| 1511 | ||
| 1512 | pub extern "c" fn sched_yield() c_int; | |
| 1513 | ||
| 1514 | pub extern "c" fn sigaction(sig: c_int, noalias act: ?*const c.Sigaction, noalias oact: ?*c.Sigaction) c_int; | |
| 1515 | pub extern "c" fn sigprocmask(how: c_int, noalias set: ?*const c.sigset_t, noalias oset: ?*c.sigset_t) c_int; | |
| 1516 | pub extern "c" fn sigfillset(set: ?*c.sigset_t) void; | |
| 1517 | 1505 | pub extern "c" fn sigwait(set: ?*c.sigset_t, sig: ?*c_int) c_int; |
| 1518 | 1506 | |
| 1519 | pub extern "c" fn socket(domain: c_uint, sock_type: c_uint, protocol: c_uint) c_int; | |
| 1520 | ||
| 1521 | 1507 | pub extern "c" fn alarm(seconds: c_uint) c_uint; |
| 1522 | 1508 | |
| 1523 | pub extern "c" fn msync(addr: *align(page_size) const anyopaque, len: usize, flags: c_int) c_int; | |
| 1509 | pub const clock_getres = switch (native_os) { | |
| 1510 | .netbsd => private.__clock_getres50, | |
| 1511 | else => private.clock_getres, | |
| 1512 | }; | |
| 1513 | ||
| 1514 | pub const clock_gettime = switch (native_os) { | |
| 1515 | .netbsd => private.__clock_gettime50, | |
| 1516 | else => private.clock_gettime, | |
| 1517 | }; | |
| 1524 | 1518 | |
| 1525 | 1519 | pub const fstat = switch (native_os) { |
| 1526 | 1520 | .macos => switch (native_arch) { |
| ... | ... | @@ -1539,6 +1533,31 @@ pub const fstatat = switch (native_os) { |
| 1539 | 1533 | else => private.fstatat, |
| 1540 | 1534 | }; |
| 1541 | 1535 | |
| 1536 | pub const getdirentries = switch (native_os) { | |
| 1537 | .macos, .ios, .tvos, .watchos => private.__getdirentries64, | |
| 1538 | else => private.getdirentries, | |
| 1539 | }; | |
| 1540 | ||
| 1541 | pub const getrusage = switch (native_os) { | |
| 1542 | .netbsd => private.__getrusage50, | |
| 1543 | else => private.getrusage, | |
| 1544 | }; | |
| 1545 | ||
| 1546 | pub const gettimeofday = switch (native_os) { | |
| 1547 | .netbsd => private.__gettimeofday50, | |
| 1548 | else => private.gettimeofday, | |
| 1549 | }; | |
| 1550 | ||
| 1551 | pub const msync = switch (native_os) { | |
| 1552 | .netbsd => private.__msync13, | |
| 1553 | else => private.msync, | |
| 1554 | }; | |
| 1555 | ||
| 1556 | pub const nanosleep = switch (native_os) { | |
| 1557 | .netbsd => private.__nanosleep50, | |
| 1558 | else => private.nanosleep, | |
| 1559 | }; | |
| 1560 | ||
| 1542 | 1561 | pub const readdir = switch (native_os) { |
| 1543 | 1562 | .macos => switch (native_arch) { |
| 1544 | 1563 | .x86_64 => private.@"readdir$INODE64", |
| ... | ... | @@ -1549,10 +1568,35 @@ pub const readdir = switch (native_os) { |
| 1549 | 1568 | }; |
| 1550 | 1569 | |
| 1551 | 1570 | pub const realpath = switch (native_os) { |
| 1552 | .macos, .ios, .watchos, .tvos => private.@"realpath$DARWIN_EXTSN", | |
| 1571 | .macos, .ios, .tvos, .watchos => private.@"realpath$DARWIN_EXTSN", | |
| 1553 | 1572 | else => private.realpath, |
| 1554 | 1573 | }; |
| 1555 | 1574 | |
| 1575 | pub const sched_yield = switch (native_os) { | |
| 1576 | .netbsd => private.__libc_thr_yield, | |
| 1577 | else => private.sched_yield, | |
| 1578 | }; | |
| 1579 | ||
| 1580 | pub const sigaction = switch (native_os) { | |
| 1581 | .netbsd => private.__sigaction14, | |
| 1582 | else => private.sigaction, | |
| 1583 | }; | |
| 1584 | ||
| 1585 | pub const sigfillset = switch (native_os) { | |
| 1586 | .netbsd => private.__sigfillset14, | |
| 1587 | else => private.sigfillset, | |
| 1588 | }; | |
| 1589 | ||
| 1590 | pub const sigprocmask = switch (native_os) { | |
| 1591 | .netbsd => private.__sigprocmask14, | |
| 1592 | else => private.sigprocmask, | |
| 1593 | }; | |
| 1594 | ||
| 1595 | pub const socket = switch (native_os) { | |
| 1596 | .netbsd => private.__socket30, | |
| 1597 | else => private.socket, | |
| 1598 | }; | |
| 1599 | ||
| 1556 | 1600 | pub const stat = switch (native_os) { |
| 1557 | 1601 | .macos => switch (native_arch) { |
| 1558 | 1602 | .x86_64 => private.@"stat$INODE64", |
| ... | ... | @@ -1680,7 +1724,6 @@ pub extern "c" fn recvfrom( |
| 1680 | 1724 | pub extern "c" fn recvmsg(sockfd: c.fd_t, msg: *c.msghdr, flags: u32) isize; |
| 1681 | 1725 | |
| 1682 | 1726 | pub extern "c" fn kill(pid: c.pid_t, sig: c_int) c_int; |
| 1683 | pub extern "c" fn getdirentries(fd: c.fd_t, buf_ptr: [*]u8, nbytes: usize, basep: *i64) isize; | |
| 1684 | 1727 | |
| 1685 | 1728 | pub extern "c" fn setuid(uid: c.uid_t) c_int; |
| 1686 | 1729 | pub extern "c" fn setgid(gid: c.gid_t) c_int; |
| ... | ... | @@ -1878,10 +1921,22 @@ else |
| 1878 | 1921 | }; |
| 1879 | 1922 | |
| 1880 | 1923 | const private = struct { |
| 1924 | extern "c" fn clock_getres(clk_id: c_int, tp: *c.timespec) c_int; | |
| 1925 | extern "c" fn clock_gettime(clk_id: c_int, tp: *c.timespec) c_int; | |
| 1881 | 1926 | extern "c" fn fstat(fd: c.fd_t, buf: *c.Stat) c_int; |
| 1882 | 1927 | extern "c" fn fstatat(dirfd: c.fd_t, path: [*:0]const u8, buf: *c.Stat, flag: u32) c_int; |
| 1928 | extern "c" fn getdirentries(fd: c.fd_t, buf_ptr: [*]u8, nbytes: usize, basep: *i64) isize; | |
| 1929 | extern "c" fn getrusage(who: c_int, usage: *c.rusage) c_int; | |
| 1930 | extern "c" fn gettimeofday(noalias tv: ?*c.timeval, noalias tz: ?*c.timezone) c_int; | |
| 1931 | extern "c" fn msync(addr: *align(page_size) const anyopaque, len: usize, flags: c_int) c_int; | |
| 1932 | extern "c" fn nanosleep(rqtp: *const c.timespec, rmtp: ?*c.timespec) c_int; | |
| 1883 | 1933 | extern "c" fn readdir(dir: *c.DIR) ?*c.dirent; |
| 1884 | 1934 | extern "c" fn realpath(noalias file_name: [*:0]const u8, noalias resolved_name: [*]u8) ?[*:0]u8; |
| 1935 | extern "c" fn sched_yield() c_int; | |
| 1936 | extern "c" fn sigaction(sig: c_int, noalias act: ?*const c.Sigaction, noalias oact: ?*c.Sigaction) c_int; | |
| 1937 | extern "c" fn sigfillset(set: ?*c.sigset_t) void; | |
| 1938 | extern "c" fn sigprocmask(how: c_int, noalias set: ?*const c.sigset_t, noalias oset: ?*c.sigset_t) c_int; | |
| 1939 | extern "c" fn socket(domain: c_uint, sock_type: c_uint, protocol: c_uint) c_int; | |
| 1885 | 1940 | extern "c" fn stat(noalias path: [*:0]const u8, noalias buf: *c.Stat) c_int; |
| 1886 | 1941 | |
| 1887 | 1942 | /// macos modernized symbols. |
| ... | ... | @@ -1894,7 +1949,20 @@ const private = struct { |
| 1894 | 1949 | |
| 1895 | 1950 | /// macos modernized symbols. |
| 1896 | 1951 | extern "c" fn @"realpath$DARWIN_EXTSN"(noalias file_name: [*:0]const u8, noalias resolved_name: [*]u8) ?[*:0]u8; |
| 1952 | extern "c" fn __getdirentries64(fd: c.fd_t, buf_ptr: [*]u8, buf_len: usize, basep: *i64) isize; | |
| 1897 | 1953 | |
| 1898 | 1954 | /// netbsd modernized symbols. |
| 1955 | extern "c" fn __clock_getres50(clk_id: c_int, tp: *c.timespec) c_int; | |
| 1956 | extern "c" fn __clock_gettime50(clk_id: c_int, tp: *c.timespec) c_int; | |
| 1899 | 1957 | extern "c" fn __fstat50(fd: c.fd_t, buf: *c.Stat) c_int; |
| 1958 | extern "c" fn __getrusage50(who: c_int, usage: *c.rusage) c_int; | |
| 1959 | extern "c" fn __gettimeofday50(noalias tv: ?*c.timeval, noalias tz: ?*c.timezone) c_int; | |
| 1960 | extern "c" fn __libc_thr_yield() c_int; | |
| 1961 | extern "c" fn __msync13(addr: *align(std.mem.page_size) const anyopaque, len: usize, flags: c_int) c_int; | |
| 1962 | extern "c" fn __nanosleep50(rqtp: *const c.timespec, rmtp: ?*c.timespec) c_int; | |
| 1963 | extern "c" fn __sigaction14(sig: c_int, noalias act: ?*const c.Sigaction, noalias oact: ?*c.Sigaction) c_int; | |
| 1964 | extern "c" fn __sigfillset14(set: ?*c.sigset_t) void; | |
| 1965 | extern "c" fn __sigprocmask14(how: c_int, noalias set: ?*const c.sigset_t, noalias oset: ?*c.sigset_t) c_int; | |
| 1966 | extern "c" fn __socket30(domain: c_uint, sock_type: c_uint, protocol: c_uint) c_int; | |
| 1967 | extern "c" fn __stat50(path: [*:0]const u8, buf: *c.Stat) c_int; | |
| 1900 | 1968 | }; |
lib/std/c/darwin.zig-3| ... | ... | @@ -924,9 +924,6 @@ pub extern "c" fn os_unfair_lock_trylock(o: os_unfair_lock_t) bool; |
| 924 | 924 | pub extern "c" fn os_unfair_lock_assert_owner(o: os_unfair_lock_t) void; |
| 925 | 925 | pub extern "c" fn os_unfair_lock_assert_not_owner(o: os_unfair_lock_t) void; |
| 926 | 926 | |
| 927 | // XXX: close -> close$NOCANCEL | |
| 928 | // XXX: getdirentries -> _getdirentries64 | |
| 929 | ||
| 930 | 927 | // See: https://opensource.apple.com/source/xnu/xnu-6153.141.1/bsd/sys/_types.h.auto.html |
| 931 | 928 | // TODO: audit mode_t/pid_t, should likely be u16/i32 |
| 932 | 929 | pub const blkcnt_t = i64; |
lib/std/c/dragonfly.zig+6| ... | ... | @@ -494,6 +494,12 @@ pub const sockaddr = extern struct { |
| 494 | 494 | addr: [16]u8, |
| 495 | 495 | scope_id: u32, |
| 496 | 496 | }; |
| 497 | ||
| 498 | pub const un = extern struct { | |
| 499 | len: u8 = @sizeOf(un), | |
| 500 | family: sa_family_t = AF.UNIX, | |
| 501 | path: [104]u8, | |
| 502 | }; | |
| 497 | 503 | }; |
| 498 | 504 | |
| 499 | 505 | pub const Kevent = extern struct { |
lib/std/c/netbsd.zig-33| ... | ... | @@ -18,47 +18,14 @@ pub extern "c" fn _lwp_self() lwpid_t; |
| 18 | 18 | pub extern "c" fn pipe2(fds: *[2]fd_t, flags: std.c.O) c_int; |
| 19 | 19 | pub extern "c" fn arc4random_buf(buf: [*]u8, len: usize) void; |
| 20 | 20 | |
| 21 | pub extern "c" fn __stat50(path: [*:0]const u8, buf: *Stat) c_int; | |
| 22 | pub const stat = __stat50; | |
| 23 | ||
| 24 | pub extern "c" fn __clock_gettime50(clk_id: c_int, tp: *timespec) c_int; | |
| 25 | pub const clock_gettime = __clock_gettime50; | |
| 26 | ||
| 27 | pub extern "c" fn __clock_getres50(clk_id: c_int, tp: *timespec) c_int; | |
| 28 | pub const clock_getres = __clock_getres50; | |
| 29 | ||
| 30 | 21 | pub extern "c" fn __getdents30(fd: c_int, buf_ptr: [*]u8, nbytes: usize) c_int; |
| 31 | 22 | pub const getdents = __getdents30; |
| 32 | 23 | |
| 33 | 24 | pub extern "c" fn __sigaltstack14(ss: ?*stack_t, old_ss: ?*stack_t) c_int; |
| 34 | 25 | pub const sigaltstack = __sigaltstack14; |
| 35 | 26 | |
| 36 | pub extern "c" fn __nanosleep50(rqtp: *const timespec, rmtp: ?*timespec) c_int; | |
| 37 | pub const nanosleep = __nanosleep50; | |
| 38 | ||
| 39 | pub extern "c" fn __sigaction14(sig: c_int, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) c_int; | |
| 40 | pub const sigaction = __sigaction14; | |
| 41 | ||
| 42 | pub extern "c" fn __sigprocmask14(how: c_int, noalias set: ?*const sigset_t, noalias oset: ?*sigset_t) c_int; | |
| 43 | pub const sigprocmask = __sigaction14; | |
| 44 | ||
| 45 | pub extern "c" fn __socket30(domain: c_uint, sock_type: c_uint, protocol: c_uint) c_int; | |
| 46 | pub const socket = __socket30; | |
| 47 | ||
| 48 | pub extern "c" fn __gettimeofday50(noalias tv: ?*timeval, noalias tz: ?*timezone) c_int; | |
| 49 | pub const gettimeofday = __gettimeofday50; | |
| 50 | ||
| 51 | pub extern "c" fn __getrusage50(who: c_int, usage: *rusage) c_int; | |
| 52 | pub const getrusage = __getrusage50; | |
| 53 | ||
| 54 | pub extern "c" fn __libc_thr_yield() c_int; | |
| 55 | pub const sched_yield = __libc_thr_yield; | |
| 56 | ||
| 57 | 27 | pub extern "c" fn posix_memalign(memptr: *?*anyopaque, alignment: usize, size: usize) c_int; |
| 58 | 28 | |
| 59 | pub extern "c" fn __msync13(addr: *align(std.mem.page_size) const anyopaque, len: usize, flags: c_int) c_int; | |
| 60 | pub const msync = __msync13; | |
| 61 | ||
| 62 | 29 | pub const pthread_spin_t = switch (builtin.cpu.arch) { |
| 63 | 30 | .aarch64, .aarch64_be, .aarch64_32 => u8, |
| 64 | 31 | .mips, .mipsel, .mips64, .mips64el => u32, |
lib/std/fs/Dir.zig+2-5| ... | ... | @@ -49,7 +49,7 @@ pub const Iterator = switch (builtin.os.tag) { |
| 49 | 49 | posix.lseek_SET(self.dir.fd, 0) catch unreachable; // EBADF here likely means that the Dir was not opened with iteration permissions |
| 50 | 50 | self.first_iter = false; |
| 51 | 51 | } |
| 52 | const rc = posix.system.__getdirentries64( | |
| 52 | const rc = posix.system.getdirentries( | |
| 53 | 53 | self.dir.fd, |
| 54 | 54 | &self.buf, |
| 55 | 55 | self.buf.len, |
| ... | ... | @@ -161,10 +161,7 @@ pub const Iterator = switch (builtin.os.tag) { |
| 161 | 161 | posix.lseek_SET(self.dir.fd, 0) catch unreachable; // EBADF here likely means that the Dir was not opened with iteration permissions |
| 162 | 162 | self.first_iter = false; |
| 163 | 163 | } |
| 164 | const rc = if (builtin.os.tag == .netbsd) | |
| 165 | posix.system.__getdents30(self.dir.fd, &self.buf, self.buf.len) | |
| 166 | else | |
| 167 | posix.system.getdents(self.dir.fd, &self.buf, self.buf.len); | |
| 164 | const rc = posix.system.getdents(self.dir.fd, &self.buf, self.buf.len); | |
| 168 | 165 | switch (posix.errno(rc)) { |
| 169 | 166 | .SUCCESS => {}, |
| 170 | 167 | .BADF => unreachable, // Dir is invalid or was opened without iteration ability |
src/Air.zig+3-3| ... | ... | @@ -727,11 +727,11 @@ pub const Inst = struct { |
| 727 | 727 | /// Result type is always `void`. |
| 728 | 728 | /// Uses the `bin_op` field. LHS is pointer, RHS is element. |
| 729 | 729 | atomic_store_unordered, |
| 730 | /// Same as `atomic_store_unordered` but with `AtomicOrder.Monotonic`. | |
| 730 | /// Same as `atomic_store_unordered` but with `AtomicOrder.monotonic`. | |
| 731 | 731 | atomic_store_monotonic, |
| 732 | /// Same as `atomic_store_unordered` but with `AtomicOrder.Release`. | |
| 732 | /// Same as `atomic_store_unordered` but with `AtomicOrder.release`. | |
| 733 | 733 | atomic_store_release, |
| 734 | /// Same as `atomic_store_unordered` but with `AtomicOrder.SeqCst`. | |
| 734 | /// Same as `atomic_store_unordered` but with `AtomicOrder.seq_cst`. | |
| 735 | 735 | atomic_store_seq_cst, |
| 736 | 736 | /// Atomically read-modify-write via a pointer. |
| 737 | 737 | /// Result type is the element type of the pointer. |
src/arch/sparc64/CodeGen.zig+4-4| ... | ... | @@ -647,10 +647,10 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void { |
| 647 | 647 | .call_never_tail => try self.airCall(inst, .never_tail), |
| 648 | 648 | .call_never_inline => try self.airCall(inst, .never_inline), |
| 649 | 649 | |
| 650 | .atomic_store_unordered => @panic("TODO try self.airAtomicStore(inst, .Unordered)"), | |
| 651 | .atomic_store_monotonic => @panic("TODO try self.airAtomicStore(inst, .Monotonic)"), | |
| 652 | .atomic_store_release => @panic("TODO try self.airAtomicStore(inst, .Release)"), | |
| 653 | .atomic_store_seq_cst => @panic("TODO try self.airAtomicStore(inst, .SeqCst)"), | |
| 650 | .atomic_store_unordered => @panic("TODO try self.airAtomicStore(inst, .unordered)"), | |
| 651 | .atomic_store_monotonic => @panic("TODO try self.airAtomicStore(inst, .monotonic)"), | |
| 652 | .atomic_store_release => @panic("TODO try self.airAtomicStore(inst, .release)"), | |
| 653 | .atomic_store_seq_cst => @panic("TODO try self.airAtomicStore(inst, .seq_cst)"), | |
| 654 | 654 | |
| 655 | 655 | .struct_field_ptr_index_0 => try self.airStructFieldPtrIndex(inst, 0), |
| 656 | 656 | .struct_field_ptr_index_1 => try self.airStructFieldPtrIndex(inst, 1), |