Coverage Report

Created: 2026-09-28 06:47

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libjxl/lib/jxl/dct_block-inl.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
// Adapters for DCT input/output: from/to contiguous blocks or image rows.
7
8
#include "lib/jxl/base/compiler_specific.h"
9
10
#if defined(LIB_JXL_DCT_BLOCK_INL_H_) == defined(HWY_TARGET_TOGGLE)
11
#ifdef LIB_JXL_DCT_BLOCK_INL_H_
12
#undef LIB_JXL_DCT_BLOCK_INL_H_
13
#else
14
#define LIB_JXL_DCT_BLOCK_INL_H_
15
#endif
16
17
#include <cstddef>
18
#include <hwy/highway.h>
19
20
#include "lib/jxl/base/status.h"
21
22
HWY_BEFORE_NAMESPACE();
23
namespace jxl {
24
namespace HWY_NAMESPACE {
25
namespace {
26
27
// These templates are not found via ADL.
28
using hwy::HWY_NAMESPACE::Vec;
29
30
// Block: (x, y) <-> (N * y + x)
31
// Lines: (x, y) <-> (stride * y + x)
32
//
33
// I.e. Block is a specialization of Lines with fixed stride.
34
//
35
// FromXXX should implement Read and Load (Read vector).
36
// ToXXX should implement Write and Store (Write vector).
37
38
template <size_t N>
39
using BlockDesc = HWY_CAPPED(float, N);
40
41
// Here and in the following, the SZ template parameter specifies the number of
42
// values to load/store. Needed because we want to handle 4x4 sub-blocks of
43
// 16x16 blocks.
44
class DCTFrom {
45
 public:
46
2.27G
  DCTFrom(const float* data, size_t stride) : stride_(stride), data_(data) {}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
Line
Count
Source
46
18.0M
  DCTFrom(const float* data, size_t stride) : stride_(stride), data_(data) {}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
Line
Count
Source
46
66.9M
  DCTFrom(const float* data, size_t stride) : stride_(stride), data_(data) {}
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
Line
Count
Source
46
2.13G
  DCTFrom(const float* data, size_t stride) : stride_(stride), data_(data) {}
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
Line
Count
Source
46
55.2M
  DCTFrom(const float* data, size_t stride) : stride_(stride), data_(data) {}
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::DCTFrom(float const*, unsigned long)
47
48
  template <typename D>
49
11.7G
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
11.7G
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
11.7G
    return LoadU(D(), Address(row, i));
56
11.7G
  }
Unexecuted instantiation: enc_adaptive_quantization.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 4ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 4ul, 0> >(hwy::N_SSE4::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 4ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 4ul, 0> >(hwy::N_AVX2::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 8ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 8ul, 0> >(hwy::N_AVX2::Simd<float, 8ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 4ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 4ul, 0> >(hwy::N_SSE2::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 4ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 4ul, 0> >(hwy::N_SSE4::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
enc_group.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 4ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 4ul, 0> >(hwy::N_AVX2::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Line
Count
Source
49
10.3M
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
10.3M
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
10.3M
    return LoadU(D(), Address(row, i));
56
10.3M
  }
enc_group.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 8ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 8ul, 0> >(hwy::N_AVX2::Simd<float, 8ul, 0>, unsigned long, unsigned long) const
Line
Count
Source
49
309M
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
309M
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
309M
    return LoadU(D(), Address(row, i));
56
309M
  }
Unexecuted instantiation: enc_group.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 4ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 4ul, 0> >(hwy::N_SSE2::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 1ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 1ul, 0> >(hwy::N_SSE4::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 2ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 2ul, 0> >(hwy::N_SSE4::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 1ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 1ul, 0> >(hwy::N_AVX2::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 2ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 2ul, 0> >(hwy::N_AVX2::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 1ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 1ul, 0> >(hwy::N_SSE2::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 2ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 2ul, 0> >(hwy::N_SSE2::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 4ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 4ul, 0> >(hwy::N_SSE4::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
enc_chroma_from_luma.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 4ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 4ul, 0> >(hwy::N_AVX2::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Line
Count
Source
49
10.3M
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
10.3M
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
10.3M
    return LoadU(D(), Address(row, i));
56
10.3M
  }
enc_chroma_from_luma.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 8ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 8ul, 0> >(hwy::N_AVX2::Simd<float, 8ul, 0>, unsigned long, unsigned long) const
Line
Count
Source
49
700M
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
700M
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
700M
    return LoadU(D(), Address(row, i));
56
700M
  }
Unexecuted instantiation: enc_chroma_from_luma.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 4ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 4ul, 0> >(hwy::N_SSE2::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 1ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 1ul, 0> >(hwy::N_SSE4::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 2ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 2ul, 0> >(hwy::N_SSE4::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 1ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 1ul, 0> >(hwy::N_AVX2::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 2ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 2ul, 0> >(hwy::N_AVX2::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 1ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 1ul, 0> >(hwy::N_SSE2::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 2ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 2ul, 0> >(hwy::N_SSE2::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 4ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 4ul, 0> >(hwy::N_SSE4::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
enc_ac_strategy.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 4ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 4ul, 0> >(hwy::N_AVX2::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Line
Count
Source
49
2.08G
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
2.08G
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
2.08G
    return LoadU(D(), Address(row, i));
56
2.08G
  }
enc_ac_strategy.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 8ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 8ul, 0> >(hwy::N_AVX2::Simd<float, 8ul, 0>, unsigned long, unsigned long) const
Line
Count
Source
49
8.28G
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
8.28G
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
8.28G
    return LoadU(D(), Address(row, i));
56
8.28G
  }
Unexecuted instantiation: enc_ac_strategy.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 4ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 4ul, 0> >(hwy::N_SSE2::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 1ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 1ul, 0> >(hwy::N_SSE4::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 2ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 2ul, 0> >(hwy::N_SSE4::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 1ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 1ul, 0> >(hwy::N_AVX2::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 2ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 2ul, 0> >(hwy::N_AVX2::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 1ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 1ul, 0> >(hwy::N_SSE2::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 2ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 2ul, 0> >(hwy::N_SSE2::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 4ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 4ul, 0> >(hwy::N_SSE4::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
dec_group.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 8ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 8ul, 0> >(hwy::N_AVX2::Simd<float, 8ul, 0>, unsigned long, unsigned long) const
Line
Count
Source
49
331M
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
331M
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
331M
    return LoadU(D(), Address(row, i));
56
331M
  }
Unexecuted instantiation: dec_group.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 4ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 4ul, 0> >(hwy::N_SSE2::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 1ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 1ul, 0> >(hwy::N_SSE4::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:decltype (Zero((hwy::N_SSE4::Simd<float, 2ul, 0>)())) jxl::N_SSE4::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE4::Simd<float, 2ul, 0> >(hwy::N_SSE4::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
dec_group.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 1ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 1ul, 0> >(hwy::N_AVX2::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Line
Count
Source
49
3.34M
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
3.34M
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
3.34M
    return LoadU(D(), Address(row, i));
56
3.34M
  }
dec_group.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 2ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 2ul, 0> >(hwy::N_AVX2::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
Line
Count
Source
49
5.62M
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
5.62M
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
5.62M
    return LoadU(D(), Address(row, i));
56
5.62M
  }
dec_group.cc:decltype (Zero((hwy::N_AVX2::Simd<float, 4ul, 0>)())) jxl::N_AVX2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_AVX2::Simd<float, 4ul, 0> >(hwy::N_AVX2::Simd<float, 4ul, 0>, unsigned long, unsigned long) const
Line
Count
Source
49
4.29M
  HWY_INLINE Vec<D> LoadPart(D /* tag */, const size_t row, size_t i) const {
50
4.29M
    JXL_DASSERT(Lanes(D()) <= stride_);
51
    // Since these functions are used also for DC, no alignment at all is
52
    // guaranteed in the case of floating blocks.
53
    // TODO(veluca): consider using a different class for DC-to-LF and
54
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
55
4.29M
    return LoadU(D(), Address(row, i));
56
4.29M
  }
Unexecuted instantiation: dec_group.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 1ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 1ul, 0> >(hwy::N_SSE2::Simd<float, 1ul, 0>, unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:decltype (Zero((hwy::N_SSE2::Simd<float, 2ul, 0>)())) jxl::N_SSE2::(anonymous namespace)::DCTFrom::LoadPart<hwy::N_SSE2::Simd<float, 2ul, 0> >(hwy::N_SSE2::Simd<float, 2ul, 0>, unsigned long, unsigned long) const
57
58
19.0G
  HWY_INLINE float Read(const size_t row, const size_t i) const {
59
19.0G
    return *Address(row, i);
60
19.0G
  }
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
Line
Count
Source
58
59.8M
  HWY_INLINE float Read(const size_t row, const size_t i) const {
59
59.8M
    return *Address(row, i);
60
59.8M
  }
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
Line
Count
Source
58
59.8M
  HWY_INLINE float Read(const size_t row, const size_t i) const {
59
59.8M
    return *Address(row, i);
60
59.8M
  }
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
Line
Count
Source
58
18.7G
  HWY_INLINE float Read(const size_t row, const size_t i) const {
59
18.7G
    return *Address(row, i);
60
18.7G
  }
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
Line
Count
Source
58
178M
  HWY_INLINE float Read(const size_t row, const size_t i) const {
59
178M
    return *Address(row, i);
60
178M
  }
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Read(unsigned long, unsigned long) const
61
62
  constexpr HWY_INLINE const float* Address(const size_t row,
63
31.5G
                                            const size_t i) const {
64
31.5G
    return data_ + row * stride_ + i;
65
31.5G
  }
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
Line
Count
Source
63
381M
                                            const size_t i) const {
64
381M
    return data_ + row * stride_ + i;
65
381M
  }
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
Line
Count
Source
63
773M
                                            const size_t i) const {
64
773M
    return data_ + row * stride_ + i;
65
773M
  }
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
Line
Count
Source
63
29.8G
                                            const size_t i) const {
64
29.8G
    return data_ + row * stride_ + i;
65
29.8G
  }
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
Line
Count
Source
63
560M
                                            const size_t i) const {
64
560M
    return data_ + row * stride_ + i;
65
560M
  }
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Address(unsigned long, unsigned long) const
66
67
760M
  size_t Stride() const { return stride_; }
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Stride() const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Stride() const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Stride() const
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Stride() const
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Stride() const
Line
Count
Source
67
2.22M
  size_t Stride() const { return stride_; }
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Stride() const
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Stride() const
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Stride() const
Line
Count
Source
67
2.22M
  size_t Stride() const { return stride_; }
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Stride() const
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Stride() const
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Stride() const
Line
Count
Source
67
718M
  size_t Stride() const { return stride_; }
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Stride() const
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTFrom::Stride() const
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTFrom::Stride() const
Line
Count
Source
67
37.8M
  size_t Stride() const { return stride_; }
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTFrom::Stride() const
68
69
 private:
70
  size_t stride_;
71
  const float* JXL_RESTRICT data_;
72
};
73
74
class DCTTo {
75
 public:
76
2.27G
  DCTTo(float* data, size_t stride) : stride_(stride), data_(data) {}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
Line
Count
Source
76
18.0M
  DCTTo(float* data, size_t stride) : stride_(stride), data_(data) {}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
Line
Count
Source
76
66.9M
  DCTTo(float* data, size_t stride) : stride_(stride), data_(data) {}
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
Line
Count
Source
76
2.13G
  DCTTo(float* data, size_t stride) : stride_(stride), data_(data) {}
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
Line
Count
Source
76
55.2M
  DCTTo(float* data, size_t stride) : stride_(stride), data_(data) {}
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::DCTTo(float*, unsigned long)
77
78
  template <typename D>
79
  HWY_INLINE void StorePart(D /* tag */, const Vec<D>& v, const size_t row,
80
11.7G
                            size_t i) const {
81
11.7G
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
11.7G
    StoreU(v, D(), Address(row, i));
87
11.7G
  }
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 4ul, 0> >(hwy::N_SSE4::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 4ul, 0> >(hwy::N_AVX2::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 8ul, 0> >(hwy::N_AVX2::Simd<float, 8ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 8ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 4ul, 0> >(hwy::N_SSE2::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 4ul, 0> >(hwy::N_SSE4::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 4ul, 0> >(hwy::N_AVX2::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Line
Count
Source
80
10.3M
                            size_t i) const {
81
10.3M
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
10.3M
    StoreU(v, D(), Address(row, i));
87
10.3M
  }
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 8ul, 0> >(hwy::N_AVX2::Simd<float, 8ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 8ul, 0>)())) const&, unsigned long, unsigned long) const
Line
Count
Source
80
309M
                            size_t i) const {
81
309M
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
309M
    StoreU(v, D(), Address(row, i));
87
309M
  }
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 4ul, 0> >(hwy::N_SSE2::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 1ul, 0> >(hwy::N_SSE4::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 2ul, 0> >(hwy::N_SSE4::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 1ul, 0> >(hwy::N_AVX2::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 2ul, 0> >(hwy::N_AVX2::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 1ul, 0> >(hwy::N_SSE2::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 2ul, 0> >(hwy::N_SSE2::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 4ul, 0> >(hwy::N_SSE4::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 4ul, 0> >(hwy::N_AVX2::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Line
Count
Source
80
10.3M
                            size_t i) const {
81
10.3M
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
10.3M
    StoreU(v, D(), Address(row, i));
87
10.3M
  }
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 8ul, 0> >(hwy::N_AVX2::Simd<float, 8ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 8ul, 0>)())) const&, unsigned long, unsigned long) const
Line
Count
Source
80
700M
                            size_t i) const {
81
700M
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
700M
    StoreU(v, D(), Address(row, i));
87
700M
  }
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 4ul, 0> >(hwy::N_SSE2::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 1ul, 0> >(hwy::N_SSE4::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 2ul, 0> >(hwy::N_SSE4::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 1ul, 0> >(hwy::N_AVX2::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 2ul, 0> >(hwy::N_AVX2::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 1ul, 0> >(hwy::N_SSE2::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 2ul, 0> >(hwy::N_SSE2::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 4ul, 0> >(hwy::N_SSE4::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 4ul, 0> >(hwy::N_AVX2::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Line
Count
Source
80
2.08G
                            size_t i) const {
81
2.08G
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
2.08G
    StoreU(v, D(), Address(row, i));
87
2.08G
  }
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 8ul, 0> >(hwy::N_AVX2::Simd<float, 8ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 8ul, 0>)())) const&, unsigned long, unsigned long) const
Line
Count
Source
80
8.28G
                            size_t i) const {
81
8.28G
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
8.28G
    StoreU(v, D(), Address(row, i));
87
8.28G
  }
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 4ul, 0> >(hwy::N_SSE2::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 1ul, 0> >(hwy::N_SSE4::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 2ul, 0> >(hwy::N_SSE4::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 1ul, 0> >(hwy::N_AVX2::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 2ul, 0> >(hwy::N_AVX2::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 1ul, 0> >(hwy::N_SSE2::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 2ul, 0> >(hwy::N_SSE2::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 4ul, 0> >(hwy::N_SSE4::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 8ul, 0> >(hwy::N_AVX2::Simd<float, 8ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 8ul, 0>)())) const&, unsigned long, unsigned long) const
Line
Count
Source
80
331M
                            size_t i) const {
81
331M
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
331M
    StoreU(v, D(), Address(row, i));
87
331M
  }
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 4ul, 0> >(hwy::N_SSE2::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 1ul, 0> >(hwy::N_SSE4::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE4::Simd<float, 2ul, 0> >(hwy::N_SSE4::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_SSE4::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 1ul, 0> >(hwy::N_AVX2::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Line
Count
Source
80
3.34M
                            size_t i) const {
81
3.34M
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
3.34M
    StoreU(v, D(), Address(row, i));
87
3.34M
  }
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 2ul, 0> >(hwy::N_AVX2::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
Line
Count
Source
80
5.62M
                            size_t i) const {
81
5.62M
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
5.62M
    StoreU(v, D(), Address(row, i));
87
5.62M
  }
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCTTo::StorePart<hwy::N_AVX2::Simd<float, 4ul, 0> >(hwy::N_AVX2::Simd<float, 4ul, 0>, decltype (Zero((hwy::N_AVX2::Simd<float, 4ul, 0>)())) const&, unsigned long, unsigned long) const
Line
Count
Source
80
4.29M
                            size_t i) const {
81
4.29M
    JXL_DASSERT(Lanes(D()) <= stride_);
82
    // Since these functions are used also for DC, no alignment at all is
83
    // guaranteed in the case of floating blocks.
84
    // TODO(veluca): consider using a different class for DC-to-LF and
85
    // DC-from-LF, or copying DC values to/from a temporary aligned location.
86
4.29M
    StoreU(v, D(), Address(row, i));
87
4.29M
  }
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 1ul, 0> >(hwy::N_SSE2::Simd<float, 1ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 1ul, 0>)())) const&, unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::DCTTo::StorePart<hwy::N_SSE2::Simd<float, 2ul, 0> >(hwy::N_SSE2::Simd<float, 2ul, 0>, decltype (Zero((hwy::N_SSE2::Simd<float, 2ul, 0>)())) const&, unsigned long, unsigned long) const
88
89
19.0G
  HWY_INLINE void Write(float v, const size_t row, const size_t i) const {
90
19.0G
    *Address(row, i) = v;
91
19.0G
  }
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
Line
Count
Source
89
59.8M
  HWY_INLINE void Write(float v, const size_t row, const size_t i) const {
90
59.8M
    *Address(row, i) = v;
91
59.8M
  }
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
Line
Count
Source
89
59.8M
  HWY_INLINE void Write(float v, const size_t row, const size_t i) const {
90
59.8M
    *Address(row, i) = v;
91
59.8M
  }
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
Line
Count
Source
89
18.7G
  HWY_INLINE void Write(float v, const size_t row, const size_t i) const {
90
18.7G
    *Address(row, i) = v;
91
18.7G
  }
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
Line
Count
Source
89
178M
  HWY_INLINE void Write(float v, const size_t row, const size_t i) const {
90
178M
    *Address(row, i) = v;
91
178M
  }
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Write(float, unsigned long, unsigned long) const
92
93
31.5G
  constexpr HWY_INLINE float* Address(const size_t row, const size_t i) const {
94
31.5G
    return data_ + row * stride_ + i;
95
31.5G
  }
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
Line
Count
Source
93
381M
  constexpr HWY_INLINE float* Address(const size_t row, const size_t i) const {
94
381M
    return data_ + row * stride_ + i;
95
381M
  }
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
Line
Count
Source
93
773M
  constexpr HWY_INLINE float* Address(const size_t row, const size_t i) const {
94
773M
    return data_ + row * stride_ + i;
95
773M
  }
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
Line
Count
Source
93
29.8G
  constexpr HWY_INLINE float* Address(const size_t row, const size_t i) const {
94
29.8G
    return data_ + row * stride_ + i;
95
29.8G
  }
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
Line
Count
Source
93
560M
  constexpr HWY_INLINE float* Address(const size_t row, const size_t i) const {
94
560M
    return data_ + row * stride_ + i;
95
560M
  }
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Address(unsigned long, unsigned long) const
96
97
760M
  size_t Stride() const { return stride_; }
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Stride() const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Stride() const
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Stride() const
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Stride() const
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Stride() const
Line
Count
Source
97
2.22M
  size_t Stride() const { return stride_; }
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Stride() const
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Stride() const
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Stride() const
Line
Count
Source
97
2.22M
  size_t Stride() const { return stride_; }
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Stride() const
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Stride() const
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Stride() const
Line
Count
Source
97
718M
  size_t Stride() const { return stride_; }
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Stride() const
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::DCTTo::Stride() const
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::DCTTo::Stride() const
Line
Count
Source
97
37.8M
  size_t Stride() const { return stride_; }
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::DCTTo::Stride() const
98
99
 private:
100
  size_t stride_;
101
  float* JXL_RESTRICT data_;
102
};
103
104
}  // namespace
105
// NOLINTNEXTLINE(google-readability-namespace-comments)
106
}  // namespace HWY_NAMESPACE
107
}  // namespace jxl
108
HWY_AFTER_NAMESPACE();
109
110
#endif  // LIB_JXL_DCT_BLOCK_INL_H_