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