/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 | } |