On Mon, Jul 11, 2022 at 11:07 PM Andres Freund <andres@anarazel.de> wrote:
> I wonder if we can add a somewhat more general function for scanning until > some characters are found using SIMD? There's plenty other places that could > be useful.
In simple cases, we could possibly abstract the entire loop. With this particular case, I imagine the most approachable way to write the loop would be a bit more low-level:
while (p < end - VECTOR_WIDTH && !vector_has_byte(p, '\\') && !vector_has_byte(p, '"') && vector_min_byte(p, 0x20))
p += VECTOR_WIDTH
I wonder if we'd lose a bit of efficiency here by not accumulating set bits from the three conditions, but it's worth trying.