Coverage Report

Created: 2025-08-28 06:28

/src/librawspeed/fuzz/librawspeed/codes/PrefixCodeDecoder/Solo.cpp
Line
Count
Source (jump to first uncovered line)
1
/*
2
    RawSpeed - RAW file decoder.
3
4
    Copyright (C) 2017-2023 Roman Lebedev
5
6
    This library is free software; you can redistribute it and/or
7
    modify it under the terms of the GNU Lesser General Public
8
    License as published by the Free Software Foundation; either
9
    version 2 of the License, or (at your option) any later version.
10
11
    This library is distributed in the hope that it will be useful,
12
    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
    Lesser General Public License for more details.
15
16
    You should have received a copy of the GNU Lesser General Public
17
    License along with this library; if not, write to the Free Software
18
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#include "adt/Array1DRef.h"
22
#include "adt/Casts.h"
23
#ifndef IMPL
24
#error IMPL must be defined to one of rawspeeds huffman table implementations
25
#endif
26
27
#include "bitstreams/BitStreamerJPEG.h"
28
#include "bitstreams/BitStreamerMSB.h"
29
#include "bitstreams/BitStreamerMSB32.h"
30
#include "codes/PrefixCodeDecoder.h" // IWYU pragma: keep
31
#include "codes/PrefixCodeDecoder/Common.h"
32
#include "codes/PrefixCodeLUTDecoder.h"    // IWYU pragma: keep
33
#include "codes/PrefixCodeLookupDecoder.h" // IWYU pragma: keep
34
#include "codes/PrefixCodeTreeDecoder.h"   // IWYU pragma: keep
35
#include "codes/PrefixCodeVectorDecoder.h" // IWYU pragma: keep
36
#include "common/RawspeedException.h"
37
#include "io/Buffer.h"
38
#include "io/ByteStream.h"
39
#include "io/Endianness.h"
40
#include <cassert>
41
#include <cstdint>
42
#include <cstdio>
43
44
namespace rawspeed {
45
struct BaselineCodeTag;
46
struct VC5CodeTag;
47
} // namespace rawspeed
48
49
namespace {
50
51
template <typename Pump, bool IsFullDecode, typename HT>
52
9.96k
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
9.96k
  Pump bits(input);
54
623M
  while (true)
55
623M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
9.96k
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
162
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
162
  Pump bits(input);
54
13.5M
  while (true)
55
13.5M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
162
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
104
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
104
  Pump bits(input);
54
25.2M
  while (true)
55
25.2M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
104
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
137
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
137
  Pump bits(input);
54
3.78M
  while (true)
55
3.78M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
137
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
95
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
95
  Pump bits(input);
54
10.2M
  while (true)
55
10.2M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
95
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
301
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
301
  Pump bits(input);
54
1.53M
  while (true)
55
1.53M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
301
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
170
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
170
  Pump bits(input);
54
21.6k
  while (true)
55
21.4k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
170
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
52
120
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
120
  Pump bits(input);
54
25.1M
  while (true)
55
25.1M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
120
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
52
92
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
92
  Pump bits(input);
54
16.7M
  while (true)
55
16.7M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
92
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
52
83
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
83
  Pump bits(input);
54
2.51k
  while (true)
55
2.43k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
83
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
227
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
227
  Pump bits(input);
54
7.81M
  while (true)
55
7.81M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
227
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
135
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
135
  Pump bits(input);
54
21.3M
  while (true)
55
21.3M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
135
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
240
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
240
  Pump bits(input);
54
4.24M
  while (true)
55
4.24M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
240
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
120
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
120
  Pump bits(input);
54
41.4M
  while (true)
55
41.4M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
120
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
303
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
303
  Pump bits(input);
54
6.45M
  while (true)
55
6.45M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
303
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
187
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
187
  Pump bits(input);
54
9.53M
  while (true)
55
9.53M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
187
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
52
225
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
225
  Pump bits(input);
54
20.4M
  while (true)
55
20.4M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
225
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
52
230
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
230
  Pump bits(input);
54
27.1M
  while (true)
55
27.1M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
230
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
52
244
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
244
  Pump bits(input);
54
6.33k
  while (true)
55
6.08k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
244
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
186
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
186
  Pump bits(input);
54
6.99M
  while (true)
55
6.99M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
186
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
144
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
144
  Pump bits(input);
54
25.1M
  while (true)
55
25.1M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
144
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
216
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
216
  Pump bits(input);
54
2.80M
  while (true)
55
2.80M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
216
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
130
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
130
  Pump bits(input);
54
17.7M
  while (true)
55
17.7M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
130
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
337
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
337
  Pump bits(input);
54
4.99M
  while (true)
55
4.99M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
337
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
177
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
177
  Pump bits(input);
54
16.5k
  while (true)
55
16.3k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
177
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
52
167
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
167
  Pump bits(input);
54
15.3M
  while (true)
55
15.3M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
167
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
52
165
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
165
  Pump bits(input);
54
20.4M
  while (true)
55
20.4M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
165
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
52
177
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
177
  Pump bits(input);
54
2.95k
  while (true)
55
2.78k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
177
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
206
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
206
  Pump bits(input);
54
11.4M
  while (true)
55
11.4M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
206
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
176
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
176
  Pump bits(input);
54
26.2M
  while (true)
55
26.2M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
176
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
254
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
254
  Pump bits(input);
54
3.36M
  while (true)
55
3.36M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
254
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
141
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
141
  Pump bits(input);
54
19.3M
  while (true)
55
19.3M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
141
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
378
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
378
  Pump bits(input);
54
5.41M
  while (true)
55
5.41M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
378
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
184
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
184
  Pump bits(input);
54
8.95M
  while (true)
55
8.95M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
184
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
52
234
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
234
  Pump bits(input);
54
32.5M
  while (true)
55
32.5M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
234
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
52
231
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
231
  Pump bits(input);
54
16.6M
  while (true)
55
16.6M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
231
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
52
251
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
251
  Pump bits(input);
54
5.80k
  while (true)
55
5.55k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
251
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
211
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
211
  Pump bits(input);
54
11.0M
  while (true)
55
11.0M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
211
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
113
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
113
  Pump bits(input);
54
24.9M
  while (true)
55
24.9M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
113
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
220
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
220
  Pump bits(input);
54
3.02M
  while (true)
55
3.02M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
220
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
108
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
108
  Pump bits(input);
54
24.9M
  while (true)
55
24.9M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
108
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
381
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
381
  Pump bits(input);
54
1.22M
  while (true)
55
1.22M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
381
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
180
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
180
  Pump bits(input);
54
12.2k
  while (true)
55
12.0k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
180
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
52
130
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
130
  Pump bits(input);
54
10.4M
  while (true)
55
10.4M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
130
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
52
110
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
110
  Pump bits(input);
54
9.65M
  while (true)
55
9.65M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
110
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
52
41
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
41
  Pump bits(input);
54
5.65k
  while (true)
55
5.61k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
41
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
186
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
186
  Pump bits(input);
54
11.3M
  while (true)
55
11.3M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
186
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
126
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
126
  Pump bits(input);
54
25.1M
  while (true)
55
25.1M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
126
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
223
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
223
  Pump bits(input);
54
3.28M
  while (true)
55
3.28M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
223
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
96
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
96
  Pump bits(input);
54
16.4M
  while (true)
55
16.4M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
96
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
332
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
332
  Pump bits(input);
54
831k
  while (true)
55
830k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
332
}
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
147
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
147
  Pump bits(input);
54
6.27M
  while (true)
55
6.27M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
147
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, true, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB, false, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
52
113
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
113
  Pump bits(input);
54
213k
  while (true)
55
213k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
113
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, true, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerMSB32, false, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
52
139
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
139
  Pump bits(input);
54
13.8M
  while (true)
55
13.8M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
139
}
Unexecuted instantiation: Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, true, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> const&)
Solo.cpp:void (anonymous namespace)::workloop<rawspeed::BitStreamerJPEG, false, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
52
183
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
183
  Pump bits(input);
54
8.38M
  while (true)
55
8.38M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
183
}
58
59
template <typename Pump, typename HT>
60
9.96k
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
9.96k
  if (ht.isFullDecode())
62
4.50k
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
5.46k
  else
64
5.46k
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
9.96k
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
60
266
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
266
  if (ht.isFullDecode())
62
162
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
104
  else
64
104
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
266
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
60
232
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
232
  if (ht.isFullDecode())
62
137
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
95
  else
64
95
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
232
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
60
471
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
471
  if (ht.isFullDecode())
62
301
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
170
  else
64
170
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
471
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
60
120
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
120
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
120
  else
64
120
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
120
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
60
92
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
92
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
92
  else
64
92
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
92
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
60
83
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
83
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
83
  else
64
83
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
83
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
60
362
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
362
  if (ht.isFullDecode())
62
227
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
135
  else
64
135
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
362
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
60
360
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
360
  if (ht.isFullDecode())
62
240
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
120
  else
64
120
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
360
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
60
490
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
490
  if (ht.isFullDecode())
62
303
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
187
  else
64
187
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
490
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
60
225
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
225
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
225
  else
64
225
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
225
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
60
230
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
230
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
230
  else
64
230
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
230
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
60
244
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
244
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
244
  else
64
244
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
244
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
60
330
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
330
  if (ht.isFullDecode())
62
186
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
144
  else
64
144
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
330
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
60
346
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
346
  if (ht.isFullDecode())
62
216
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
130
  else
64
130
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
346
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
60
514
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
514
  if (ht.isFullDecode())
62
337
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
177
  else
64
177
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
514
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
60
167
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
167
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
167
  else
64
167
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
167
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
60
165
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
165
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
165
  else
64
165
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
165
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
60
177
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
177
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
177
  else
64
177
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
177
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
60
382
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
382
  if (ht.isFullDecode())
62
206
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
176
  else
64
176
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
382
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
60
395
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
395
  if (ht.isFullDecode())
62
254
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
141
  else
64
141
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
395
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
60
562
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
562
  if (ht.isFullDecode())
62
378
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
184
  else
64
184
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
562
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
60
234
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
234
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
234
  else
64
234
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
234
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
60
231
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
231
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
231
  else
64
231
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
231
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
60
251
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
251
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
251
  else
64
251
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
251
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
60
324
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
324
  if (ht.isFullDecode())
62
211
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
113
  else
64
113
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
324
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
60
328
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
328
  if (ht.isFullDecode())
62
220
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
108
  else
64
108
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
328
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
60
561
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
561
  if (ht.isFullDecode())
62
381
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
180
  else
64
180
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
561
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
60
130
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
130
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
130
  else
64
130
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
130
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
60
110
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
110
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
110
  else
64
110
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
110
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::VC5CodeTag, rawspeed::PrefixCodeTreeDecoder<rawspeed::VC5CodeTag> > const&)
Line
Count
Source
60
41
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
41
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
41
  else
64
41
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
41
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
60
312
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
312
  if (ht.isFullDecode())
62
186
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
126
  else
64
126
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
312
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
60
319
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
319
  if (ht.isFullDecode())
62
223
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
96
  else
64
96
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
319
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
60
479
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
479
  if (ht.isFullDecode())
62
332
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
147
  else
64
147
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
479
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
60
113
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
113
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
113
  else
64
113
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
113
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerMSB32, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
60
139
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
139
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
139
  else
64
139
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
139
}
Solo.cpp:void (anonymous namespace)::checkPump<rawspeed::BitStreamerJPEG, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
60
183
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
183
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
183
  else
64
183
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
183
}
66
67
15.0k
template <typename CodeTag> void checkFlavour(rawspeed::ByteStream bs) {
68
15.0k
#ifndef BACKIMPL
69
15.0k
  const auto ht = createPrefixCodeDecoder<rawspeed::IMPL<CodeTag>>(bs);
70
#else
71
  const auto ht = createPrefixCodeDecoder<
72
      rawspeed::IMPL<CodeTag, rawspeed::BACKIMPL<CodeTag>>>(bs);
73
#endif
74
75
  // Which bit pump should we use?
76
15.0k
  const auto format = bs.getByte();
77
15.0k
  const auto input = bs.peekRemainingBuffer().getAsArray1DRef();
78
15.0k
  switch (format) {
79
2.96k
  case 0:
80
2.96k
    checkPump<rawspeed::BitStreamerMSB>(input, ht);
81
2.96k
    break;
82
2.94k
  case 1:
83
2.94k
    checkPump<rawspeed::BitStreamerMSB32>(input, ht);
84
2.94k
    break;
85
4.05k
  case 2:
86
4.05k
    checkPump<rawspeed::BitStreamerJPEG>(input, ht);
87
4.05k
    break;
88
47
  default:
89
47
    ThrowRSE("Unknown bit pump");
90
15.0k
  }
91
15.0k
}
Solo.cpp:void (anonymous namespace)::checkFlavour<rawspeed::BaselineCodeTag>(rawspeed::ByteStream)
Line
Count
Source
67
9.62k
template <typename CodeTag> void checkFlavour(rawspeed::ByteStream bs) {
68
9.62k
#ifndef BACKIMPL
69
9.62k
  const auto ht = createPrefixCodeDecoder<rawspeed::IMPL<CodeTag>>(bs);
70
#else
71
  const auto ht = createPrefixCodeDecoder<
72
      rawspeed::IMPL<CodeTag, rawspeed::BACKIMPL<CodeTag>>>(bs);
73
#endif
74
75
  // Which bit pump should we use?
76
9.62k
  const auto format = bs.getByte();
77
9.62k
  const auto input = bs.peekRemainingBuffer().getAsArray1DRef();
78
9.62k
  switch (format) {
79
1.97k
  case 0:
80
1.97k
    checkPump<rawspeed::BitStreamerMSB>(input, ht);
81
1.97k
    break;
82
1.98k
  case 1:
83
1.98k
    checkPump<rawspeed::BitStreamerMSB32>(input, ht);
84
1.98k
    break;
85
3.07k
  case 2:
86
3.07k
    checkPump<rawspeed::BitStreamerJPEG>(input, ht);
87
3.07k
    break;
88
29
  default:
89
29
    ThrowRSE("Unknown bit pump");
90
9.62k
  }
91
9.62k
}
Solo.cpp:void (anonymous namespace)::checkFlavour<rawspeed::VC5CodeTag>(rawspeed::ByteStream)
Line
Count
Source
67
5.42k
template <typename CodeTag> void checkFlavour(rawspeed::ByteStream bs) {
68
5.42k
#ifndef BACKIMPL
69
5.42k
  const auto ht = createPrefixCodeDecoder<rawspeed::IMPL<CodeTag>>(bs);
70
#else
71
  const auto ht = createPrefixCodeDecoder<
72
      rawspeed::IMPL<CodeTag, rawspeed::BACKIMPL<CodeTag>>>(bs);
73
#endif
74
75
  // Which bit pump should we use?
76
5.42k
  const auto format = bs.getByte();
77
5.42k
  const auto input = bs.peekRemainingBuffer().getAsArray1DRef();
78
5.42k
  switch (format) {
79
989
  case 0:
80
989
    checkPump<rawspeed::BitStreamerMSB>(input, ht);
81
989
    break;
82
967
  case 1:
83
967
    checkPump<rawspeed::BitStreamerMSB32>(input, ht);
84
967
    break;
85
979
  case 2:
86
979
    checkPump<rawspeed::BitStreamerJPEG>(input, ht);
87
979
    break;
88
18
  default:
89
18
    ThrowRSE("Unknown bit pump");
90
5.42k
  }
91
5.42k
}
92
93
} // namespace
94
95
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size);
96
97
59.5k
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size) {
98
59.5k
  assert(Data);
99
100
59.5k
  try {
101
59.5k
    const rawspeed::Buffer b(
102
59.5k
        Data, rawspeed::implicit_cast<rawspeed::Buffer::size_type>(Size));
103
59.5k
    const rawspeed::DataBuffer db(b, rawspeed::Endianness::little);
104
59.5k
    rawspeed::ByteStream bs(db);
105
106
    // Which flavor?
107
59.5k
    switch (bs.getByte()) {
108
39.0k
    case 0:
109
39.0k
      checkFlavour<rawspeed::BaselineCodeTag>(bs);
110
39.0k
      break;
111
20.4k
    case 1:
112
20.4k
      checkFlavour<rawspeed::VC5CodeTag>(bs);
113
20.4k
      break;
114
109
    default:
115
109
      ThrowRSE("Unknown flavor");
116
59.5k
    }
117
59.5k
  } catch (const rawspeed::RawspeedException&) {
118
59.5k
    return 0;
119
59.5k
  }
120
121
0
  __builtin_unreachable();
122
59.5k
}