diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-04-29 00:19:55 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-29 00:19:55 -0700 |
| commit | d65b42e07caa00dfe2f2fbf221c593ce57882784 (patch) | |
| tree | 7926cbea1499e0affe930bf6d7455dc24adf014e /lib/std/fifo.zig | |
| parent | fd6200eda6d4fe19c34a59430a88a9ce38d6d7a4 (diff) | |
| parent | fa200ca0cad2705bad40eb723dedf4e3bf11f2ff (diff) | |
| download | zig-d65b42e07caa00dfe2f2fbf221c593ce57882784.tar.gz zig-d65b42e07caa00dfe2f2fbf221c593ce57882784.zip | |
Merge pull request #15481 from ziglang/use-mem-intrinsics
actually use the new memory intrinsics
Diffstat (limited to 'lib/std/fifo.zig')
| -rw-r--r-- | lib/std/fifo.zig | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/lib/std/fifo.zig b/lib/std/fifo.zig index a6736e41a7..0861e19d14 100644 --- a/lib/std/fifo.zig +++ b/lib/std/fifo.zig @@ -86,19 +86,17 @@ pub fn LinearFifo( pub fn realign(self: *Self) void { if (self.buf.len - self.head >= self.count) { - // this copy overlaps - mem.copy(T, self.buf[0..self.count], self.buf[self.head..][0..self.count]); + mem.copyForwards(T, self.buf[0..self.count], self.buf[self.head..][0..self.count]); self.head = 0; } else { var tmp: [mem.page_size / 2 / @sizeOf(T)]T = undefined; while (self.head != 0) { - const n = math.min(self.head, tmp.len); + const n = @min(self.head, tmp.len); const m = self.buf.len - n; - mem.copy(T, tmp[0..n], self.buf[0..n]); - // this middle copy overlaps; the others here don't - mem.copy(T, self.buf[0..m], self.buf[n..][0..m]); - mem.copy(T, self.buf[m..], tmp[0..n]); + @memcpy(tmp[0..n], self.buf[0..n]); + mem.copyForwards(T, self.buf[0..m], self.buf[n..][0..m]); + @memcpy(self.buf[m..][0..n], tmp[0..n]); self.head -= n; } } @@ -223,8 +221,8 @@ pub fn LinearFifo( while (dst_left.len > 0) { const slice = self.readableSlice(0); if (slice.len == 0) break; - const n = math.min(slice.len, dst_left.len); - mem.copy(T, dst_left, slice[0..n]); + const n = @min(slice.len, dst_left.len); + @memcpy(dst_left[0..n], slice[0..n]); self.discard(n); dst_left = dst_left[n..]; } @@ -289,8 +287,8 @@ pub fn LinearFifo( while (src_left.len > 0) { const writable_slice = self.writableSlice(0); assert(writable_slice.len != 0); - const n = math.min(writable_slice.len, src_left.len); - mem.copy(T, writable_slice, src_left[0..n]); + const n = @min(writable_slice.len, src_left.len); + @memcpy(writable_slice[0..n], src_left[0..n]); self.update(n); src_left = src_left[n..]; } @@ -354,11 +352,11 @@ pub fn LinearFifo( const slice = self.readableSliceMut(0); if (src.len < slice.len) { - mem.copy(T, slice, src); + @memcpy(slice[0..src.len], src); } else { - mem.copy(T, slice, src[0..slice.len]); + @memcpy(slice, src[0..slice.len]); const slice2 = self.readableSliceMut(slice.len); - mem.copy(T, slice2, src[slice.len..]); + @memcpy(slice2[0 .. src.len - slice.len], src[slice.len..]); } } |
