/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 | 25.7k | constexpr inline size_t RoundUpBitsToByteMultiple(size_t bits) { |
33 | 25.7k | return (bits + 7) & ~static_cast<size_t>(7); |
34 | 25.7k | } |
35 | | |
36 | 14.6k | constexpr inline size_t RoundUpToBlockDim(size_t dim) { |
37 | 14.6k | return (dim + 7) & ~static_cast<size_t>(7); |
38 | 14.6k | } |
39 | | |
40 | | template <typename U, |
41 | | class = typename std::enable_if<std::is_unsigned<U>::value>::type> |
42 | 133M | static inline bool SafeAdd(const U a, const U b, U& sum) { |
43 | 133M | sum = a + b; |
44 | 133M | return sum >= a; // no need to check b - either sum >= both or < both. |
45 | 133M | } encode.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 42 | 254k | static inline bool SafeAdd(const U a, const U b, U& sum) { | 43 | 254k | sum = a + b; | 44 | 254k | return sum >= a; // no need to check b - either sum >= both or < both. | 45 | 254k | } |
Unexecuted instantiation: enc_fields.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&) enc_icc_codec.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 42 | 2.47k | static inline bool SafeAdd(const U a, const U b, U& sum) { | 43 | 2.47k | sum = a + b; | 44 | 2.47k | return sum >= a; // no need to check b - either sum >= both or < both. | 45 | 2.47k | } |
Unexecuted instantiation: enc_ans.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_ans_simd.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_lz77.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_frame.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_patch_dictionary.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_detect_dots.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_linalg.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_quant_weights.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_toc.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_xyb.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_external_image.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_noise.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: butteraugli.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_butteraugli_comparator.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_group.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_splines.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_ac_strategy.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_aux_out.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: 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: 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: ac_strategy.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: 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: color_encoding_internal.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: 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: 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_cache.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: alpha.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&) dec_external_image.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 42 | 1.18k | static inline bool SafeAdd(const U a, const U b, U& sum) { | 43 | 1.18k | sum = a + b; | 44 | 1.18k | return sum >= a; // no need to check b - either sum >= both or < both. | 45 | 1.18k | } |
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_huffman.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&) decode.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 42 | 13.3k | static inline bool SafeAdd(const U a, const U b, U& sum) { | 43 | 13.3k | sum = a + b; | 44 | 13.3k | return sum >= a; // no need to check b - either sum >= both or < both. | 45 | 13.3k | } |
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&) fields.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 42 | 46.8k | static inline bool SafeAdd(const U a, const U b, U& sum) { | 43 | 46.8k | sum = a + b; | 44 | 46.8k | return sum >= a; // no need to check b - either sum >= both or < both. | 45 | 46.8k | } |
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: icc_codec.cc:bool jxl::SafeAdd<unsigned long, void>(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: icc_codec_common.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: image_bundle.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: image_ops.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: luminance.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 | 133M | static inline bool SafeAdd(const U a, const U b, U& sum) { | 43 | 133M | sum = a + b; | 44 | 133M | return sum >= a; // no need to check b - either sum >= both or < both. | 45 | 133M | } |
Unexecuted instantiation: dec_ma.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.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: rct.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: 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: 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: render_pipeline.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: dec_group_border.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_blending.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_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_upsampling.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: splines.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: 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&) |
46 | | |
47 | 65.9M | static inline bool SafeMul(size_t a, size_t b, size_t& product) { |
48 | 65.9M | product = 0; |
49 | 65.9M | if (a == 0 || b == 0) return true; |
50 | 65.9M | if (b > (std::numeric_limits<size_t>::max() / a)) return false; |
51 | 65.9M | product = a * b; |
52 | 65.9M | return true; |
53 | 65.9M | } encode.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 47 | 8.01k | static inline bool SafeMul(size_t a, size_t b, size_t& product) { | 48 | 8.01k | product = 0; | 49 | 8.01k | if (a == 0 || b == 0) return true; | 50 | 8.01k | if (b > (std::numeric_limits<size_t>::max() / a)) return false; | 51 | 8.01k | product = a * b; | 52 | 8.01k | return true; | 53 | 8.01k | } |
Unexecuted instantiation: enc_fields.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_icc_codec.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: enc_ans.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_ans_simd.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_lz77.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_frame.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_patch_dictionary.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_detect_dots.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_linalg.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_quant_weights.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_toc.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_xyb.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: enc_image_bundle.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 | 11.9k | static inline bool SafeMul(size_t a, size_t b, size_t& product) { | 48 | 11.9k | product = 0; | 49 | 11.9k | if (a == 0 || b == 0) return true; | 50 | 11.9k | if (b > (std::numeric_limits<size_t>::max() / a)) return false; | 51 | 11.9k | product = a * b; | 52 | 11.9k | return true; | 53 | 11.9k | } |
Unexecuted instantiation: enc_photon_noise.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: enc_noise.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) enc_heuristics.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 47 | 8.26k | static inline bool SafeMul(size_t a, size_t b, size_t& product) { | 48 | 8.26k | product = 0; | 49 | 8.26k | if (a == 0 || b == 0) return true; | 50 | 8.26k | if (b > (std::numeric_limits<size_t>::max() / a)) return false; | 51 | 8.26k | product = a * b; | 52 | 8.26k | return true; | 53 | 8.26k | } |
Unexecuted instantiation: butteraugli.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_butteraugli_comparator.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_group.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_splines.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_ac_strategy.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_aux_out.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: jxl_cms.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: 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: ac_strategy.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: ans_common.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: color_encoding_internal.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: compressed_dc.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: 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_cache.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: blending.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: alpha.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: dec_context_map.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) dec_external_image.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 47 | 2.37k | static inline bool SafeMul(size_t a, size_t b, size_t& product) { | 48 | 2.37k | product = 0; | 49 | 2.37k | if (a == 0 || b == 0) return true; | 50 | 2.36k | if (b > (std::numeric_limits<size_t>::max() / a)) return false; | 51 | 2.36k | product = a * b; | 52 | 2.36k | return true; | 53 | 2.36k | } |
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_huffman.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&) decode.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 47 | 54.0k | static inline bool SafeMul(size_t a, size_t b, size_t& product) { | 48 | 54.0k | product = 0; | 49 | 54.0k | if (a == 0 || b == 0) return true; | 50 | 54.0k | if (b > (std::numeric_limits<size_t>::max() / a)) return false; | 51 | 54.0k | product = a * b; | 52 | 54.0k | return true; | 53 | 54.0k | } |
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&) Unexecuted instantiation: fields.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) 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: 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&) image.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 47 | 32.8M | static inline bool SafeMul(size_t a, size_t b, size_t& product) { | 48 | 32.8M | product = 0; | 49 | 32.8M | if (a == 0 || b == 0) return true; | 50 | 32.8M | if (b > (std::numeric_limits<size_t>::max() / a)) return false; | 51 | 32.8M | product = a * b; | 52 | 32.8M | return true; | 53 | 32.8M | } |
Unexecuted instantiation: image_bundle.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: image_metadata.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: image_ops.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: loop_filter.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: luminance.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 | 32.9M | static inline bool SafeMul(size_t a, size_t b, size_t& product) { | 48 | 32.9M | product = 0; | 49 | 32.9M | if (a == 0 || b == 0) return true; | 50 | 32.9M | if (b > (std::numeric_limits<size_t>::max() / a)) return false; | 51 | 32.9M | product = a * b; | 52 | 32.9M | return true; | 53 | 32.9M | } |
Unexecuted instantiation: dec_ma.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.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: rct.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: palette.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: 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: render_pipeline.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: dec_group_border.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_blending.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_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_upsampling.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: splines.cc:jxl::SafeMul(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: toc.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&) |
54 | | |
55 | 35.8M | static inline bool SubOverflow(const int32_t a, const int32_t b, int32_t& c) { |
56 | | // Clang 3.8+ / GCC 5.1+ |
57 | 35.8M | #if JXL_COMPILER_GCC || JXL_COMPILER_CLANG |
58 | 35.8M | 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 | 35.8M | } Unexecuted instantiation: encode.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_fields.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_bit_writer.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_icc_codec.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_ans.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_ans_simd.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_lz77.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_fast_lossless.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_frame.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_modular.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_patch_dictionary.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_detect_dots.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_convolve_separable5.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_linalg.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_gaborish.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_quant_weights.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_modular_simd.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_toc.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_coeff_order.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_xyb.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_image_bundle.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_external_image.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_photon_noise.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_noise.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_heuristics.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: butteraugli.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_butteraugli_comparator.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_cache.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_group.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_progressive_split.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_splines.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_ac_strategy.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_entropy_coder.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_aux_out.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: jxl_cms.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 | 35.8M | static inline bool SubOverflow(const int32_t a, const int32_t b, int32_t& c) { | 56 | | // Clang 3.8+ / GCC 5.1+ | 57 | 35.8M | #if JXL_COMPILER_GCC || JXL_COMPILER_CLANG | 58 | 35.8M | 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 | 35.8M | } |
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: enc_palette.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: enc_squeeze.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: ac_strategy.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: ans_common.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: color_encoding_internal.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: compressed_dc.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: dec_ans.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: dec_bit_reader.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: dec_cache.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: blending.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: alpha.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: dec_context_map.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: dec_external_image.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_huffman.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: decode.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: fields.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: icc_codec.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: icc_codec_common.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: image.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: image_bundle.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: image_metadata.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: image_ops.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: loop_filter.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: luminance.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: memory_manager_internal.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: dec_ma.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.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: rct.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: palette.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: quant_weights.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: quantizer.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: render_pipeline.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: low_memory_render_pipeline.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: dec_group_border.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: simple_render_pipeline.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: stage_blending.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: render_pipeline_stage.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_upsampling.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: splines.cc:jxl::SubOverflow(int, int, int&) Unexecuted instantiation: toc.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&) |
69 | | |
70 | | template <typename T1, typename T2> |
71 | 37.7M | constexpr inline T1 DivCeil(T1 a, T2 b) { |
72 | 37.7M | return (a + b - 1) / b; |
73 | 37.7M | } unsigned long jxl::DivCeil<unsigned long, unsigned long>(unsigned long, unsigned long) Line | Count | Source | 71 | 29.3M | constexpr inline T1 DivCeil(T1 a, T2 b) { | 72 | 29.3M | return (a + b - 1) / b; | 73 | 29.3M | } |
unsigned long jxl::DivCeil<unsigned long, int>(unsigned long, int) Line | Count | Source | 71 | 7.72M | constexpr inline T1 DivCeil(T1 a, T2 b) { | 72 | 7.72M | return (a + b - 1) / b; | 73 | 7.72M | } |
int jxl::DivCeil<int, int>(int, int) Line | Count | Source | 71 | 275k | constexpr inline T1 DivCeil(T1 a, T2 b) { | 72 | 275k | return (a + b - 1) / b; | 73 | 275k | } |
unsigned long jxl::DivCeil<unsigned long, long>(unsigned long, long) Line | Count | Source | 71 | 421k | constexpr inline T1 DivCeil(T1 a, T2 b) { | 72 | 421k | return (a + b - 1) / b; | 73 | 421k | } |
|
74 | | |
75 | | // Works for any `align`; if a power of two, compiler emits ADD+AND. |
76 | 19.6M | constexpr inline size_t RoundUpTo(size_t what, size_t align) { |
77 | 19.6M | return DivCeil(what, align) * align; |
78 | 19.6M | } |
79 | | |
80 | | // `align <= 1` means no rounding. |
81 | 33.0M | static inline bool SafeRoundUpTo(size_t what, size_t align, size_t& result) { |
82 | 33.0M | if (align < 2) { |
83 | 24.4k | result = what; |
84 | 24.4k | return true; |
85 | 24.4k | } |
86 | 32.9M | size_t reminder = what % align; |
87 | 32.9M | if (reminder == 0) { |
88 | 414k | result = what; |
89 | 414k | return true; |
90 | 414k | } |
91 | 32.5M | return SafeAdd(what, align - reminder, result); |
92 | 32.9M | } encode.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 81 | 4.00k | static inline bool SafeRoundUpTo(size_t what, size_t align, size_t& result) { | 82 | 4.00k | if (align < 2) { | 83 | 4.00k | result = what; | 84 | 4.00k | return true; | 85 | 4.00k | } | 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_fields.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_icc_codec.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: enc_ans.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_ans_simd.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_lz77.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_frame.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_patch_dictionary.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_detect_dots.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_linalg.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_quant_weights.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_toc.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_xyb.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_external_image.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_noise.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: enc_heuristics.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: butteraugli.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_butteraugli_comparator.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_group.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_splines.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_ac_strategy.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_aux_out.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: jxl_cms.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: 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: ac_strategy.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: ans_common.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: color_encoding_internal.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: compressed_dc.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: 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_cache.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: blending.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: alpha.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_external_image.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_huffman.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&) decode.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Line | Count | Source | 81 | 20.4k | static inline bool SafeRoundUpTo(size_t what, size_t align, size_t& result) { | 82 | 20.4k | if (align < 2) { | 83 | 20.4k | result = what; | 84 | 20.4k | return true; | 85 | 20.4k | } | 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: 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: fields.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) 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: 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&) Unexecuted instantiation: image.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: image_bundle.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: image_metadata.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: image_ops.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: loop_filter.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: luminance.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 | 32.9M | static inline bool SafeRoundUpTo(size_t what, size_t align, size_t& result) { | 82 | 32.9M | if (align < 2) { | 83 | 0 | result = what; | 84 | 0 | return true; | 85 | 0 | } | 86 | 32.9M | size_t reminder = what % align; | 87 | 32.9M | if (reminder == 0) { | 88 | 414k | result = what; | 89 | 414k | return true; | 90 | 414k | } | 91 | 32.5M | return SafeAdd(what, align - reminder, result); | 92 | 32.9M | } |
Unexecuted instantiation: dec_ma.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.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: rct.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: palette.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: 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: render_pipeline.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: dec_group_border.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_blending.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_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_upsampling.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: splines.cc:jxl::SafeRoundUpTo(unsigned long, unsigned long, unsigned long&) Unexecuted instantiation: toc.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&) |
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 | 13.7k | 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 | 376k | void construct(U* place, Args&&... args) {} |
142 | | |
143 | | template <typename U> |
144 | 376k | 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 | 13.7k | uninitialized_vector<T> make_uninitialized_vector(size_t n) { |
152 | 13.7k | return uninitialized_vector<T>(n, UninitializedAllocator<T>()); |
153 | 13.7k | } |
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 | } |
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 | } |
185 | | |
186 | | template <typename T> |
187 | 546M | JXL_INLINE T Clamp1(T val, T low, T hi) { |
188 | 546M | return val < low ? low : val > hi ? hi : val; |
189 | 546M | } float jxl::Clamp1<float>(float, float, float) Line | Count | Source | 187 | 117M | JXL_INLINE T Clamp1(T val, T low, T hi) { | 188 | 117M | return val < low ? low : val > hi ? hi : val; | 189 | 117M | } |
double jxl::Clamp1<double>(double, double, double) Line | Count | Source | 187 | 15.8k | JXL_INLINE T Clamp1(T val, T low, T hi) { | 188 | 15.8k | return val < low ? low : val > hi ? hi : val; | 189 | 15.8k | } |
int jxl::Clamp1<int>(int, int, int) Line | Count | Source | 187 | 428M | JXL_INLINE T Clamp1(T val, T low, T hi) { | 188 | 428M | return val < low ? low : val > hi ? hi : val; | 189 | 428M | } |
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 | 3.30k | std::string ToString(T n) { |
194 | 3.30k | char data[32] = {}; |
195 | 3.30k | if (std::is_floating_point<T>::value) { |
196 | | // float |
197 | 3.30k | snprintf(data, sizeof(data), "%g", static_cast<double>(n)); |
198 | 3.30k | } 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 | 3.30k | return data; |
206 | 3.30k | } std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > jxl::ToString<double>(double) Line | Count | Source | 193 | 3.30k | std::string ToString(T n) { | 194 | 3.30k | char data[32] = {}; | 195 | 3.30k | if (std::is_floating_point<T>::value) { | 196 | | // float | 197 | 3.30k | snprintf(data, sizeof(data), "%g", static_cast<double>(n)); | 198 | 3.30k | } 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 | 3.30k | return data; | 206 | 3.30k | } |
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_ |