From 7abd2683bdf8a3c66501e0a2cc644b9ca1ee5ff4 Mon Sep 17 00:00:00 2001 From: Jose Colon Rodriguez Date: Sat, 17 Feb 2024 08:33:54 -0400 Subject: isAsciiOnly SIMD tweaks --- src/display_width.zig | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/display_width.zig b/src/display_width.zig index b96f872..aed0ef1 100644 --- a/src/display_width.zig +++ b/src/display_width.zig @@ -15,8 +15,12 @@ pub fn codePointWidth(cp: u21) i3 { return dwp.stage_2[dwp.stage_1[cp >> 8] + (cp & 0xff)]; } +// Returns true if `str` only contains ASCII bytes. Uses SIMD if possible. fn isAsciiOnly(str: []const u8) bool { - const vec_len = simd.suggestVectorLength(u8) orelse @panic("No SIMD support."); + const vec_len = simd.suggestVectorLength(u8) orelse return for (str) |b| { + if (b > 127) break false; + } else true; + const Vec = @Vector(vec_len, u8); var i: usize = 0; @@ -25,7 +29,7 @@ fn isAsciiOnly(str: []const u8) bool { if (b > 127) break false; } else true; - const v1 = str[i..].ptr[0..vec_len].*; + const v1 = str[0..vec_len].*; const v2: Vec = @splat(127); if (@reduce(.Or, v1 > v2)) return false; } -- cgit v1.2.3