Coverage Report

Created: 2026-10-17 07:16

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/simdutf/src/generic/ascii_validation.h
Line
Count
Source
1
namespace simdutf {
2
namespace SIMDUTF_IMPLEMENTATION {
3
namespace {
4
namespace ascii_validation {
5
6
506
result generic_validate_ascii_with_errors(const char *input, size_t length) {
7
506
  buf_block_reader<64> reader(reinterpret_cast<const uint8_t *>(input), length);
8
506
  size_t count{0};
9
108k
  while (reader.has_full_block()) {
10
108k
    simd::simd8x64<uint8_t> in(reader.full_block());
11
108k
    if (!in.is_ascii()) {
12
214
      SIMDUTF_VZEROUPPER();
13
214
      result res = scalar::ascii::validate_with_errors(
14
214
          reinterpret_cast<const char *>(input + count), length - count);
15
214
      return result(res.error, count + res.count);
16
214
    }
17
108k
    reader.advance();
18
19
108k
    count += 64;
20
108k
  }
21
292
  uint8_t block[64]{};
22
292
  reader.get_remainder(block);
23
292
  simd::simd8x64<uint8_t> in(block);
24
292
  if (!in.is_ascii()) {
25
224
    SIMDUTF_VZEROUPPER();
26
224
    result res = scalar::ascii::validate_with_errors(
27
224
        reinterpret_cast<const char *>(input + count), length - count);
28
224
    return result(res.error, count + res.count);
29
224
  } else {
30
68
    return result(error_code::SUCCESS, length);
31
68
  }
32
292
}
simdutf.cpp:simdutf::haswell::(anonymous namespace)::ascii_validation::generic_validate_ascii_with_errors(char const*, unsigned long)
Line
Count
Source
6
253
result generic_validate_ascii_with_errors(const char *input, size_t length) {
7
253
  buf_block_reader<64> reader(reinterpret_cast<const uint8_t *>(input), length);
8
253
  size_t count{0};
9
54.3k
  while (reader.has_full_block()) {
10
54.2k
    simd::simd8x64<uint8_t> in(reader.full_block());
11
54.2k
    if (!in.is_ascii()) {
12
107
      SIMDUTF_VZEROUPPER();
13
107
      result res = scalar::ascii::validate_with_errors(
14
107
          reinterpret_cast<const char *>(input + count), length - count);
15
107
      return result(res.error, count + res.count);
16
107
    }
17
54.1k
    reader.advance();
18
19
54.1k
    count += 64;
20
54.1k
  }
21
146
  uint8_t block[64]{};
22
146
  reader.get_remainder(block);
23
146
  simd::simd8x64<uint8_t> in(block);
24
146
  if (!in.is_ascii()) {
25
112
    SIMDUTF_VZEROUPPER();
26
112
    result res = scalar::ascii::validate_with_errors(
27
112
        reinterpret_cast<const char *>(input + count), length - count);
28
112
    return result(res.error, count + res.count);
29
112
  } else {
30
34
    return result(error_code::SUCCESS, length);
31
34
  }
32
146
}
simdutf.cpp:simdutf::westmere::(anonymous namespace)::ascii_validation::generic_validate_ascii_with_errors(char const*, unsigned long)
Line
Count
Source
6
253
result generic_validate_ascii_with_errors(const char *input, size_t length) {
7
253
  buf_block_reader<64> reader(reinterpret_cast<const uint8_t *>(input), length);
8
253
  size_t count{0};
9
54.3k
  while (reader.has_full_block()) {
10
54.2k
    simd::simd8x64<uint8_t> in(reader.full_block());
11
54.2k
    if (!in.is_ascii()) {
12
107
      SIMDUTF_VZEROUPPER();
13
107
      result res = scalar::ascii::validate_with_errors(
14
107
          reinterpret_cast<const char *>(input + count), length - count);
15
107
      return result(res.error, count + res.count);
16
107
    }
17
54.1k
    reader.advance();
18
19
54.1k
    count += 64;
20
54.1k
  }
21
146
  uint8_t block[64]{};
22
146
  reader.get_remainder(block);
23
146
  simd::simd8x64<uint8_t> in(block);
24
146
  if (!in.is_ascii()) {
25
112
    SIMDUTF_VZEROUPPER();
26
112
    result res = scalar::ascii::validate_with_errors(
27
112
        reinterpret_cast<const char *>(input + count), length - count);
28
112
    return result(res.error, count + res.count);
29
112
  } else {
30
34
    return result(error_code::SUCCESS, length);
31
34
  }
32
146
}
33
34
402
bool generic_validate_ascii(const char *input, size_t length) {
35
402
  buf_block_reader<64> reader(reinterpret_cast<const uint8_t *>(input), length);
36
52.9k
  while (reader.has_full_block()) {
37
52.7k
    simd::simd8x64<uint8_t> in(reader.full_block());
38
52.7k
    if (!in.is_ascii()) {
39
124
      return false;
40
124
    }
41
52.5k
    reader.advance();
42
52.5k
  }
43
278
  uint8_t block[64]{};
44
278
  reader.get_remainder(block);
45
278
  simd::simd8x64<uint8_t> in(block);
46
278
  return in.is_ascii();
47
402
}
simdutf.cpp:simdutf::haswell::(anonymous namespace)::ascii_validation::generic_validate_ascii(char const*, unsigned long)
Line
Count
Source
34
201
bool generic_validate_ascii(const char *input, size_t length) {
35
201
  buf_block_reader<64> reader(reinterpret_cast<const uint8_t *>(input), length);
36
26.4k
  while (reader.has_full_block()) {
37
26.3k
    simd::simd8x64<uint8_t> in(reader.full_block());
38
26.3k
    if (!in.is_ascii()) {
39
62
      return false;
40
62
    }
41
26.2k
    reader.advance();
42
26.2k
  }
43
139
  uint8_t block[64]{};
44
139
  reader.get_remainder(block);
45
139
  simd::simd8x64<uint8_t> in(block);
46
139
  return in.is_ascii();
47
201
}
simdutf.cpp:simdutf::westmere::(anonymous namespace)::ascii_validation::generic_validate_ascii(char const*, unsigned long)
Line
Count
Source
34
201
bool generic_validate_ascii(const char *input, size_t length) {
35
201
  buf_block_reader<64> reader(reinterpret_cast<const uint8_t *>(input), length);
36
26.4k
  while (reader.has_full_block()) {
37
26.3k
    simd::simd8x64<uint8_t> in(reader.full_block());
38
26.3k
    if (!in.is_ascii()) {
39
62
      return false;
40
62
    }
41
26.2k
    reader.advance();
42
26.2k
  }
43
139
  uint8_t block[64]{};
44
139
  reader.get_remainder(block);
45
139
  simd::simd8x64<uint8_t> in(block);
46
139
  return in.is_ascii();
47
201
}
48
49
} // namespace ascii_validation
50
} // unnamed namespace
51
} // namespace SIMDUTF_IMPLEMENTATION
52
} // namespace simdutf