diff --git a/lib/compiler_rt/memcpy.zig b/lib/compiler_rt/memcpy.zig index d67a6e766a..7025768dd5 100644 --- a/lib/compiler_rt/memcpy.zig +++ b/lib/compiler_rt/memcpy.zig @@ -18,16 +18,18 @@ comptime { } } -const Element = if (std.simd.suggestVectorLength(u8)) |vec_size| - @Type(.{ .vector = .{ - .child = u8, - .len = vec_size, - } }) -else - usize; +const Element = Element: { + if (std.simd.suggestVectorLength(u8)) |vec_size| { + const Vec = @Vector(vec_size, u8); + + if (@sizeOf(Vec) == vec_size and std.math.isPowerOfTwo(vec_size)) { + break :Element Vec; + } + } + break :Element usize; +}; comptime { - assert(@sizeOf(Element) >= @alignOf(Element)); assert(std.math.isPowerOfTwo(@sizeOf(Element))); }