diff --git a/src/simd/main.zig b/src/simd/main.zig index 13c3dde9f..3493f133d 100644 --- a/src/simd/main.zig +++ b/src/simd/main.zig @@ -2,16 +2,16 @@ const std = @import("std"); pub const isa = @import("isa.zig"); pub const utf8 = @import("utf8.zig"); -const index_of = @import("index_of.zig"); -pub usingnamespace index_of; +pub const index_of = @import("index_of.zig"); -pub fn main() !void { - //std.log.warn("ISA={}", .{isa.ISA.detect()}); - const input = "1234567\x1b1234567\x1b"; - //const input = "1234567812345678"; - std.log.warn("result={any}", .{index_of.indexOf(input, 0x1B)}); - std.log.warn("result={any}", .{utf8.utf8Validate(input)}); -} +// TODO: temporary, only for zig build simd to inspect disasm easily +// pub fn main() !void { +// //std.log.warn("ISA={}", .{isa.ISA.detect()}); +// const input = "1234567\x1b1234567\x1b"; +// //const input = "1234567812345678"; +// std.log.warn("result={any}", .{index_of.indexOf(input, 0x1B)}); +// std.log.warn("result={any}", .{utf8.utf8Validate(input)}); +// } test { @import("std").testing.refAllDecls(@This()); diff --git a/src/simd/utf8.zig b/src/simd/utf8.zig index ac8f7b53b..0f324024b 100644 --- a/src/simd/utf8.zig +++ b/src/simd/utf8.zig @@ -21,6 +21,10 @@ pub fn utf8ValidateNeon(input: []const u8) bool { return !neon.hasErrors(); } +pub fn utf8ValidateScalar(input: []const u8) bool { + return std.unicode.utf8ValidateSlice(input); +} + pub const Neon = struct { /// The previous input in a vector. This is required because to check /// the validity of a UTF-8 byte, we need to sometimes know previous @@ -52,7 +56,7 @@ pub const Neon = struct { var i: usize = 0; while (i + 16 <= input.len) : (i += 16) { const input_vec = aarch64.vld1q_u8(input[i..]); - self.next(input_vec); + self.process(input_vec); } // If we have any data remaining, we pad it with zeroes since that @@ -66,7 +70,7 @@ pub const Neon = struct { @memset(buf[remaining..], 0); const input_vec = aarch64.vld1q_u8(&buf); - self.next(input_vec); + self.process(input_vec); } }