Coverage Report

Created: 2026-06-30 07:53

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libjxl/lib/jxl/base/common.h
Line
Count
Source
1
// Copyright (c) the JPEG XL Project Authors. All rights reserved.
2
//
3
// Use of this source code is governed by a BSD-style
4
// license that can be found in the LICENSE file.
5
6
#ifndef LIB_JXL_BASE_COMMON_H_
7
#define LIB_JXL_BASE_COMMON_H_
8
9
// Shared constants and helper functions.
10
11
#include <array>
12
#include <cstddef>
13
#include <cstdint>
14
#include <cstdio>
15
#include <limits>
16
#include <memory>
17
#include <string>
18
#include <type_traits>
19
#include <vector>
20
21
#if JXL_COMPILER_MSVC
22
#include <intrin.h>
23
#endif
24
25
#include "lib/jxl/base/compiler_specific.h"
26
27
namespace jxl {
28
// Some enums and typedefs used by more than one header file.
29
30
constexpr size_t kBitsPerByte = 8;  // more clear than CHAR_BIT
31
32
1.75k
constexpr inline size_t RoundUpBitsToByteMultiple(size_t bits) {
33
1.75k
  return (bits + 7) & ~static_cast<size_t>(7);
34
1.75k
}
35
36
1.40k
constexpr inline size_t RoundUpToBlockDim(size_t dim) {
37
1.40k
  return (dim + 7) & ~static_cast<size_t>(7);
38
1.40k
}
39
40
template <typename U,
41
          class = typename std::enable_if<std::is_unsigned<U>::value>::type>
42
58.4M
static inline bool SafeAdd(const U a, const U b, U& sum) {
43
58.4M
  sum = a + b;
44
58.4M
  return sum >= a;  // no need to check b - either sum >= both or < both.
45
58.4M
}
Unexecuted instantiation: icc_codec_fuzzer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: tracking_memory_manager.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
enc_icc_codec.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
42
28.6M
static inline bool SafeAdd(const U a, const U b, U& sum) {
43
28.6M
  sum = a + b;
44
28.6M
  return sum >= a;  // no need to check b - either sum >= both or < both.
45
28.6M
}
Unexecuted instantiation: dec_ans.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_bit_reader.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_context_map.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_huffman.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
fields.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
42
281k
static inline bool SafeAdd(const U a, const U b, U& sum) {
43
281k
  sum = a + b;
44
281k
  return sum >= a;  // no need to check b - either sum >= both or < both.
45
281k
}
icc_codec.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
42
6.10k
static inline bool SafeAdd(const U a, const U b, U& sum) {
43
6.10k
  sum = a + b;
44
6.10k
  return sum >= a;  // no need to check b - either sum >= both or < both.
45
6.10k
}
Unexecuted instantiation: icc_codec_common.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
memory_manager_internal.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
42
28.9M
static inline bool SafeAdd(const U a, const U b, U& sum) {
43
28.9M
  sum = a + b;
44
28.9M
  return sum >= a;  // no need to check b - either sum >= both or < both.
45
28.9M
}
Unexecuted instantiation: enc_ans.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_ans_simd.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_bit_writer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_cluster.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_context_map.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_fields.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_huffman.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_huffman_tree.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_lz77.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: ans_common.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: djxl_fuzzer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
decode.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
42
581k
static inline bool SafeAdd(const U a, const U b, U& sum) {
43
581k
  sum = a + b;
44
581k
  return sum >= a;  // no need to check b - either sum >= both or < both.
45
581k
}
Unexecuted instantiation: frame_header.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: headers.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image_metadata.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: loop_filter.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: encoding.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: modular_image.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: squeeze_params.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: transform.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: quant_weights.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: quantizer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: splines.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: decode_to_jpeg.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_jpeg_data.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_jpeg_data_writer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jpeg_data.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_encoding_internal.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_frame.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_group.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_modular.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_noise.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_patch_dictionary.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_xyb.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: entropy_coder.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: epf.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_ma.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: palette.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: rct.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: squeeze.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: opsin_params.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: passes_state.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: render_pipeline.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: simple_render_pipeline.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_upsampling.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: toc.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: ac_strategy.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: blending.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: chroma_from_luma.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: coeff_order.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: compressed_dc.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_cache.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: low_memory_render_pipeline.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: render_pipeline_stage.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_blending.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_chroma_upsampling.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_cms.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_epf.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_from_linear.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_gaborish.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_noise.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_patches.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_splines.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_spot.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_to_linear.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_tone_mapping.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_write.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_xyb.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_ycbcr.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: alpha.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_group_border.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image_bundle.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: cjxl_fuzzer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: test_image.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
test_utils.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
42
8.40k
static inline bool SafeAdd(const U a, const U b, U& sum) {
43
8.40k
  sum = a + b;
44
8.40k
  return sum >= a;  // no need to check b - either sum >= both or < both.
45
8.40k
}
Unexecuted instantiation: color_description.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: packed_image.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: apng.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: exr.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: gif.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jpg.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jxl.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: pgx.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: pnm.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: metrics.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: packed_image_convert.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: common.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_hints.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: mmap.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_comparator.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_external_image.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_frame.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_group.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_heuristics.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_image_bundle.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_modular.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_modular_simd.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_noise.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_patch_dictionary.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_photon_noise.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_progressive_split.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_quant_weights.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_splines.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_toc.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_xyb.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: encode.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_jpeg_data.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_jpeg_data_reader.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_jpeg_huffman_decode.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_encoding.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_ma.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_rct.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_transform.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_external_image.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image_ops.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: luminance.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: butteraugli.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_ac_strategy.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_adaptive_quantization.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_aux_out.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_cache.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_chroma_from_luma.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_coeff_order.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_convolve_separable5.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_debug_image.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_dot_dictionary.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_entropy_coder.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_fast_lossless.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_gaborish.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_palette.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_squeeze.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: convolve_slow.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: convolve_symmetric5.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_detect_dots.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_linalg.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jxl_cms.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: rans_fuzzer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: decode_basic_info_fuzzer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_encoding_fuzzer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: streaming_fuzzer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: transforms_fuzzer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: set_from_bytes_fuzzer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: codec.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: npy.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: fields_fuzzer.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&)
46
47
9.22M
static inline bool SafeMul(size_t a, size_t b, size_t& product) {
48
9.22M
  product = 0;
49
9.22M
  if (a == 0 || b == 0) return true;
50
9.08M
  if (b > (std::numeric_limits<size_t>::max() / a)) return false;
51
9.08M
  product = a * b;
52
9.08M
  return true;
53
9.08M
}
Unexecuted instantiation: icc_codec_fuzzer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: tracking_memory_manager.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_icc_codec.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_ans.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_bit_reader.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_context_map.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_huffman.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: fields.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: icc_codec.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: icc_codec_common.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
memory_manager_internal.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
47
4.46M
static inline bool SafeMul(size_t a, size_t b, size_t& product) {
48
4.46M
  product = 0;
49
4.46M
  if (a == 0 || b == 0) return true;
50
4.46M
  if (b > (std::numeric_limits<size_t>::max() / a)) return false;
51
4.46M
  product = a * b;
52
4.46M
  return true;
53
4.46M
}
Unexecuted instantiation: enc_ans.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_ans_simd.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_bit_writer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_cluster.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_context_map.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_fields.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_huffman.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_huffman_tree.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_lz77.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: ans_common.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: djxl_fuzzer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
decode.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
47
524k
static inline bool SafeMul(size_t a, size_t b, size_t& product) {
48
524k
  product = 0;
49
524k
  if (a == 0 || b == 0) return true;
50
382k
  if (b > (std::numeric_limits<size_t>::max() / a)) return false;
51
382k
  product = a * b;
52
382k
  return true;
53
382k
}
Unexecuted instantiation: frame_header.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: headers.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image_metadata.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: loop_filter.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: encoding.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: modular_image.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: squeeze_params.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: transform.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: quant_weights.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: quantizer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: splines.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_jpeg_data.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_jpeg_data_writer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jpeg_data.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_encoding_internal.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_frame.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_group.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_modular.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_noise.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_xyb.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: entropy_coder.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: epf.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
image.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
47
4.22M
static inline bool SafeMul(size_t a, size_t b, size_t& product) {
48
4.22M
  product = 0;
49
4.22M
  if (a == 0 || b == 0) return true;
50
4.22M
  if (b > (std::numeric_limits<size_t>::max() / a)) return false;
51
4.22M
  product = a * b;
52
4.22M
  return true;
53
4.22M
}
Unexecuted instantiation: dec_ma.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: palette.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: rct.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: squeeze.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: opsin_params.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: passes_state.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: render_pipeline.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_upsampling.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: toc.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: ac_strategy.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: blending.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: chroma_from_luma.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: coeff_order.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: compressed_dc.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_cache.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_blending.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_cms.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_epf.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_from_linear.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_gaborish.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_noise.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_patches.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_splines.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_spot.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_to_linear.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_write.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_xyb.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_ycbcr.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: alpha.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_group_border.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image_bundle.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: cjxl_fuzzer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: test_image.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: test_utils.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_description.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: packed_image.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: apng.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: exr.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: gif.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jpg.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jxl.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: pgx.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: pnm.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: metrics.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: packed_image_convert.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: common.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_hints.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: mmap.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_comparator.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
enc_external_image.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
47
1.05k
static inline bool SafeMul(size_t a, size_t b, size_t& product) {
48
1.05k
  product = 0;
49
1.05k
  if (a == 0 || b == 0) return true;
50
1.05k
  if (b > (std::numeric_limits<size_t>::max() / a)) return false;
51
1.05k
  product = a * b;
52
1.05k
  return true;
53
1.05k
}
enc_frame.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
47
700
static inline bool SafeMul(size_t a, size_t b, size_t& product) {
48
700
  product = 0;
49
700
  if (a == 0 || b == 0) return true;
50
700
  if (b > (std::numeric_limits<size_t>::max() / a)) return false;
51
700
  product = a * b;
52
700
  return true;
53
700
}
Unexecuted instantiation: enc_group.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
enc_heuristics.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
47
1.05k
static inline bool SafeMul(size_t a, size_t b, size_t& product) {
48
1.05k
  product = 0;
49
1.05k
  if (a == 0 || b == 0) return true;
50
1.05k
  if (b > (std::numeric_limits<size_t>::max() / a)) return false;
51
1.05k
  product = a * b;
52
1.05k
  return true;
53
1.05k
}
Unexecuted instantiation: enc_image_bundle.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_modular.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_modular_simd.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_noise.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_photon_noise.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_progressive_split.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_quant_weights.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_splines.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_toc.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_xyb.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: encode.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_jpeg_data.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_jpeg_data_reader.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_jpeg_huffman_decode.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_encoding.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_ma.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_rct.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_transform.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_external_image.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image_ops.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: luminance.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: butteraugli.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_aux_out.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_cache.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_coeff_order.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_convolve_separable5.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_debug_image.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_gaborish.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_palette.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_squeeze.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: convolve_slow.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: convolve_symmetric5.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_detect_dots.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_linalg.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jxl_cms.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: rans_fuzzer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: decode_basic_info_fuzzer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_encoding_fuzzer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: streaming_fuzzer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: transforms_fuzzer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: set_from_bytes_fuzzer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: codec.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: npy.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: fields_fuzzer.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&)
54
55
1.05k
static inline bool SubOverflow(const int32_t a, const int32_t b, int32_t& c) {
56
  // Clang 3.8+ / GCC 5.1+
57
1.05k
#if JXL_COMPILER_GCC || JXL_COMPILER_CLANG
58
1.05k
  return __builtin_sub_overflow(a, b, &c);
59
#elif JXL_COMPILER_MSVC >= 1937
60
  return _sub_overflow_i32(/*carry*/ 0, a, b, &c);
61
#else
62
  uint32_t ua = static_cast<uint32_t>(a);
63
  uint32_t ub = static_cast<uint32_t>(b);
64
  uint32_t uc = ua - ub;
65
  c = static_cast<int32_t>(uc);
66
  return !!(((ua ^ ub) & (ua ^ uc)) >> 31);
67
#endif
68
1.05k
}
Unexecuted instantiation: icc_codec_fuzzer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: tracking_memory_manager.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_icc_codec.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_ans.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_bit_reader.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_context_map.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_huffman.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: fields.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: icc_codec.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: icc_codec_common.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: memory_manager_internal.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_ans.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_ans_simd.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_bit_writer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_cluster.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_context_map.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_fields.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_huffman.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_huffman_tree.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_lz77.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: ans_common.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: djxl_fuzzer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: decode.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: frame_header.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: headers.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: image_metadata.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: loop_filter.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: encoding.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: modular_image.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: squeeze_params.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: transform.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: quant_weights.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: quantizer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: splines.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_jpeg_data.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_jpeg_data_writer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: jpeg_data.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: color_encoding_internal.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_frame.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_group.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_modular.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_noise.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_xyb.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: entropy_coder.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: epf.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: image.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_ma.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: palette.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: rct.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: squeeze.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: opsin_params.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: passes_state.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: render_pipeline.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_upsampling.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: toc.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: ac_strategy.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: blending.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: chroma_from_luma.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: coeff_order.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: compressed_dc.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_cache.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_blending.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_cms.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_epf.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_from_linear.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_gaborish.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_noise.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_patches.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_splines.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_spot.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_to_linear.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_write.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_xyb.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: stage_ycbcr.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: alpha.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_group_border.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: image_bundle.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: cjxl_fuzzer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: test_image.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: test_utils.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: color_description.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: packed_image.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: apng.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: exr.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: gif.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: jpg.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: jxl.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: pgx.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: pnm.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: metrics.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: packed_image_convert.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: common.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: color_hints.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: mmap.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_comparator.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_external_image.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_frame.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_group.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_heuristics.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_image_bundle.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_modular.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_modular_simd.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_noise.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_photon_noise.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_progressive_split.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_quant_weights.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_splines.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_toc.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_xyb.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: encode.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_jpeg_data.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_jpeg_data_reader.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_jpeg_huffman_decode.cc:jxl::SubOverflow(int, int, int&)
enc_encoding.cc:jxl::SubOverflow(int, int, int&)
Line
Count
Source
55
1.05k
static inline bool SubOverflow(const int32_t a, const int32_t b, int32_t& c) {
56
  // Clang 3.8+ / GCC 5.1+
57
1.05k
#if JXL_COMPILER_GCC || JXL_COMPILER_CLANG
58
1.05k
  return __builtin_sub_overflow(a, b, &c);
59
#elif JXL_COMPILER_MSVC >= 1937
60
  return _sub_overflow_i32(/*carry*/ 0, a, b, &c);
61
#else
62
  uint32_t ua = static_cast<uint32_t>(a);
63
  uint32_t ub = static_cast<uint32_t>(b);
64
  uint32_t uc = ua - ub;
65
  c = static_cast<int32_t>(uc);
66
  return !!(((ua ^ ub) & (ua ^ uc)) >> 31);
67
#endif
68
1.05k
}
Unexecuted instantiation: enc_ma.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_rct.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_transform.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: dec_external_image.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: image_ops.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: luminance.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: butteraugli.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_aux_out.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_cache.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_coeff_order.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_convolve_separable5.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_debug_image.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_gaborish.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_palette.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_squeeze.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: convolve_slow.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: convolve_symmetric5.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_detect_dots.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: enc_linalg.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: jxl_cms.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: rans_fuzzer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: decode_basic_info_fuzzer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: color_encoding_fuzzer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: streaming_fuzzer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: transforms_fuzzer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: set_from_bytes_fuzzer.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: codec.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: npy.cc:jxl::SubOverflow(int, int, int&)
Unexecuted instantiation: fields_fuzzer.cc:jxl::SubOverflow(int, int, int&)
69
70
template <typename T1, typename T2>
71
100M
constexpr inline T1 DivCeil(T1 a, T2 b) {
72
100M
  return (a + b - 1) / b;
73
100M
}
unsigned long jxl::DivCeil<unsigned long, unsigned long>(unsigned long, unsigned long)
Line
Count
Source
71
83.9M
constexpr inline T1 DivCeil(T1 a, T2 b) {
72
83.9M
  return (a + b - 1) / b;
73
83.9M
}
unsigned long jxl::DivCeil<unsigned long, int>(unsigned long, int)
Line
Count
Source
71
15.8M
constexpr inline T1 DivCeil(T1 a, T2 b) {
72
15.8M
  return (a + b - 1) / b;
73
15.8M
}
int jxl::DivCeil<int, int>(int, int)
Line
Count
Source
71
297k
constexpr inline T1 DivCeil(T1 a, T2 b) {
72
297k
  return (a + b - 1) / b;
73
297k
}
unsigned long jxl::DivCeil<unsigned long, long>(unsigned long, long)
Line
Count
Source
71
532k
constexpr inline T1 DivCeil(T1 a, T2 b) {
72
532k
  return (a + b - 1) / b;
73
532k
}
74
75
// Works for any `align`; if a power of two, compiler emits ADD+AND.
76
31.4M
constexpr inline size_t RoundUpTo(size_t what, size_t align) {
77
31.4M
  return DivCeil(what, align) * align;
78
31.4M
}
79
80
// `align <= 1` means no rounding.
81
4.70M
static inline bool SafeRoundUpTo(size_t what, size_t align, size_t& result) {
82
4.70M
  if (align < 2) {
83
125k
    result = what;
84
125k
    return true;
85
125k
  }
86
4.58M
  size_t reminder = what % align;
87
4.58M
  if (reminder == 0) {
88
85.9k
    result = what;
89
85.9k
    return true;
90
85.9k
  }
91
4.49M
  return SafeAdd(what, align - reminder, result);
92
4.58M
}
Unexecuted instantiation: icc_codec_fuzzer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: tracking_memory_manager.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_icc_codec.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_ans.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_bit_reader.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_context_map.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_huffman.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: fields.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: icc_codec.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: icc_codec_common.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
memory_manager_internal.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
81
4.46M
static inline bool SafeRoundUpTo(size_t what, size_t align, size_t& result) {
82
4.46M
  if (align < 2) {
83
0
    result = what;
84
0
    return true;
85
0
  }
86
4.46M
  size_t reminder = what % align;
87
4.46M
  if (reminder == 0) {
88
30.4k
    result = what;
89
30.4k
    return true;
90
30.4k
  }
91
4.43M
  return SafeAdd(what, align - reminder, result);
92
4.46M
}
Unexecuted instantiation: enc_ans.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_ans_simd.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_bit_writer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_cluster.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_context_map.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_fields.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_huffman.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_huffman_tree.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_lz77.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: ans_common.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: djxl_fuzzer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
decode.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
81
238k
static inline bool SafeRoundUpTo(size_t what, size_t align, size_t& result) {
82
238k
  if (align < 2) {
83
124k
    result = what;
84
124k
    return true;
85
124k
  }
86
113k
  size_t reminder = what % align;
87
113k
  if (reminder == 0) {
88
55.5k
    result = what;
89
55.5k
    return true;
90
55.5k
  }
91
58.0k
  return SafeAdd(what, align - reminder, result);
92
113k
}
Unexecuted instantiation: frame_header.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: headers.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image_metadata.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: loop_filter.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: encoding.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: modular_image.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: squeeze_params.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: transform.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: quant_weights.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: quantizer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: splines.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: decode_to_jpeg.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_jpeg_data.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_jpeg_data_writer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jpeg_data.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_encoding_internal.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_frame.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_group.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_modular.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_noise.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_patch_dictionary.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_xyb.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: entropy_coder.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: epf.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_ma.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: palette.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: rct.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: squeeze.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: opsin_params.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: passes_state.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: render_pipeline.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: simple_render_pipeline.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_upsampling.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: toc.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: ac_strategy.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: blending.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: chroma_from_luma.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: coeff_order.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: compressed_dc.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_cache.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: render_pipeline_stage.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_blending.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_chroma_upsampling.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_cms.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_epf.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_from_linear.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_gaborish.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_noise.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_patches.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_splines.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_spot.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_to_linear.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_tone_mapping.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_write.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_xyb.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: stage_ycbcr.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: alpha.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_group_border.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image_bundle.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: cjxl_fuzzer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: test_image.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: test_utils.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_description.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: packed_image.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: apng.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: exr.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: gif.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jpg.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jxl.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: pgx.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: pnm.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: metrics.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: packed_image_convert.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: common.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_hints.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: mmap.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_comparator.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_external_image.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
enc_frame.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Line
Count
Source
81
350
static inline bool SafeRoundUpTo(size_t what, size_t align, size_t& result) {
82
350
  if (align < 2) {
83
350
    result = what;
84
350
    return true;
85
350
  }
86
0
  size_t reminder = what % align;
87
0
  if (reminder == 0) {
88
0
    result = what;
89
0
    return true;
90
0
  }
91
0
  return SafeAdd(what, align - reminder, result);
92
0
}
Unexecuted instantiation: enc_group.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_heuristics.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_image_bundle.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_modular.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_modular_simd.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_noise.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_patch_dictionary.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_photon_noise.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_progressive_split.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_quant_weights.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_splines.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_toc.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_xyb.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: encode.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_jpeg_data.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_jpeg_data_reader.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_jpeg_huffman_decode.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_encoding.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_ma.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_rct.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_transform.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: dec_external_image.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: image_ops.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: luminance.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: butteraugli.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_aux_out.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_cache.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_coeff_order.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_convolve_separable5.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_debug_image.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_dot_dictionary.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_entropy_coder.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_fast_lossless.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_gaborish.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_palette.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_squeeze.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: convolve_slow.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: convolve_symmetric5.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_detect_dots.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: enc_linalg.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: jxl_cms.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: rans_fuzzer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: decode_basic_info_fuzzer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: color_encoding_fuzzer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: streaming_fuzzer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: transforms_fuzzer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: set_from_bytes_fuzzer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: codec.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: npy.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
Unexecuted instantiation: fields_fuzzer.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&)
93
94
constexpr double kPi = 3.14159265358979323846264338327950288;
95
96
// Multiplier for conversion of log2(x) result to ln(x).
97
// print(1.0 / math.log2(math.e))
98
constexpr float kInvLog2e = 0.6931471805599453;
99
100
// Reasonable default for sRGB, matches common monitors. We map white to this
101
// many nits (cd/m^2) by default. Butteraugli was tuned for 250 nits, which is
102
// very close.
103
// NB: This constant is not very "base", but it is shared between modules.
104
static constexpr float kDefaultIntensityTarget = 255;
105
106
template <typename T>
107
constexpr T Pi(T multiplier) {
108
  return static_cast<T>(multiplier * kPi);
109
}
110
111
// Prior to C++14 (i.e. C++11): provide our own make_unique
112
#if __cplusplus < 201402L
113
template <typename T, typename... Args>
114
std::unique_ptr<T> make_unique(Args&&... args) {
115
  return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
116
}
117
#else
118
using std::make_unique;
119
#endif
120
121
template <typename T>
122
struct UninitializedAllocator : std::allocator<T> {
123
  static_assert(std::is_trivially_copyable<T>::value,
124
                "Uninitialized values have to be trivially destructible");
125
  using value_type = T;
126
127
1.05k
  UninitializedAllocator() noexcept = default;
128
  UninitializedAllocator(const UninitializedAllocator& other) noexcept =
129
      default;
130
131
  template <typename U>
132
  explicit UninitializedAllocator(
133
      const UninitializedAllocator<U>& other) noexcept {}
134
135
  template <typename U>
136
  struct rebind {
137
    using other = UninitializedAllocator<U>;
138
  };
139
140
  template <typename U, typename... Args>
141
16.8k
  void construct(U* place, Args&&... args) {}
142
143
  template <typename U>
144
16.8k
  void destroy(U* place) {}
145
};
146
147
template <typename T>
148
using uninitialized_vector = std::vector<T, UninitializedAllocator<T>>;
149
150
template <typename T>
151
1.05k
uninitialized_vector<T> make_uninitialized_vector(size_t n) {
152
1.05k
  return uninitialized_vector<T>(n, UninitializedAllocator<T>());
153
1.05k
}
154
155
typedef std::array<float, 3> Color;
156
157
// Backported std::experimental::to_array
158
159
template <typename T>
160
using remove_cv_t = typename std::remove_cv<T>::type;
161
162
template <size_t... I>
163
struct index_sequence {};
164
165
template <size_t N, size_t... I>
166
struct make_index_sequence : make_index_sequence<N - 1, N - 1, I...> {};
167
168
template <size_t... I>
169
struct make_index_sequence<0, I...> : index_sequence<I...> {};
170
171
namespace detail {
172
173
template <typename T, size_t N, size_t... I>
174
constexpr auto to_array(T (&&arr)[N], index_sequence<I...> _)
175
0
    -> std::array<remove_cv_t<T>, N> {
176
0
  return {{std::move(arr[I])...}};
177
0
}
Unexecuted instantiation: std::__1::array<std::__1::remove_cv<int>::type, 17ul> jxl::detail::to_array<int, 17ul, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul, 9ul, 10ul, 11ul, 12ul, 13ul, 14ul, 15ul, 16ul>(int (&&) [17ul], jxl::index_sequence<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul, 9ul, 10ul, 11ul, 12ul, 13ul, 14ul, 15ul, 16ul>)
Unexecuted instantiation: color_description.cc:std::__1::array<std::__1::remove_cv<jxl::(anonymous namespace)::EnumName<JxlColorSpace> >::type, 4ul> jxl::detail::to_array<jxl::(anonymous namespace)::EnumName<JxlColorSpace>, 4ul, 0ul, 1ul, 2ul, 3ul>(jxl::(anonymous namespace)::EnumName<JxlColorSpace> (&&) [4ul], jxl::index_sequence<0ul, 1ul, 2ul, 3ul>)
Unexecuted instantiation: color_description.cc:std::__1::array<std::__1::remove_cv<jxl::(anonymous namespace)::EnumName<JxlWhitePoint> >::type, 4ul> jxl::detail::to_array<jxl::(anonymous namespace)::EnumName<JxlWhitePoint>, 4ul, 0ul, 1ul, 2ul, 3ul>(jxl::(anonymous namespace)::EnumName<JxlWhitePoint> (&&) [4ul], jxl::index_sequence<0ul, 1ul, 2ul, 3ul>)
Unexecuted instantiation: color_description.cc:std::__1::array<std::__1::remove_cv<jxl::(anonymous namespace)::EnumName<JxlPrimaries> >::type, 4ul> jxl::detail::to_array<jxl::(anonymous namespace)::EnumName<JxlPrimaries>, 4ul, 0ul, 1ul, 2ul, 3ul>(jxl::(anonymous namespace)::EnumName<JxlPrimaries> (&&) [4ul], jxl::index_sequence<0ul, 1ul, 2ul, 3ul>)
Unexecuted instantiation: color_description.cc:std::__1::array<std::__1::remove_cv<jxl::(anonymous namespace)::EnumName<JxlRenderingIntent> >::type, 4ul> jxl::detail::to_array<jxl::(anonymous namespace)::EnumName<JxlRenderingIntent>, 4ul, 0ul, 1ul, 2ul, 3ul>(jxl::(anonymous namespace)::EnumName<JxlRenderingIntent> (&&) [4ul], jxl::index_sequence<0ul, 1ul, 2ul, 3ul>)
Unexecuted instantiation: color_description.cc:std::__1::array<std::__1::remove_cv<jxl::(anonymous namespace)::EnumName<JxlTransferFunction> >::type, 8ul> jxl::detail::to_array<jxl::(anonymous namespace)::EnumName<JxlTransferFunction>, 8ul, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul>(jxl::(anonymous namespace)::EnumName<JxlTransferFunction> (&&) [8ul], jxl::index_sequence<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul>)
178
179
}  // namespace detail
180
181
template <typename T, size_t N>
182
0
constexpr auto to_array(T (&&arr)[N]) -> std::array<remove_cv_t<T>, N> {
183
0
  return detail::to_array(std::move(arr), make_index_sequence<N>());
184
0
}
Unexecuted instantiation: std::__1::array<std::__1::remove_cv<int>::type, 17ul> jxl::to_array<int, 17ul>(int (&&) [17ul])
Unexecuted instantiation: color_description.cc:std::__1::array<std::__1::remove_cv<jxl::(anonymous namespace)::EnumName<JxlColorSpace> >::type, 4ul> jxl::to_array<jxl::(anonymous namespace)::EnumName<JxlColorSpace>, 4ul>(jxl::(anonymous namespace)::EnumName<JxlColorSpace> (&&) [4ul])
Unexecuted instantiation: color_description.cc:std::__1::array<std::__1::remove_cv<jxl::(anonymous namespace)::EnumName<JxlWhitePoint> >::type, 4ul> jxl::to_array<jxl::(anonymous namespace)::EnumName<JxlWhitePoint>, 4ul>(jxl::(anonymous namespace)::EnumName<JxlWhitePoint> (&&) [4ul])
Unexecuted instantiation: color_description.cc:std::__1::array<std::__1::remove_cv<jxl::(anonymous namespace)::EnumName<JxlPrimaries> >::type, 4ul> jxl::to_array<jxl::(anonymous namespace)::EnumName<JxlPrimaries>, 4ul>(jxl::(anonymous namespace)::EnumName<JxlPrimaries> (&&) [4ul])
Unexecuted instantiation: color_description.cc:std::__1::array<std::__1::remove_cv<jxl::(anonymous namespace)::EnumName<JxlRenderingIntent> >::type, 4ul> jxl::to_array<jxl::(anonymous namespace)::EnumName<JxlRenderingIntent>, 4ul>(jxl::(anonymous namespace)::EnumName<JxlRenderingIntent> (&&) [4ul])
Unexecuted instantiation: color_description.cc:std::__1::array<std::__1::remove_cv<jxl::(anonymous namespace)::EnumName<JxlTransferFunction> >::type, 8ul> jxl::to_array<jxl::(anonymous namespace)::EnumName<JxlTransferFunction>, 8ul>(jxl::(anonymous namespace)::EnumName<JxlTransferFunction> (&&) [8ul])
185
186
template <typename T>
187
408M
JXL_INLINE T Clamp1(T val, T low, T hi) {
188
408M
  return val < low ? low : val > hi ? hi : val;
189
408M
}
float jxl::Clamp1<float>(float, float, float)
Line
Count
Source
187
65.5M
JXL_INLINE T Clamp1(T val, T low, T hi) {
188
65.5M
  return val < low ? low : val > hi ? hi : val;
189
65.5M
}
double jxl::Clamp1<double>(double, double, double)
Line
Count
Source
187
258k
JXL_INLINE T Clamp1(T val, T low, T hi) {
188
258k
  return val < low ? low : val > hi ? hi : val;
189
258k
}
int jxl::Clamp1<int>(int, int, int)
Line
Count
Source
187
343M
JXL_INLINE T Clamp1(T val, T low, T hi) {
188
343M
  return val < low ? low : val > hi ? hi : val;
189
343M
}
Unexecuted instantiation: unsigned char jxl::Clamp1<unsigned char>(unsigned char, unsigned char, unsigned char)
Unexecuted instantiation: long jxl::Clamp1<long>(long, long, long)
190
191
// conversion from integer to string.
192
template <typename T>
193
13.5k
std::string ToString(T n) {
194
13.5k
  char data[32] = {};
195
13.5k
  if (std::is_floating_point<T>::value) {
196
    // float
197
13.5k
    snprintf(data, sizeof(data), "%g", static_cast<double>(n));
198
13.5k
  } else if (std::is_unsigned<T>::value) {
199
    // unsigned
200
0
    snprintf(data, sizeof(data), "%llu", static_cast<unsigned long long>(n));
201
0
  } else {
202
    // signed
203
0
    snprintf(data, sizeof(data), "%lld", static_cast<long long>(n));
204
0
  }
205
13.5k
  return data;
206
13.5k
}
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > jxl::ToString<double>(double)
Line
Count
Source
193
13.5k
std::string ToString(T n) {
194
13.5k
  char data[32] = {};
195
13.5k
  if (std::is_floating_point<T>::value) {
196
    // float
197
13.5k
    snprintf(data, sizeof(data), "%g", static_cast<double>(n));
198
13.5k
  } else if (std::is_unsigned<T>::value) {
199
    // unsigned
200
0
    snprintf(data, sizeof(data), "%llu", static_cast<unsigned long long>(n));
201
0
  } else {
202
    // signed
203
0
    snprintf(data, sizeof(data), "%lld", static_cast<long long>(n));
204
0
  }
205
13.5k
  return data;
206
13.5k
}
Unexecuted instantiation: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > jxl::ToString<int>(int)
207
208
#define JXL_JOIN(x, y) JXL_DO_JOIN(x, y)
209
#define JXL_DO_JOIN(x, y) x##y
210
211
}  // namespace jxl
212
213
#endif  // LIB_JXL_BASE_COMMON_H_