authorgravatar for paul.verigo@gmail.comPavel Verigo <paul.verigo@gmail.com> 2026-08-16 11:02:12+02:00
committergravatar for paul.verigo@gmail.comPavel Verigo <paul.verigo@gmail.com> 2026-08-23 03:57:05+02:00
log7def86c2f2a721815bd232b8d4fba7b6682345ae
tree2a36f68b448b7a4a5c79a25c4bca24964449c65f
parent069a009fbc6e34cc5a14cea037a2129cf4642434

compiler-rt: add @disableIntrinsics to memset


1 files changed, 8 insertions(+), 0 deletions(-)

lib/compiler_rt.zig+8
...@@ -602,6 +602,8 @@ inline fn negXi2(comptime T: type, a: T) T {...@@ -602,6 +602,8 @@ inline fn negXi2(comptime T: type, a: T) T {
602}602}
603603
604fn memsetSmallPowerOf2(d: [*]u8, b: u8, comptime size: usize) void {604fn memsetSmallPowerOf2(d: [*]u8, b: u8, comptime size: usize) void {
605 @disableIntrinsics();
606
605 if (size > @sizeOf(usize)) {607 if (size > @sizeOf(usize)) {
606 d[0..size].* = @splat(b);608 d[0..size].* = @splat(b);
607 } else {609 } else {
...@@ -619,6 +621,8 @@ fn shortMemset(...@@ -619,6 +621,8 @@ fn shortMemset(
619 b: u8,621 b: u8,
620 len: usize,622 len: usize,
621) void {623) void {
624 @disableIntrinsics();
625
622 if (log_min + 1 != log_max) {626 if (log_min + 1 != log_max) {
623 const mid = (log_min + log_max) / 2;627 const mid = (log_min + log_max) / 2;
624 if (len > 1 << mid) {628 if (len > 1 << mid) {
...@@ -635,6 +639,8 @@ fn shortMemset(...@@ -635,6 +639,8 @@ fn shortMemset(
635}639}
636640
637fn fastMemset(dest: ?[*]u8, c: c_int, len: usize) callconv(.c) ?[*]u8 {641fn fastMemset(dest: ?[*]u8, c: c_int, len: usize) callconv(.c) ?[*]u8 {
642 @disableIntrinsics();
643
638 const b: u8 = @truncate(@as(c_uint, @bitCast(c)));644 const b: u8 = @truncate(@as(c_uint, @bitCast(c)));
639 const n = std.simd.suggestVectorLength(u8) orelse @sizeOf(usize);645 const n = std.simd.suggestVectorLength(u8) orelse @sizeOf(usize);
640646
...@@ -668,6 +674,8 @@ fn fastMemset(dest: ?[*]u8, c: c_int, len: usize) callconv(.c) ?[*]u8 {...@@ -668,6 +674,8 @@ fn fastMemset(dest: ?[*]u8, c: c_int, len: usize) callconv(.c) ?[*]u8 {
668}674}
669675
670fn smallMemset(dest: ?[*]u8, c: c_int, len: usize) callconv(.c) ?[*]u8 {676fn smallMemset(dest: ?[*]u8, c: c_int, len: usize) callconv(.c) ?[*]u8 {
677 @disableIntrinsics();
678
671 const b: u8 = @truncate(@as(c_uint, @bitCast(c)));679 const b: u8 = @truncate(@as(c_uint, @bitCast(c)));
672680
673 if (len != 0) {681 if (len != 0) {