Switch to same algorithm for 128bit SIMD as used for 256 bit SIMD

Avoids needing to write to the haystack and also less chance of a bug in
the never tested simd since all CPUs I have access to have AVX2
This commit is contained in:
Kovid Goyal
2023-11-10 21:16:55 +05:30
parent 1925d5ea65
commit fe2cd543ba
3 changed files with 52 additions and 98 deletions

View File

@@ -284,7 +284,7 @@ consume_normal(PS *self) {
do {
if (self->utf8.state == UTF8_ACCEPT) {
size_t sz = self->read.sz - self->read.pos;
uint8_t *p = find_byte_not_in_range(self->buf + self->read.pos, sz, 32, 126);
const uint8_t *p = find_byte_not_in_range(self->buf + self->read.pos, sz, 32, 126);
if (p != NULL) sz = p - (self->buf + self->read.pos);
if (sz) dispatch_printable_ascii(self, sz);
else dispatch_normal_mode_byte(self, self->buf[self->read.pos++]);
@@ -408,7 +408,7 @@ consume_esc(PS *self) {
static bool
find_st_terminator(PS *self, size_t *end_pos) {
const size_t sz = self->read.sz - self->read.pos;
uint8_t *q = find_either_of_two_bytes(self->buf + self->read.pos, sz, BEL, ESC_ST);
const uint8_t *q = find_either_of_two_bytes(self->buf + self->read.pos, sz, BEL, ESC_ST);
if (q == NULL) {
self->read.pos += sz;
return false;
@@ -1459,7 +1459,7 @@ consume_input(PS *self) {
static bool
find_pending_stop_csi(PS *self) {
const size_t sz = self->read.sz - self->read.pos;
uint8_t *q = find_either_of_two_bytes(self->buf + self->read.pos, sz, ESC, 'l');
const uint8_t *q = find_either_of_two_bytes(self->buf + self->read.pos, sz, ESC, 'l');
if (q == NULL) {
self->read.pos += sz;
return false;