Coverage Report

Created: 2024-09-08 06:18

/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.28k
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
9.28k
  Pump bits(input);
54
452M
  while (true)
55
452M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
9.28k
}
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
213
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
213
  Pump bits(input);
54
18.0M
  while (true)
55
18.0M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
213
}
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
41
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
41
  Pump bits(input);
54
4.28k
  while (true)
55
4.24k
    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::BitStreamerMSB32, true, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeVectorDecoder<rawspeed::BaselineCodeTag> const&)
Line
Count
Source
52
173
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
173
  Pump bits(input);
54
2.70M
  while (true)
55
2.70M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
173
}
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
107
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
107
  Pump bits(input);
54
34.5M
  while (true)
55
34.5M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
107
}
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
317
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
317
  Pump bits(input);
54
4.16M
  while (true)
55
4.16M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
317
}
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
157
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
157
  Pump bits(input);
54
13.3M
  while (true)
55
13.3M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
157
}
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
102
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
102
  Pump bits(input);
54
15.4k
  while (true)
55
15.3k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
102
}
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
152
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
152
  Pump bits(input);
54
9.42M
  while (true)
55
9.42M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
152
}
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
148
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
148
  Pump bits(input);
54
2.21M
  while (true)
55
2.21M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
148
}
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
185
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
185
  Pump bits(input);
54
15.8M
  while (true)
55
15.8M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
185
}
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
88
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
88
  Pump bits(input);
54
9.28M
  while (true)
55
9.28M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
88
}
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
197
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
197
  Pump bits(input);
54
3.85M
  while (true)
55
3.85M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
197
}
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
146
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
146
  Pump bits(input);
54
40.9M
  while (true)
55
40.9M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
146
}
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
312
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
312
  Pump bits(input);
54
9.46M
  while (true)
55
9.46M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
312
}
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
200
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
200
  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
200
}
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
139
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
139
  Pump bits(input);
54
10.3k
  while (true)
55
10.2k
    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::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
194
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
194
  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
194
}
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
235
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
235
  Pump bits(input);
54
8.46k
  while (true)
55
8.22k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
235
}
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
174
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
174
  Pump bits(input);
54
12.8M
  while (true)
55
12.8M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
174
}
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
44
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
44
  Pump bits(input);
54
8.39M
  while (true)
55
8.39M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
44
}
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
189
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
189
  Pump bits(input);
54
3.44M
  while (true)
55
3.44M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
189
}
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
102
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
102
  Pump bits(input);
54
26.3M
  while (true)
55
26.3M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
102
}
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
283
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
283
  Pump bits(input);
54
2.30M
  while (true)
55
2.30M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
283
}
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
191
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
191
  Pump bits(input);
54
2.89M
  while (true)
55
2.89M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
191
}
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
29
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
29
  Pump bits(input);
54
13.7k
  while (true)
55
13.7k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
29
}
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
108
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
108
  Pump bits(input);
54
14.5M
  while (true)
55
14.5M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
108
}
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
115
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
115
  Pump bits(input);
54
4.50k
  while (true)
55
4.38k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
115
}
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
196
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
196
  Pump bits(input);
54
8.27M
  while (true)
55
8.27M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
196
}
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
171
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
171
  Pump bits(input);
54
12.1M
  while (true)
55
12.1M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
171
}
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
228
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
228
  Pump bits(input);
54
8.91M
  while (true)
55
8.91M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
228
}
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
130
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
130
  Pump bits(input);
54
8.48M
  while (true)
55
8.48M
    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::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLUTDecoder<rawspeed::BaselineCodeTag, rawspeed::PrefixCodeLookupDecoder<rawspeed::BaselineCodeTag> > const&)
Line
Count
Source
52
368
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
368
  Pump bits(input);
54
5.98M
  while (true)
55
5.98M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
368
}
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
187
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
187
  Pump bits(input);
54
5.48M
  while (true)
55
5.48M
    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::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
211
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
211
  Pump bits(input);
54
9.51M
  while (true)
55
9.51M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
211
}
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
240
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
240
  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
240
}
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
231
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
231
  Pump bits(input);
54
9.02k
  while (true)
55
8.79k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
231
}
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
187
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
187
  Pump bits(input);
54
6.94M
  while (true)
55
6.94M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
187
}
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
116
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
116
  Pump bits(input);
54
66.5k
  while (true)
55
66.4k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
116
}
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
169
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
169
  Pump bits(input);
54
2.26M
  while (true)
55
2.26M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
169
}
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
120
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
120
  Pump bits(input);
54
12.7M
  while (true)
55
12.7M
    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::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
319
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
319
  Pump bits(input);
54
7.96M
  while (true)
55
7.96M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
319
}
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
138
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
138
  Pump bits(input);
54
742k
  while (true)
55
742k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
138
}
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
139
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
139
  Pump bits(input);
54
4.01M
  while (true)
55
4.01M
    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::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
155
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
155
  Pump bits(input);
54
11.2M
  while (true)
55
11.2M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
155
}
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
176
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
176
  Pump bits(input);
54
3.56k
  while (true)
55
3.38k
    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::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
163
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
163
  Pump bits(input);
54
6.07M
  while (true)
55
6.07M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
163
}
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
106
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
106
  Pump bits(input);
54
9.33M
  while (true)
55
9.33M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
106
}
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
208
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
208
  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
208
}
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
95
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
95
  Pump bits(input);
54
19.8M
  while (true)
55
19.8M
    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::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
396
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
396
  Pump bits(input);
54
5.97M
  while (true)
55
5.97M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
396
}
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
149
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
149
  Pump bits(input);
54
4.25M
  while (true)
55
4.25M
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
149
}
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
91
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
91
  Pump bits(input);
54
817k
  while (true)
55
817k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
91
}
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
115
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
115
  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
115
}
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
140
void workloop(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
53
140
  Pump bits(input);
54
2.80k
  while (true)
55
2.66k
    ht.template decode<Pump, IsFullDecode>(bits);
56
  // FIXME: do we need to escape the result to avoid dead code elimination?
57
140
}
58
59
template <typename Pump, typename HT>
60
9.28k
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
9.28k
  if (ht.isFullDecode())
62
4.27k
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
5.00k
  else
64
5.00k
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
9.28k
}
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
254
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
254
  if (ht.isFullDecode())
62
213
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
41
  else
64
41
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
254
}
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
280
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
280
  if (ht.isFullDecode())
62
173
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
107
  else
64
107
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
280
}
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
474
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
474
  if (ht.isFullDecode())
62
317
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
157
  else
64
157
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
474
}
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
102
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
102
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
102
  else
64
102
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
102
}
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
152
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
152
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
152
  else
64
152
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
152
}
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
148
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
148
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
148
  else
64
148
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
148
}
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
273
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
273
  if (ht.isFullDecode())
62
185
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
88
  else
64
88
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
273
}
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
343
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
343
  if (ht.isFullDecode())
62
197
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
146
  else
64
146
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
343
}
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
512
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
512
  if (ht.isFullDecode())
62
312
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
200
  else
64
200
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
512
}
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
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::BitStreamerMSB32, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> >(rawspeed::Array1DRef<unsigned char const>, rawspeed::PrefixCodeLookupDecoder<rawspeed::VC5CodeTag> const&)
Line
Count
Source
60
194
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
194
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
194
  else
64
194
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
194
}
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
235
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
235
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
235
  else
64
235
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
235
}
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
218
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
218
  if (ht.isFullDecode())
62
174
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
44
  else
64
44
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
218
}
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
291
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
291
  if (ht.isFullDecode())
62
189
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
102
  else
64
102
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
291
}
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
474
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
474
  if (ht.isFullDecode())
62
283
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
191
  else
64
191
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
474
}
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
29
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
29
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
29
  else
64
29
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
29
}
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
108
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
108
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
108
  else
64
108
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
108
}
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
115
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
115
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
115
  else
64
115
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
115
}
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
367
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
367
  if (ht.isFullDecode())
62
196
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
171
  else
64
171
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
367
}
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
358
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
358
  if (ht.isFullDecode())
62
228
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
130
  else
64
130
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
358
}
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
555
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
555
  if (ht.isFullDecode())
62
368
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
187
  else
64
187
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
555
}
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
211
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
211
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
211
  else
64
211
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
211
}
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
240
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
240
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
240
  else
64
240
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
240
}
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
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::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
303
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
303
  if (ht.isFullDecode())
62
187
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
116
  else
64
116
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
303
}
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
289
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
289
  if (ht.isFullDecode())
62
169
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
120
  else
64
120
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
289
}
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
457
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
457
  if (ht.isFullDecode())
62
319
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
138
  else
64
138
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
457
}
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
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::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
155
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
155
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
155
  else
64
155
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
155
}
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
176
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
176
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
176
  else
64
176
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
176
}
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
269
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
269
  if (ht.isFullDecode())
62
163
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
106
  else
64
106
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
269
}
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
303
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
303
  if (ht.isFullDecode())
62
208
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
95
  else
64
95
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
303
}
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
545
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
545
  if (ht.isFullDecode())
62
396
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
149
  else
64
149
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
545
}
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
91
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
91
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
91
  else
64
91
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
91
}
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
115
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
115
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
115
  else
64
115
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
115
}
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
140
void checkPump(rawspeed::Array1DRef<const uint8_t> input, const HT& ht) {
61
140
  if (ht.isFullDecode())
62
0
    workloop<Pump, /*IsFullDecode=*/true>(input, ht);
63
140
  else
64
140
    workloop<Pump, /*IsFullDecode=*/false>(input, ht);
65
140
}
66
67
14.1k
template <typename CodeTag> void checkFlavour(rawspeed::ByteStream bs) {
68
14.1k
#ifndef BACKIMPL
69
14.1k
  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
14.1k
  const auto format = bs.getByte();
77
14.1k
  const auto input = bs.peekRemainingBuffer().getAsArray1DRef();
78
14.1k
  switch (format) {
79
2.39k
  case 0:
80
2.39k
    checkPump<rawspeed::BitStreamerMSB>(input, ht);
81
2.39k
    break;
82
2.82k
  case 1:
83
2.82k
    checkPump<rawspeed::BitStreamerMSB32>(input, ht);
84
2.82k
    break;
85
4.06k
  case 2:
86
4.06k
    checkPump<rawspeed::BitStreamerJPEG>(input, ht);
87
4.06k
    break;
88
33
  default:
89
33
    ThrowRSE("Unknown bit pump");
90
14.1k
  }
91
14.1k
}
Solo.cpp:void (anonymous namespace)::checkFlavour<rawspeed::BaselineCodeTag>(rawspeed::ByteStream)
Line
Count
Source
67
9.03k
template <typename CodeTag> void checkFlavour(rawspeed::ByteStream bs) {
68
9.03k
#ifndef BACKIMPL
69
9.03k
  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.03k
  const auto format = bs.getByte();
77
9.03k
  const auto input = bs.peekRemainingBuffer().getAsArray1DRef();
78
9.03k
  switch (format) {
79
1.68k
  case 0:
80
1.68k
    checkPump<rawspeed::BitStreamerMSB>(input, ht);
81
1.68k
    break;
82
1.86k
  case 1:
83
1.86k
    checkPump<rawspeed::BitStreamerMSB32>(input, ht);
84
1.86k
    break;
85
3.01k
  case 2:
86
3.01k
    checkPump<rawspeed::BitStreamerJPEG>(input, ht);
87
3.01k
    break;
88
15
  default:
89
15
    ThrowRSE("Unknown bit pump");
90
9.03k
  }
91
9.03k
}
Solo.cpp:void (anonymous namespace)::checkFlavour<rawspeed::VC5CodeTag>(rawspeed::ByteStream)
Line
Count
Source
67
5.11k
template <typename CodeTag> void checkFlavour(rawspeed::ByteStream bs) {
68
5.11k
#ifndef BACKIMPL
69
5.11k
  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.11k
  const auto format = bs.getByte();
77
5.11k
  const auto input = bs.peekRemainingBuffer().getAsArray1DRef();
78
5.11k
  switch (format) {
79
711
  case 0:
80
711
    checkPump<rawspeed::BitStreamerMSB>(input, ht);
81
711
    break;
82
964
  case 1:
83
964
    checkPump<rawspeed::BitStreamerMSB32>(input, ht);
84
964
    break;
85
1.04k
  case 2:
86
1.04k
    checkPump<rawspeed::BitStreamerJPEG>(input, ht);
87
1.04k
    break;
88
18
  default:
89
18
    ThrowRSE("Unknown bit pump");
90
5.11k
  }
91
5.11k
}
92
93
} // namespace
94
95
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size);
96
97
56.2k
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size) {
98
56.2k
  assert(Data);
99
100
56.2k
  try {
101
56.2k
    const rawspeed::Buffer b(
102
56.2k
        Data, rawspeed::implicit_cast<rawspeed::Buffer::size_type>(Size));
103
56.2k
    const rawspeed::DataBuffer db(b, rawspeed::Endianness::little);
104
56.2k
    rawspeed::ByteStream bs(db);
105
106
    // Which flavor?
107
56.2k
    switch (bs.getByte()) {
108
37.0k
    case 0:
109
37.0k
      checkFlavour<rawspeed::BaselineCodeTag>(bs);
110
37.0k
      break;
111
19.0k
    case 1:
112
19.0k
      checkFlavour<rawspeed::VC5CodeTag>(bs);
113
19.0k
      break;
114
39
    default:
115
39
      ThrowRSE("Unknown flavor");
116
56.2k
    }
117
56.2k
  } catch (const rawspeed::RawspeedException&) {
118
56.2k
    return 0;
119
56.2k
  }
120
121
0
  __builtin_unreachable();
122
56.2k
}