Coverage Report

Created: 2025-07-12 06:53

/src/simdutf/src/icelake/icelake_ascii_validation.inl.cpp
Line
Count
Source (jump to first uncovered line)
1
// file included directly
2
3
0
bool validate_ascii(const char *buf, size_t len) {
4
0
  const char *end = buf + len;
5
0
  const __m512i ascii = _mm512_set1_epi8((uint8_t)0x80);
6
0
  __m512i running_or = _mm512_setzero_si512();
7
0
  for (; end - buf >= 64; buf += 64) {
8
0
    const __m512i utf8 = _mm512_loadu_si512((const __m512i *)buf);
9
0
    running_or = _mm512_ternarylogic_epi32(running_or, utf8, ascii,
10
0
                                           0xf8); // running_or | (utf8 & ascii)
11
0
  }
12
0
  if (buf < end) {
13
0
    const __m512i utf8 = _mm512_maskz_loadu_epi8(
14
0
        (uint64_t(1) << (end - buf)) - 1, (const __m512i *)buf);
15
0
    running_or = _mm512_ternarylogic_epi32(running_or, utf8, ascii,
16
0
                                           0xf8); // running_or | (utf8 & ascii)
17
0
  }
18
0
  return (_mm512_test_epi8_mask(running_or, running_or) == 0);
19
0
}