Coverage Report

Created: 2026-09-28 06:47

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libjxl/lib/jxl/dec_transforms-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
#include <cstring>
7
8
#include "lib/jxl/base/compiler_specific.h"
9
#include "lib/jxl/frame_dimensions.h"
10
11
#if defined(LIB_JXL_DEC_TRANSFORMS_INL_H_) == defined(HWY_TARGET_TOGGLE)
12
#ifdef LIB_JXL_DEC_TRANSFORMS_INL_H_
13
#undef LIB_JXL_DEC_TRANSFORMS_INL_H_
14
#else
15
#define LIB_JXL_DEC_TRANSFORMS_INL_H_
16
#endif
17
18
#include <cstddef>
19
#include <hwy/highway.h>
20
21
#include "lib/jxl/ac_strategy.h"
22
#include "lib/jxl/dct-inl.h"
23
#include "lib/jxl/dct_scales.h"
24
HWY_BEFORE_NAMESPACE();
25
namespace jxl {
26
namespace HWY_NAMESPACE {
27
namespace {
28
29
// These templates are not found via ADL.
30
using hwy::HWY_NAMESPACE::MulAdd;
31
32
// Computes the lowest-frequency LF_ROWSxLF_COLS-sized square in output, which
33
// is a DCT_ROWS*DCT_COLS-sized DCT block, by doing a ROWS*COLS DCT on the
34
// input block.
35
template <size_t DCT_ROWS, size_t DCT_COLS, size_t LF_ROWS, size_t LF_COLS,
36
          size_t ROWS, size_t COLS>
37
JXL_INLINE void ReinterpretingDCT(const float* input, const size_t input_stride,
38
                                  float* output, const size_t output_stride,
39
                                  float* JXL_RESTRICT block,
40
3.30M
                                  float* JXL_RESTRICT scratch_space) {
41
3.30M
  static_assert(LF_ROWS == ROWS,
42
3.30M
                "ReinterpretingDCT should only be called with LF == N");
43
3.30M
  static_assert(LF_COLS == COLS,
44
3.30M
                "ReinterpretingDCT should only be called with LF == N");
45
3.30M
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
3.30M
                                 scratch_space);
47
3.30M
  if (ROWS < COLS) {
48
2.46M
    for (size_t y = 0; y < LF_ROWS; y++) {
49
5.50M
      for (size_t x = 0; x < LF_COLS; x++) {
50
4.13M
        output[y * output_stride + x] =
51
4.13M
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
4.13M
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
4.13M
      }
54
1.36M
    }
55
2.21M
  } else {
56
7.91M
    for (size_t y = 0; y < LF_COLS; y++) {
57
31.5M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
25.8M
        output[y * output_stride + x] =
59
25.8M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
25.8M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
25.8M
      }
62
5.69M
    }
63
2.21M
  }
64
3.30M
}
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
807k
                                  float* JXL_RESTRICT scratch_space) {
41
807k
  static_assert(LF_ROWS == ROWS,
42
807k
                "ReinterpretingDCT should only be called with LF == N");
43
807k
  static_assert(LF_COLS == COLS,
44
807k
                "ReinterpretingDCT should only be called with LF == N");
45
807k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
807k
                                 scratch_space);
47
807k
  if (ROWS < COLS) {
48
0
    for (size_t y = 0; y < LF_ROWS; y++) {
49
0
      for (size_t x = 0; x < LF_COLS; x++) {
50
0
        output[y * output_stride + x] =
51
0
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
0
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
0
      }
54
0
    }
55
807k
  } else {
56
1.61M
    for (size_t y = 0; y < LF_COLS; y++) {
57
2.42M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
1.61M
        output[y * output_stride + x] =
59
1.61M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
1.61M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
1.61M
      }
62
807k
    }
63
807k
  }
64
807k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
867k
                                  float* JXL_RESTRICT scratch_space) {
41
867k
  static_assert(LF_ROWS == ROWS,
42
867k
                "ReinterpretingDCT should only be called with LF == N");
43
867k
  static_assert(LF_COLS == COLS,
44
867k
                "ReinterpretingDCT should only be called with LF == N");
45
867k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
867k
                                 scratch_space);
47
867k
  if (ROWS < COLS) {
48
1.73M
    for (size_t y = 0; y < LF_ROWS; y++) {
49
2.60M
      for (size_t x = 0; x < LF_COLS; x++) {
50
1.73M
        output[y * output_stride + x] =
51
1.73M
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
1.73M
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
1.73M
      }
54
867k
    }
55
867k
  } else {
56
0
    for (size_t y = 0; y < LF_COLS; y++) {
57
0
      for (size_t x = 0; x < LF_ROWS; x++) {
58
0
        output[y * output_stride + x] =
59
0
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
0
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
0
      }
62
0
    }
63
0
  }
64
867k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
598k
                                  float* JXL_RESTRICT scratch_space) {
41
598k
  static_assert(LF_ROWS == ROWS,
42
598k
                "ReinterpretingDCT should only be called with LF == N");
43
598k
  static_assert(LF_COLS == COLS,
44
598k
                "ReinterpretingDCT should only be called with LF == N");
45
598k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
598k
                                 scratch_space);
47
598k
  if (ROWS < COLS) {
48
0
    for (size_t y = 0; y < LF_ROWS; y++) {
49
0
      for (size_t x = 0; x < LF_COLS; x++) {
50
0
        output[y * output_stride + x] =
51
0
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
0
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
0
      }
54
0
    }
55
598k
  } else {
56
1.79M
    for (size_t y = 0; y < LF_COLS; y++) {
57
3.59M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
2.39M
        output[y * output_stride + x] =
59
2.39M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
2.39M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
2.39M
      }
62
1.19M
    }
63
598k
  }
64
598k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
36
                                  float* JXL_RESTRICT scratch_space) {
41
36
  static_assert(LF_ROWS == ROWS,
42
36
                "ReinterpretingDCT should only be called with LF == N");
43
36
  static_assert(LF_COLS == COLS,
44
36
                "ReinterpretingDCT should only be called with LF == N");
45
36
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
36
                                 scratch_space);
47
36
  if (ROWS < COLS) {
48
0
    for (size_t y = 0; y < LF_ROWS; y++) {
49
0
      for (size_t x = 0; x < LF_COLS; x++) {
50
0
        output[y * output_stride + x] =
51
0
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
0
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
0
      }
54
0
    }
55
36
  } else {
56
72
    for (size_t y = 0; y < LF_COLS; y++) {
57
180
      for (size_t x = 0; x < LF_ROWS; x++) {
58
144
        output[y * output_stride + x] =
59
144
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
144
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
144
      }
62
36
    }
63
36
  }
64
36
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
132
                                  float* JXL_RESTRICT scratch_space) {
41
132
  static_assert(LF_ROWS == ROWS,
42
132
                "ReinterpretingDCT should only be called with LF == N");
43
132
  static_assert(LF_COLS == COLS,
44
132
                "ReinterpretingDCT should only be called with LF == N");
45
132
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
132
                                 scratch_space);
47
132
  if (ROWS < COLS) {
48
264
    for (size_t y = 0; y < LF_ROWS; y++) {
49
660
      for (size_t x = 0; x < LF_COLS; x++) {
50
528
        output[y * output_stride + x] =
51
528
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
528
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
528
      }
54
132
    }
55
132
  } else {
56
0
    for (size_t y = 0; y < LF_COLS; y++) {
57
0
      for (size_t x = 0; x < LF_ROWS; x++) {
58
0
        output[y * output_stride + x] =
59
0
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
0
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
0
      }
62
0
    }
63
0
  }
64
132
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
188k
                                  float* JXL_RESTRICT scratch_space) {
41
188k
  static_assert(LF_ROWS == ROWS,
42
188k
                "ReinterpretingDCT should only be called with LF == N");
43
188k
  static_assert(LF_COLS == COLS,
44
188k
                "ReinterpretingDCT should only be called with LF == N");
45
188k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
188k
                                 scratch_space);
47
188k
  if (ROWS < COLS) {
48
0
    for (size_t y = 0; y < LF_ROWS; y++) {
49
0
      for (size_t x = 0; x < LF_COLS; x++) {
50
0
        output[y * output_stride + x] =
51
0
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
0
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
0
      }
54
0
    }
55
188k
  } else {
56
565k
    for (size_t y = 0; y < LF_COLS; y++) {
57
1.88M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
1.50M
        output[y * output_stride + x] =
59
1.50M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
1.50M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
1.50M
      }
62
376k
    }
63
188k
  }
64
188k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
200k
                                  float* JXL_RESTRICT scratch_space) {
41
200k
  static_assert(LF_ROWS == ROWS,
42
200k
                "ReinterpretingDCT should only be called with LF == N");
43
200k
  static_assert(LF_COLS == COLS,
44
200k
                "ReinterpretingDCT should only be called with LF == N");
45
200k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
200k
                                 scratch_space);
47
200k
  if (ROWS < COLS) {
48
602k
    for (size_t y = 0; y < LF_ROWS; y++) {
49
2.00M
      for (size_t x = 0; x < LF_COLS; x++) {
50
1.60M
        output[y * output_stride + x] =
51
1.60M
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
1.60M
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
1.60M
      }
54
401k
    }
55
200k
  } else {
56
0
    for (size_t y = 0; y < LF_COLS; y++) {
57
0
      for (size_t x = 0; x < LF_ROWS; x++) {
58
0
        output[y * output_stride + x] =
59
0
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
0
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
0
      }
62
0
    }
63
0
  }
64
200k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
389k
                                  float* JXL_RESTRICT scratch_space) {
41
389k
  static_assert(LF_ROWS == ROWS,
42
389k
                "ReinterpretingDCT should only be called with LF == N");
43
389k
  static_assert(LF_COLS == COLS,
44
389k
                "ReinterpretingDCT should only be called with LF == N");
45
389k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
389k
                                 scratch_space);
47
389k
  if (ROWS < COLS) {
48
0
    for (size_t y = 0; y < LF_ROWS; y++) {
49
0
      for (size_t x = 0; x < LF_COLS; x++) {
50
0
        output[y * output_stride + x] =
51
0
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
0
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
0
      }
54
0
    }
55
389k
  } else {
56
1.94M
    for (size_t y = 0; y < LF_COLS; y++) {
57
7.78M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
6.22M
        output[y * output_stride + x] =
59
6.22M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
6.22M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
6.22M
      }
62
1.55M
    }
63
389k
  }
64
389k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
25.5k
                                  float* JXL_RESTRICT scratch_space) {
41
25.5k
  static_assert(LF_ROWS == ROWS,
42
25.5k
                "ReinterpretingDCT should only be called with LF == N");
43
25.5k
  static_assert(LF_COLS == COLS,
44
25.5k
                "ReinterpretingDCT should only be called with LF == N");
45
25.5k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
25.5k
                                 scratch_space);
47
25.5k
  if (ROWS < COLS) {
48
0
    for (size_t y = 0; y < LF_ROWS; y++) {
49
0
      for (size_t x = 0; x < LF_COLS; x++) {
50
0
        output[y * output_stride + x] =
51
0
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
0
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
0
      }
54
0
    }
55
25.5k
  } else {
56
127k
    for (size_t y = 0; y < LF_COLS; y++) {
57
920k
      for (size_t x = 0; x < LF_ROWS; x++) {
58
817k
        output[y * output_stride + x] =
59
817k
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
817k
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
817k
      }
62
102k
    }
63
25.5k
  }
64
25.5k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
24.8k
                                  float* JXL_RESTRICT scratch_space) {
41
24.8k
  static_assert(LF_ROWS == ROWS,
42
24.8k
                "ReinterpretingDCT should only be called with LF == N");
43
24.8k
  static_assert(LF_COLS == COLS,
44
24.8k
                "ReinterpretingDCT should only be called with LF == N");
45
24.8k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
24.8k
                                 scratch_space);
47
24.8k
  if (ROWS < COLS) {
48
124k
    for (size_t y = 0; y < LF_ROWS; y++) {
49
896k
      for (size_t x = 0; x < LF_COLS; x++) {
50
796k
        output[y * output_stride + x] =
51
796k
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
796k
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
796k
      }
54
99.5k
    }
55
24.8k
  } else {
56
0
    for (size_t y = 0; y < LF_COLS; y++) {
57
0
      for (size_t x = 0; x < LF_ROWS; x++) {
58
0
        output[y * output_stride + x] =
59
0
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
0
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
0
      }
62
0
    }
63
0
  }
64
24.8k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
207k
                                  float* JXL_RESTRICT scratch_space) {
41
207k
  static_assert(LF_ROWS == ROWS,
42
207k
                "ReinterpretingDCT should only be called with LF == N");
43
207k
  static_assert(LF_COLS == COLS,
44
207k
                "ReinterpretingDCT should only be called with LF == N");
45
207k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
207k
                                 scratch_space);
47
207k
  if (ROWS < COLS) {
48
0
    for (size_t y = 0; y < LF_ROWS; y++) {
49
0
      for (size_t x = 0; x < LF_COLS; x++) {
50
0
        output[y * output_stride + x] =
51
0
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
0
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
0
      }
54
0
    }
55
207k
  } else {
56
1.86M
    for (size_t y = 0; y < LF_COLS; y++) {
57
14.9M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
13.2M
        output[y * output_stride + x] =
59
13.2M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
13.2M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
13.2M
      }
62
1.65M
    }
63
207k
  }
64
207k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
3
                                  float* JXL_RESTRICT scratch_space) {
41
3
  static_assert(LF_ROWS == ROWS,
42
3
                "ReinterpretingDCT should only be called with LF == N");
43
3
  static_assert(LF_COLS == COLS,
44
3
                "ReinterpretingDCT should only be called with LF == N");
45
3
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
3
                                 scratch_space);
47
3
  if (ROWS < COLS) {
48
0
    for (size_t y = 0; y < LF_ROWS; y++) {
49
0
      for (size_t x = 0; x < LF_COLS; x++) {
50
0
        output[y * output_stride + x] =
51
0
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
0
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
0
      }
54
0
    }
55
3
  } else {
56
27
    for (size_t y = 0; y < LF_COLS; y++) {
57
408
      for (size_t x = 0; x < LF_ROWS; x++) {
58
384
        output[y * output_stride + x] =
59
384
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
384
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
384
      }
62
24
    }
63
3
  }
64
3
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
3
                                  float* JXL_RESTRICT scratch_space) {
41
3
  static_assert(LF_ROWS == ROWS,
42
3
                "ReinterpretingDCT should only be called with LF == N");
43
3
  static_assert(LF_COLS == COLS,
44
3
                "ReinterpretingDCT should only be called with LF == N");
45
3
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
3
                                 scratch_space);
47
3
  if (ROWS < COLS) {
48
27
    for (size_t y = 0; y < LF_ROWS; y++) {
49
408
      for (size_t x = 0; x < LF_COLS; x++) {
50
384
        output[y * output_stride + x] =
51
384
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
384
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
384
      }
54
24
    }
55
3
  } else {
56
0
    for (size_t y = 0; y < LF_COLS; y++) {
57
0
      for (size_t x = 0; x < LF_ROWS; x++) {
58
0
        output[y * output_stride + x] =
59
0
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
0
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
0
      }
62
0
    }
63
0
  }
64
3
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Line
Count
Source
40
18
                                  float* JXL_RESTRICT scratch_space) {
41
18
  static_assert(LF_ROWS == ROWS,
42
18
                "ReinterpretingDCT should only be called with LF == N");
43
18
  static_assert(LF_COLS == COLS,
44
18
                "ReinterpretingDCT should only be called with LF == N");
45
18
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
18
                                 scratch_space);
47
18
  if (ROWS < COLS) {
48
0
    for (size_t y = 0; y < LF_ROWS; y++) {
49
0
      for (size_t x = 0; x < LF_COLS; x++) {
50
0
        output[y * output_stride + x] =
51
0
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
0
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
0
      }
54
0
    }
55
18
  } else {
56
306
    for (size_t y = 0; y < LF_COLS; y++) {
57
4.89k
      for (size_t x = 0; x < LF_ROWS; x++) {
58
4.60k
        output[y * output_stride + x] =
59
4.60k
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
4.60k
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
4.60k
      }
62
288
    }
63
18
  }
64
18
}
Unexecuted instantiation: dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*, float*)
65
66
template <size_t S>
67
71.8M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
71.8M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
71.8M
  static_assert(S % 2 == 0, "S should be even");
70
71.8M
  float temp[kDCTBlockSize];
71
71.8M
  constexpr size_t num_2x2 = S / 2;
72
239M
  for (size_t y = 0; y < num_2x2; y++) {
73
670M
    for (size_t x = 0; x < num_2x2; x++) {
74
503M
      float c00 = block[y * kBlockDim + x];
75
503M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
503M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
503M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
503M
      float r00 = c00 + c01 + c10 + c11;
79
503M
      float r01 = c00 + c01 - c10 - c11;
80
503M
      float r10 = c00 - c01 + c10 - c11;
81
503M
      float r11 = c00 - c01 - c10 + c11;
82
503M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
503M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
503M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
503M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
503M
    }
87
167M
  }
88
407M
  for (size_t y = 0; y < S; y++) {
89
2.34G
    for (size_t x = 0; x < S; x++) {
90
2.01G
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
2.01G
    }
92
335M
  }
93
71.8M
}
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
16.2M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
16.2M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
16.2M
  static_assert(S % 2 == 0, "S should be even");
70
16.2M
  float temp[kDCTBlockSize];
71
16.2M
  constexpr size_t num_2x2 = S / 2;
72
32.5M
  for (size_t y = 0; y < num_2x2; y++) {
73
32.5M
    for (size_t x = 0; x < num_2x2; x++) {
74
16.2M
      float c00 = block[y * kBlockDim + x];
75
16.2M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
16.2M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
16.2M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
16.2M
      float r00 = c00 + c01 + c10 + c11;
79
16.2M
      float r01 = c00 + c01 - c10 - c11;
80
16.2M
      float r10 = c00 - c01 + c10 - c11;
81
16.2M
      float r11 = c00 - c01 - c10 + c11;
82
16.2M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
16.2M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
16.2M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
16.2M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
16.2M
    }
87
16.2M
  }
88
48.8M
  for (size_t y = 0; y < S; y++) {
89
97.7M
    for (size_t x = 0; x < S; x++) {
90
65.1M
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
65.1M
    }
92
32.5M
  }
93
16.2M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
16.2M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
16.2M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
16.2M
  static_assert(S % 2 == 0, "S should be even");
70
16.2M
  float temp[kDCTBlockSize];
71
16.2M
  constexpr size_t num_2x2 = S / 2;
72
48.8M
  for (size_t y = 0; y < num_2x2; y++) {
73
97.7M
    for (size_t x = 0; x < num_2x2; x++) {
74
65.1M
      float c00 = block[y * kBlockDim + x];
75
65.1M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
65.1M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
65.1M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
65.1M
      float r00 = c00 + c01 + c10 + c11;
79
65.1M
      float r01 = c00 + c01 - c10 - c11;
80
65.1M
      float r10 = c00 - c01 + c10 - c11;
81
65.1M
      float r11 = c00 - c01 - c10 + c11;
82
65.1M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
65.1M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
65.1M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
65.1M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
65.1M
    }
87
32.5M
  }
88
81.4M
  for (size_t y = 0; y < S; y++) {
89
325M
    for (size_t x = 0; x < S; x++) {
90
260M
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
260M
    }
92
65.1M
  }
93
16.2M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Line
Count
Source
67
16.2M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
16.2M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
16.2M
  static_assert(S % 2 == 0, "S should be even");
70
16.2M
  float temp[kDCTBlockSize];
71
16.2M
  constexpr size_t num_2x2 = S / 2;
72
81.4M
  for (size_t y = 0; y < num_2x2; y++) {
73
325M
    for (size_t x = 0; x < num_2x2; x++) {
74
260M
      float c00 = block[y * kBlockDim + x];
75
260M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
260M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
260M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
260M
      float r00 = c00 + c01 + c10 + c11;
79
260M
      float r01 = c00 + c01 - c10 - c11;
80
260M
      float r10 = c00 - c01 + c10 - c11;
81
260M
      float r11 = c00 - c01 - c10 + c11;
82
260M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
260M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
260M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
260M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
260M
    }
87
65.1M
  }
88
146M
  for (size_t y = 0; y < S; y++) {
89
1.17G
    for (size_t x = 0; x < S; x++) {
90
1.04G
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
1.04G
    }
92
130M
  }
93
16.2M
}
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
7.66M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
7.66M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
7.66M
  static_assert(S % 2 == 0, "S should be even");
70
7.66M
  float temp[kDCTBlockSize];
71
7.66M
  constexpr size_t num_2x2 = S / 2;
72
15.3M
  for (size_t y = 0; y < num_2x2; y++) {
73
15.3M
    for (size_t x = 0; x < num_2x2; x++) {
74
7.66M
      float c00 = block[y * kBlockDim + x];
75
7.66M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
7.66M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
7.66M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
7.66M
      float r00 = c00 + c01 + c10 + c11;
79
7.66M
      float r01 = c00 + c01 - c10 - c11;
80
7.66M
      float r10 = c00 - c01 + c10 - c11;
81
7.66M
      float r11 = c00 - c01 - c10 + c11;
82
7.66M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
7.66M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
7.66M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
7.66M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
7.66M
    }
87
7.66M
  }
88
22.9M
  for (size_t y = 0; y < S; y++) {
89
45.9M
    for (size_t x = 0; x < S; x++) {
90
30.6M
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
30.6M
    }
92
15.3M
  }
93
7.66M
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
7.66M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
7.66M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
7.66M
  static_assert(S % 2 == 0, "S should be even");
70
7.66M
  float temp[kDCTBlockSize];
71
7.66M
  constexpr size_t num_2x2 = S / 2;
72
22.9M
  for (size_t y = 0; y < num_2x2; y++) {
73
45.9M
    for (size_t x = 0; x < num_2x2; x++) {
74
30.6M
      float c00 = block[y * kBlockDim + x];
75
30.6M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
30.6M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
30.6M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
30.6M
      float r00 = c00 + c01 + c10 + c11;
79
30.6M
      float r01 = c00 + c01 - c10 - c11;
80
30.6M
      float r10 = c00 - c01 + c10 - c11;
81
30.6M
      float r11 = c00 - c01 - c10 + c11;
82
30.6M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
30.6M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
30.6M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
30.6M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
30.6M
    }
87
15.3M
  }
88
38.3M
  for (size_t y = 0; y < S; y++) {
89
153M
    for (size_t x = 0; x < S; x++) {
90
122M
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
122M
    }
92
30.6M
  }
93
7.66M
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Line
Count
Source
67
7.66M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
7.66M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
7.66M
  static_assert(S % 2 == 0, "S should be even");
70
7.66M
  float temp[kDCTBlockSize];
71
7.66M
  constexpr size_t num_2x2 = S / 2;
72
38.3M
  for (size_t y = 0; y < num_2x2; y++) {
73
153M
    for (size_t x = 0; x < num_2x2; x++) {
74
122M
      float c00 = block[y * kBlockDim + x];
75
122M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
122M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
122M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
122M
      float r00 = c00 + c01 + c10 + c11;
79
122M
      float r01 = c00 + c01 - c10 - c11;
80
122M
      float r10 = c00 - c01 + c10 - c11;
81
122M
      float r11 = c00 - c01 - c10 + c11;
82
122M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
122M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
122M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
122M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
122M
    }
87
30.6M
  }
88
68.9M
  for (size_t y = 0; y < S; y++) {
89
551M
    for (size_t x = 0; x < S; x++) {
90
490M
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
490M
    }
92
61.3M
  }
93
7.66M
}
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
94
95
66.3M
void AFVIDCT4x4(const float* JXL_RESTRICT coeffs, float* JXL_RESTRICT pixels) {
96
66.3M
  HWY_ALIGN static constexpr float k4x4AFVBasis[16][16] = {
97
66.3M
      {
98
66.3M
          0.25,
99
66.3M
          0.25,
100
66.3M
          0.25,
101
66.3M
          0.25,
102
66.3M
          0.25,
103
66.3M
          0.25,
104
66.3M
          0.25,
105
66.3M
          0.25,
106
66.3M
          0.25,
107
66.3M
          0.25,
108
66.3M
          0.25,
109
66.3M
          0.25,
110
66.3M
          0.25,
111
66.3M
          0.25,
112
66.3M
          0.25,
113
66.3M
          0.25,
114
66.3M
      },
115
66.3M
      {
116
66.3M
          0.876902929799142f,
117
66.3M
          0.2206518106944235f,
118
66.3M
          -0.10140050393753763f,
119
66.3M
          -0.1014005039375375f,
120
66.3M
          0.2206518106944236f,
121
66.3M
          -0.10140050393753777f,
122
66.3M
          -0.10140050393753772f,
123
66.3M
          -0.10140050393753763f,
124
66.3M
          -0.10140050393753758f,
125
66.3M
          -0.10140050393753769f,
126
66.3M
          -0.1014005039375375f,
127
66.3M
          -0.10140050393753768f,
128
66.3M
          -0.10140050393753768f,
129
66.3M
          -0.10140050393753759f,
130
66.3M
          -0.10140050393753763f,
131
66.3M
          -0.10140050393753741f,
132
66.3M
      },
133
66.3M
      {
134
66.3M
          0.0,
135
66.3M
          0.0,
136
66.3M
          0.40670075830260755f,
137
66.3M
          0.44444816619734445f,
138
66.3M
          0.0,
139
66.3M
          0.0,
140
66.3M
          0.19574399372042936f,
141
66.3M
          0.2929100136981264f,
142
66.3M
          -0.40670075830260716f,
143
66.3M
          -0.19574399372042872f,
144
66.3M
          0.0,
145
66.3M
          0.11379074460448091f,
146
66.3M
          -0.44444816619734384f,
147
66.3M
          -0.29291001369812636f,
148
66.3M
          -0.1137907446044814f,
149
66.3M
          0.0,
150
66.3M
      },
151
66.3M
      {
152
66.3M
          0.0,
153
66.3M
          0.0,
154
66.3M
          -0.21255748058288748f,
155
66.3M
          0.3085497062849767f,
156
66.3M
          0.0,
157
66.3M
          0.4706702258572536f,
158
66.3M
          -0.1621205195722993f,
159
66.3M
          0.0,
160
66.3M
          -0.21255748058287047f,
161
66.3M
          -0.16212051957228327f,
162
66.3M
          -0.47067022585725277f,
163
66.3M
          -0.1464291867126764f,
164
66.3M
          0.3085497062849487f,
165
66.3M
          0.0,
166
66.3M
          -0.14642918671266536f,
167
66.3M
          0.4251149611657548f,
168
66.3M
      },
169
66.3M
      {
170
66.3M
          0.0,
171
66.3M
          -0.7071067811865474f,
172
66.3M
          0.0,
173
66.3M
          0.0,
174
66.3M
          0.7071067811865476f,
175
66.3M
          0.0,
176
66.3M
          0.0,
177
66.3M
          0.0,
178
66.3M
          0.0,
179
66.3M
          0.0,
180
66.3M
          0.0,
181
66.3M
          0.0,
182
66.3M
          0.0,
183
66.3M
          0.0,
184
66.3M
          0.0,
185
66.3M
          0.0,
186
66.3M
      },
187
66.3M
      {
188
66.3M
          -0.4105377591765233f,
189
66.3M
          0.6235485373547691f,
190
66.3M
          -0.06435071657946274f,
191
66.3M
          -0.06435071657946266f,
192
66.3M
          0.6235485373547694f,
193
66.3M
          -0.06435071657946284f,
194
66.3M
          -0.0643507165794628f,
195
66.3M
          -0.06435071657946274f,
196
66.3M
          -0.06435071657946272f,
197
66.3M
          -0.06435071657946279f,
198
66.3M
          -0.06435071657946266f,
199
66.3M
          -0.06435071657946277f,
200
66.3M
          -0.06435071657946277f,
201
66.3M
          -0.06435071657946273f,
202
66.3M
          -0.06435071657946274f,
203
66.3M
          -0.0643507165794626f,
204
66.3M
      },
205
66.3M
      {
206
66.3M
          0.0,
207
66.3M
          0.0,
208
66.3M
          -0.4517556589999482f,
209
66.3M
          0.15854503551840063f,
210
66.3M
          0.0,
211
66.3M
          -0.04038515160822202f,
212
66.3M
          0.0074182263792423875f,
213
66.3M
          0.39351034269210167f,
214
66.3M
          -0.45175565899994635f,
215
66.3M
          0.007418226379244351f,
216
66.3M
          0.1107416575309343f,
217
66.3M
          0.08298163094882051f,
218
66.3M
          0.15854503551839705f,
219
66.3M
          0.3935103426921022f,
220
66.3M
          0.0829816309488214f,
221
66.3M
          -0.45175565899994796f,
222
66.3M
      },
223
66.3M
      {
224
66.3M
          0.0,
225
66.3M
          0.0,
226
66.3M
          -0.304684750724869f,
227
66.3M
          0.5112616136591823f,
228
66.3M
          0.0,
229
66.3M
          0.0,
230
66.3M
          -0.290480129728998f,
231
66.3M
          -0.06578701549142804f,
232
66.3M
          0.304684750724884f,
233
66.3M
          0.2904801297290076f,
234
66.3M
          0.0,
235
66.3M
          -0.23889773523344604f,
236
66.3M
          -0.5112616136592012f,
237
66.3M
          0.06578701549142545f,
238
66.3M
          0.23889773523345467f,
239
66.3M
          0.0,
240
66.3M
      },
241
66.3M
      {
242
66.3M
          0.0,
243
66.3M
          0.0,
244
66.3M
          0.3017929516615495f,
245
66.3M
          0.25792362796341184f,
246
66.3M
          0.0,
247
66.3M
          0.16272340142866204f,
248
66.3M
          0.09520022653475037f,
249
66.3M
          0.0,
250
66.3M
          0.3017929516615503f,
251
66.3M
          0.09520022653475055f,
252
66.3M
          -0.16272340142866173f,
253
66.3M
          -0.35312385449816297f,
254
66.3M
          0.25792362796341295f,
255
66.3M
          0.0,
256
66.3M
          -0.3531238544981624f,
257
66.3M
          -0.6035859033230976f,
258
66.3M
      },
259
66.3M
      {
260
66.3M
          0.0,
261
66.3M
          0.0,
262
66.3M
          0.40824829046386274f,
263
66.3M
          0.0,
264
66.3M
          0.0,
265
66.3M
          0.0,
266
66.3M
          0.0,
267
66.3M
          -0.4082482904638628f,
268
66.3M
          -0.4082482904638635f,
269
66.3M
          0.0,
270
66.3M
          0.0,
271
66.3M
          -0.40824829046386296f,
272
66.3M
          0.0,
273
66.3M
          0.4082482904638634f,
274
66.3M
          0.408248290463863f,
275
66.3M
          0.0,
276
66.3M
      },
277
66.3M
      {
278
66.3M
          0.0,
279
66.3M
          0.0,
280
66.3M
          0.1747866975480809f,
281
66.3M
          0.0812611176717539f,
282
66.3M
          0.0,
283
66.3M
          0.0,
284
66.3M
          -0.3675398009862027f,
285
66.3M
          -0.307882213957909f,
286
66.3M
          -0.17478669754808135f,
287
66.3M
          0.3675398009862011f,
288
66.3M
          0.0,
289
66.3M
          0.4826689115059883f,
290
66.3M
          -0.08126111767175039f,
291
66.3M
          0.30788221395790305f,
292
66.3M
          -0.48266891150598584f,
293
66.3M
          0.0,
294
66.3M
      },
295
66.3M
      {
296
66.3M
          0.0,
297
66.3M
          0.0,
298
66.3M
          -0.21105601049335784f,
299
66.3M
          0.18567180916109802f,
300
66.3M
          0.0,
301
66.3M
          0.0,
302
66.3M
          0.49215859013738733f,
303
66.3M
          -0.38525013709251915f,
304
66.3M
          0.21105601049335806f,
305
66.3M
          -0.49215859013738905f,
306
66.3M
          0.0,
307
66.3M
          0.17419412659916217f,
308
66.3M
          -0.18567180916109904f,
309
66.3M
          0.3852501370925211f,
310
66.3M
          -0.1741941265991621f,
311
66.3M
          0.0,
312
66.3M
      },
313
66.3M
      {
314
66.3M
          0.0,
315
66.3M
          0.0,
316
66.3M
          -0.14266084808807264f,
317
66.3M
          -0.3416446842253372f,
318
66.3M
          0.0,
319
66.3M
          0.7367497537172237f,
320
66.3M
          0.24627107722075148f,
321
66.3M
          -0.08574019035519306f,
322
66.3M
          -0.14266084808807344f,
323
66.3M
          0.24627107722075137f,
324
66.3M
          0.14883399227113567f,
325
66.3M
          -0.04768680350229251f,
326
66.3M
          -0.3416446842253373f,
327
66.3M
          -0.08574019035519267f,
328
66.3M
          -0.047686803502292804f,
329
66.3M
          -0.14266084808807242f,
330
66.3M
      },
331
66.3M
      {
332
66.3M
          0.0,
333
66.3M
          0.0,
334
66.3M
          -0.13813540350758585f,
335
66.3M
          0.3302282550303788f,
336
66.3M
          0.0,
337
66.3M
          0.08755115000587084f,
338
66.3M
          -0.07946706605909573f,
339
66.3M
          -0.4613374887461511f,
340
66.3M
          -0.13813540350758294f,
341
66.3M
          -0.07946706605910261f,
342
66.3M
          0.49724647109535086f,
343
66.3M
          0.12538059448563663f,
344
66.3M
          0.3302282550303805f,
345
66.3M
          -0.4613374887461554f,
346
66.3M
          0.12538059448564315f,
347
66.3M
          -0.13813540350758452f,
348
66.3M
      },
349
66.3M
      {
350
66.3M
          0.0,
351
66.3M
          0.0,
352
66.3M
          -0.17437602599651067f,
353
66.3M
          0.0702790691196284f,
354
66.3M
          0.0,
355
66.3M
          -0.2921026642334881f,
356
66.3M
          0.3623817333531167f,
357
66.3M
          0.0,
358
66.3M
          -0.1743760259965108f,
359
66.3M
          0.36238173335311646f,
360
66.3M
          0.29210266423348785f,
361
66.3M
          -0.4326608024727445f,
362
66.3M
          0.07027906911962818f,
363
66.3M
          0.0,
364
66.3M
          -0.4326608024727457f,
365
66.3M
          0.34875205199302267f,
366
66.3M
      },
367
66.3M
      {
368
66.3M
          0.0,
369
66.3M
          0.0,
370
66.3M
          0.11354987314994337f,
371
66.3M
          -0.07417504595810355f,
372
66.3M
          0.0,
373
66.3M
          0.19402893032594343f,
374
66.3M
          -0.435190496523228f,
375
66.3M
          0.21918684838857466f,
376
66.3M
          0.11354987314994257f,
377
66.3M
          -0.4351904965232251f,
378
66.3M
          0.5550443808910661f,
379
66.3M
          -0.25468277124066463f,
380
66.3M
          -0.07417504595810233f,
381
66.3M
          0.2191868483885728f,
382
66.3M
          -0.25468277124066413f,
383
66.3M
          0.1135498731499429f,
384
66.3M
      },
385
66.3M
  };
386
387
66.3M
  const HWY_CAPPED(float, 16) d;
388
198M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
389
132M
    auto pixel = Zero(d);
390
2.25G
    for (size_t j = 0; j < 16; j++) {
391
2.12G
      auto cf = Set(d, coeffs[j]);
392
2.12G
      auto basis = Load(d, k4x4AFVBasis[j] + i);
393
2.12G
      pixel = MulAdd(cf, basis, pixel);
394
2.12G
    }
395
132M
    Store(pixel, d, pixels + i);
396
132M
  }
397
66.3M
}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
Unexecuted instantiation: enc_group.cc:jxl::N_AVX2::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
Line
Count
Source
95
65.1M
void AFVIDCT4x4(const float* JXL_RESTRICT coeffs, float* JXL_RESTRICT pixels) {
96
65.1M
  HWY_ALIGN static constexpr float k4x4AFVBasis[16][16] = {
97
65.1M
      {
98
65.1M
          0.25,
99
65.1M
          0.25,
100
65.1M
          0.25,
101
65.1M
          0.25,
102
65.1M
          0.25,
103
65.1M
          0.25,
104
65.1M
          0.25,
105
65.1M
          0.25,
106
65.1M
          0.25,
107
65.1M
          0.25,
108
65.1M
          0.25,
109
65.1M
          0.25,
110
65.1M
          0.25,
111
65.1M
          0.25,
112
65.1M
          0.25,
113
65.1M
          0.25,
114
65.1M
      },
115
65.1M
      {
116
65.1M
          0.876902929799142f,
117
65.1M
          0.2206518106944235f,
118
65.1M
          -0.10140050393753763f,
119
65.1M
          -0.1014005039375375f,
120
65.1M
          0.2206518106944236f,
121
65.1M
          -0.10140050393753777f,
122
65.1M
          -0.10140050393753772f,
123
65.1M
          -0.10140050393753763f,
124
65.1M
          -0.10140050393753758f,
125
65.1M
          -0.10140050393753769f,
126
65.1M
          -0.1014005039375375f,
127
65.1M
          -0.10140050393753768f,
128
65.1M
          -0.10140050393753768f,
129
65.1M
          -0.10140050393753759f,
130
65.1M
          -0.10140050393753763f,
131
65.1M
          -0.10140050393753741f,
132
65.1M
      },
133
65.1M
      {
134
65.1M
          0.0,
135
65.1M
          0.0,
136
65.1M
          0.40670075830260755f,
137
65.1M
          0.44444816619734445f,
138
65.1M
          0.0,
139
65.1M
          0.0,
140
65.1M
          0.19574399372042936f,
141
65.1M
          0.2929100136981264f,
142
65.1M
          -0.40670075830260716f,
143
65.1M
          -0.19574399372042872f,
144
65.1M
          0.0,
145
65.1M
          0.11379074460448091f,
146
65.1M
          -0.44444816619734384f,
147
65.1M
          -0.29291001369812636f,
148
65.1M
          -0.1137907446044814f,
149
65.1M
          0.0,
150
65.1M
      },
151
65.1M
      {
152
65.1M
          0.0,
153
65.1M
          0.0,
154
65.1M
          -0.21255748058288748f,
155
65.1M
          0.3085497062849767f,
156
65.1M
          0.0,
157
65.1M
          0.4706702258572536f,
158
65.1M
          -0.1621205195722993f,
159
65.1M
          0.0,
160
65.1M
          -0.21255748058287047f,
161
65.1M
          -0.16212051957228327f,
162
65.1M
          -0.47067022585725277f,
163
65.1M
          -0.1464291867126764f,
164
65.1M
          0.3085497062849487f,
165
65.1M
          0.0,
166
65.1M
          -0.14642918671266536f,
167
65.1M
          0.4251149611657548f,
168
65.1M
      },
169
65.1M
      {
170
65.1M
          0.0,
171
65.1M
          -0.7071067811865474f,
172
65.1M
          0.0,
173
65.1M
          0.0,
174
65.1M
          0.7071067811865476f,
175
65.1M
          0.0,
176
65.1M
          0.0,
177
65.1M
          0.0,
178
65.1M
          0.0,
179
65.1M
          0.0,
180
65.1M
          0.0,
181
65.1M
          0.0,
182
65.1M
          0.0,
183
65.1M
          0.0,
184
65.1M
          0.0,
185
65.1M
          0.0,
186
65.1M
      },
187
65.1M
      {
188
65.1M
          -0.4105377591765233f,
189
65.1M
          0.6235485373547691f,
190
65.1M
          -0.06435071657946274f,
191
65.1M
          -0.06435071657946266f,
192
65.1M
          0.6235485373547694f,
193
65.1M
          -0.06435071657946284f,
194
65.1M
          -0.0643507165794628f,
195
65.1M
          -0.06435071657946274f,
196
65.1M
          -0.06435071657946272f,
197
65.1M
          -0.06435071657946279f,
198
65.1M
          -0.06435071657946266f,
199
65.1M
          -0.06435071657946277f,
200
65.1M
          -0.06435071657946277f,
201
65.1M
          -0.06435071657946273f,
202
65.1M
          -0.06435071657946274f,
203
65.1M
          -0.0643507165794626f,
204
65.1M
      },
205
65.1M
      {
206
65.1M
          0.0,
207
65.1M
          0.0,
208
65.1M
          -0.4517556589999482f,
209
65.1M
          0.15854503551840063f,
210
65.1M
          0.0,
211
65.1M
          -0.04038515160822202f,
212
65.1M
          0.0074182263792423875f,
213
65.1M
          0.39351034269210167f,
214
65.1M
          -0.45175565899994635f,
215
65.1M
          0.007418226379244351f,
216
65.1M
          0.1107416575309343f,
217
65.1M
          0.08298163094882051f,
218
65.1M
          0.15854503551839705f,
219
65.1M
          0.3935103426921022f,
220
65.1M
          0.0829816309488214f,
221
65.1M
          -0.45175565899994796f,
222
65.1M
      },
223
65.1M
      {
224
65.1M
          0.0,
225
65.1M
          0.0,
226
65.1M
          -0.304684750724869f,
227
65.1M
          0.5112616136591823f,
228
65.1M
          0.0,
229
65.1M
          0.0,
230
65.1M
          -0.290480129728998f,
231
65.1M
          -0.06578701549142804f,
232
65.1M
          0.304684750724884f,
233
65.1M
          0.2904801297290076f,
234
65.1M
          0.0,
235
65.1M
          -0.23889773523344604f,
236
65.1M
          -0.5112616136592012f,
237
65.1M
          0.06578701549142545f,
238
65.1M
          0.23889773523345467f,
239
65.1M
          0.0,
240
65.1M
      },
241
65.1M
      {
242
65.1M
          0.0,
243
65.1M
          0.0,
244
65.1M
          0.3017929516615495f,
245
65.1M
          0.25792362796341184f,
246
65.1M
          0.0,
247
65.1M
          0.16272340142866204f,
248
65.1M
          0.09520022653475037f,
249
65.1M
          0.0,
250
65.1M
          0.3017929516615503f,
251
65.1M
          0.09520022653475055f,
252
65.1M
          -0.16272340142866173f,
253
65.1M
          -0.35312385449816297f,
254
65.1M
          0.25792362796341295f,
255
65.1M
          0.0,
256
65.1M
          -0.3531238544981624f,
257
65.1M
          -0.6035859033230976f,
258
65.1M
      },
259
65.1M
      {
260
65.1M
          0.0,
261
65.1M
          0.0,
262
65.1M
          0.40824829046386274f,
263
65.1M
          0.0,
264
65.1M
          0.0,
265
65.1M
          0.0,
266
65.1M
          0.0,
267
65.1M
          -0.4082482904638628f,
268
65.1M
          -0.4082482904638635f,
269
65.1M
          0.0,
270
65.1M
          0.0,
271
65.1M
          -0.40824829046386296f,
272
65.1M
          0.0,
273
65.1M
          0.4082482904638634f,
274
65.1M
          0.408248290463863f,
275
65.1M
          0.0,
276
65.1M
      },
277
65.1M
      {
278
65.1M
          0.0,
279
65.1M
          0.0,
280
65.1M
          0.1747866975480809f,
281
65.1M
          0.0812611176717539f,
282
65.1M
          0.0,
283
65.1M
          0.0,
284
65.1M
          -0.3675398009862027f,
285
65.1M
          -0.307882213957909f,
286
65.1M
          -0.17478669754808135f,
287
65.1M
          0.3675398009862011f,
288
65.1M
          0.0,
289
65.1M
          0.4826689115059883f,
290
65.1M
          -0.08126111767175039f,
291
65.1M
          0.30788221395790305f,
292
65.1M
          -0.48266891150598584f,
293
65.1M
          0.0,
294
65.1M
      },
295
65.1M
      {
296
65.1M
          0.0,
297
65.1M
          0.0,
298
65.1M
          -0.21105601049335784f,
299
65.1M
          0.18567180916109802f,
300
65.1M
          0.0,
301
65.1M
          0.0,
302
65.1M
          0.49215859013738733f,
303
65.1M
          -0.38525013709251915f,
304
65.1M
          0.21105601049335806f,
305
65.1M
          -0.49215859013738905f,
306
65.1M
          0.0,
307
65.1M
          0.17419412659916217f,
308
65.1M
          -0.18567180916109904f,
309
65.1M
          0.3852501370925211f,
310
65.1M
          -0.1741941265991621f,
311
65.1M
          0.0,
312
65.1M
      },
313
65.1M
      {
314
65.1M
          0.0,
315
65.1M
          0.0,
316
65.1M
          -0.14266084808807264f,
317
65.1M
          -0.3416446842253372f,
318
65.1M
          0.0,
319
65.1M
          0.7367497537172237f,
320
65.1M
          0.24627107722075148f,
321
65.1M
          -0.08574019035519306f,
322
65.1M
          -0.14266084808807344f,
323
65.1M
          0.24627107722075137f,
324
65.1M
          0.14883399227113567f,
325
65.1M
          -0.04768680350229251f,
326
65.1M
          -0.3416446842253373f,
327
65.1M
          -0.08574019035519267f,
328
65.1M
          -0.047686803502292804f,
329
65.1M
          -0.14266084808807242f,
330
65.1M
      },
331
65.1M
      {
332
65.1M
          0.0,
333
65.1M
          0.0,
334
65.1M
          -0.13813540350758585f,
335
65.1M
          0.3302282550303788f,
336
65.1M
          0.0,
337
65.1M
          0.08755115000587084f,
338
65.1M
          -0.07946706605909573f,
339
65.1M
          -0.4613374887461511f,
340
65.1M
          -0.13813540350758294f,
341
65.1M
          -0.07946706605910261f,
342
65.1M
          0.49724647109535086f,
343
65.1M
          0.12538059448563663f,
344
65.1M
          0.3302282550303805f,
345
65.1M
          -0.4613374887461554f,
346
65.1M
          0.12538059448564315f,
347
65.1M
          -0.13813540350758452f,
348
65.1M
      },
349
65.1M
      {
350
65.1M
          0.0,
351
65.1M
          0.0,
352
65.1M
          -0.17437602599651067f,
353
65.1M
          0.0702790691196284f,
354
65.1M
          0.0,
355
65.1M
          -0.2921026642334881f,
356
65.1M
          0.3623817333531167f,
357
65.1M
          0.0,
358
65.1M
          -0.1743760259965108f,
359
65.1M
          0.36238173335311646f,
360
65.1M
          0.29210266423348785f,
361
65.1M
          -0.4326608024727445f,
362
65.1M
          0.07027906911962818f,
363
65.1M
          0.0,
364
65.1M
          -0.4326608024727457f,
365
65.1M
          0.34875205199302267f,
366
65.1M
      },
367
65.1M
      {
368
65.1M
          0.0,
369
65.1M
          0.0,
370
65.1M
          0.11354987314994337f,
371
65.1M
          -0.07417504595810355f,
372
65.1M
          0.0,
373
65.1M
          0.19402893032594343f,
374
65.1M
          -0.435190496523228f,
375
65.1M
          0.21918684838857466f,
376
65.1M
          0.11354987314994257f,
377
65.1M
          -0.4351904965232251f,
378
65.1M
          0.5550443808910661f,
379
65.1M
          -0.25468277124066463f,
380
65.1M
          -0.07417504595810233f,
381
65.1M
          0.2191868483885728f,
382
65.1M
          -0.25468277124066413f,
383
65.1M
          0.1135498731499429f,
384
65.1M
      },
385
65.1M
  };
386
387
65.1M
  const HWY_CAPPED(float, 16) d;
388
195M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
389
130M
    auto pixel = Zero(d);
390
2.21G
    for (size_t j = 0; j < 16; j++) {
391
2.08G
      auto cf = Set(d, coeffs[j]);
392
2.08G
      auto basis = Load(d, k4x4AFVBasis[j] + i);
393
2.08G
      pixel = MulAdd(cf, basis, pixel);
394
2.08G
    }
395
130M
    Store(pixel, d, pixels + i);
396
130M
  }
397
65.1M
}
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
Line
Count
Source
95
1.11M
void AFVIDCT4x4(const float* JXL_RESTRICT coeffs, float* JXL_RESTRICT pixels) {
96
1.11M
  HWY_ALIGN static constexpr float k4x4AFVBasis[16][16] = {
97
1.11M
      {
98
1.11M
          0.25,
99
1.11M
          0.25,
100
1.11M
          0.25,
101
1.11M
          0.25,
102
1.11M
          0.25,
103
1.11M
          0.25,
104
1.11M
          0.25,
105
1.11M
          0.25,
106
1.11M
          0.25,
107
1.11M
          0.25,
108
1.11M
          0.25,
109
1.11M
          0.25,
110
1.11M
          0.25,
111
1.11M
          0.25,
112
1.11M
          0.25,
113
1.11M
          0.25,
114
1.11M
      },
115
1.11M
      {
116
1.11M
          0.876902929799142f,
117
1.11M
          0.2206518106944235f,
118
1.11M
          -0.10140050393753763f,
119
1.11M
          -0.1014005039375375f,
120
1.11M
          0.2206518106944236f,
121
1.11M
          -0.10140050393753777f,
122
1.11M
          -0.10140050393753772f,
123
1.11M
          -0.10140050393753763f,
124
1.11M
          -0.10140050393753758f,
125
1.11M
          -0.10140050393753769f,
126
1.11M
          -0.1014005039375375f,
127
1.11M
          -0.10140050393753768f,
128
1.11M
          -0.10140050393753768f,
129
1.11M
          -0.10140050393753759f,
130
1.11M
          -0.10140050393753763f,
131
1.11M
          -0.10140050393753741f,
132
1.11M
      },
133
1.11M
      {
134
1.11M
          0.0,
135
1.11M
          0.0,
136
1.11M
          0.40670075830260755f,
137
1.11M
          0.44444816619734445f,
138
1.11M
          0.0,
139
1.11M
          0.0,
140
1.11M
          0.19574399372042936f,
141
1.11M
          0.2929100136981264f,
142
1.11M
          -0.40670075830260716f,
143
1.11M
          -0.19574399372042872f,
144
1.11M
          0.0,
145
1.11M
          0.11379074460448091f,
146
1.11M
          -0.44444816619734384f,
147
1.11M
          -0.29291001369812636f,
148
1.11M
          -0.1137907446044814f,
149
1.11M
          0.0,
150
1.11M
      },
151
1.11M
      {
152
1.11M
          0.0,
153
1.11M
          0.0,
154
1.11M
          -0.21255748058288748f,
155
1.11M
          0.3085497062849767f,
156
1.11M
          0.0,
157
1.11M
          0.4706702258572536f,
158
1.11M
          -0.1621205195722993f,
159
1.11M
          0.0,
160
1.11M
          -0.21255748058287047f,
161
1.11M
          -0.16212051957228327f,
162
1.11M
          -0.47067022585725277f,
163
1.11M
          -0.1464291867126764f,
164
1.11M
          0.3085497062849487f,
165
1.11M
          0.0,
166
1.11M
          -0.14642918671266536f,
167
1.11M
          0.4251149611657548f,
168
1.11M
      },
169
1.11M
      {
170
1.11M
          0.0,
171
1.11M
          -0.7071067811865474f,
172
1.11M
          0.0,
173
1.11M
          0.0,
174
1.11M
          0.7071067811865476f,
175
1.11M
          0.0,
176
1.11M
          0.0,
177
1.11M
          0.0,
178
1.11M
          0.0,
179
1.11M
          0.0,
180
1.11M
          0.0,
181
1.11M
          0.0,
182
1.11M
          0.0,
183
1.11M
          0.0,
184
1.11M
          0.0,
185
1.11M
          0.0,
186
1.11M
      },
187
1.11M
      {
188
1.11M
          -0.4105377591765233f,
189
1.11M
          0.6235485373547691f,
190
1.11M
          -0.06435071657946274f,
191
1.11M
          -0.06435071657946266f,
192
1.11M
          0.6235485373547694f,
193
1.11M
          -0.06435071657946284f,
194
1.11M
          -0.0643507165794628f,
195
1.11M
          -0.06435071657946274f,
196
1.11M
          -0.06435071657946272f,
197
1.11M
          -0.06435071657946279f,
198
1.11M
          -0.06435071657946266f,
199
1.11M
          -0.06435071657946277f,
200
1.11M
          -0.06435071657946277f,
201
1.11M
          -0.06435071657946273f,
202
1.11M
          -0.06435071657946274f,
203
1.11M
          -0.0643507165794626f,
204
1.11M
      },
205
1.11M
      {
206
1.11M
          0.0,
207
1.11M
          0.0,
208
1.11M
          -0.4517556589999482f,
209
1.11M
          0.15854503551840063f,
210
1.11M
          0.0,
211
1.11M
          -0.04038515160822202f,
212
1.11M
          0.0074182263792423875f,
213
1.11M
          0.39351034269210167f,
214
1.11M
          -0.45175565899994635f,
215
1.11M
          0.007418226379244351f,
216
1.11M
          0.1107416575309343f,
217
1.11M
          0.08298163094882051f,
218
1.11M
          0.15854503551839705f,
219
1.11M
          0.3935103426921022f,
220
1.11M
          0.0829816309488214f,
221
1.11M
          -0.45175565899994796f,
222
1.11M
      },
223
1.11M
      {
224
1.11M
          0.0,
225
1.11M
          0.0,
226
1.11M
          -0.304684750724869f,
227
1.11M
          0.5112616136591823f,
228
1.11M
          0.0,
229
1.11M
          0.0,
230
1.11M
          -0.290480129728998f,
231
1.11M
          -0.06578701549142804f,
232
1.11M
          0.304684750724884f,
233
1.11M
          0.2904801297290076f,
234
1.11M
          0.0,
235
1.11M
          -0.23889773523344604f,
236
1.11M
          -0.5112616136592012f,
237
1.11M
          0.06578701549142545f,
238
1.11M
          0.23889773523345467f,
239
1.11M
          0.0,
240
1.11M
      },
241
1.11M
      {
242
1.11M
          0.0,
243
1.11M
          0.0,
244
1.11M
          0.3017929516615495f,
245
1.11M
          0.25792362796341184f,
246
1.11M
          0.0,
247
1.11M
          0.16272340142866204f,
248
1.11M
          0.09520022653475037f,
249
1.11M
          0.0,
250
1.11M
          0.3017929516615503f,
251
1.11M
          0.09520022653475055f,
252
1.11M
          -0.16272340142866173f,
253
1.11M
          -0.35312385449816297f,
254
1.11M
          0.25792362796341295f,
255
1.11M
          0.0,
256
1.11M
          -0.3531238544981624f,
257
1.11M
          -0.6035859033230976f,
258
1.11M
      },
259
1.11M
      {
260
1.11M
          0.0,
261
1.11M
          0.0,
262
1.11M
          0.40824829046386274f,
263
1.11M
          0.0,
264
1.11M
          0.0,
265
1.11M
          0.0,
266
1.11M
          0.0,
267
1.11M
          -0.4082482904638628f,
268
1.11M
          -0.4082482904638635f,
269
1.11M
          0.0,
270
1.11M
          0.0,
271
1.11M
          -0.40824829046386296f,
272
1.11M
          0.0,
273
1.11M
          0.4082482904638634f,
274
1.11M
          0.408248290463863f,
275
1.11M
          0.0,
276
1.11M
      },
277
1.11M
      {
278
1.11M
          0.0,
279
1.11M
          0.0,
280
1.11M
          0.1747866975480809f,
281
1.11M
          0.0812611176717539f,
282
1.11M
          0.0,
283
1.11M
          0.0,
284
1.11M
          -0.3675398009862027f,
285
1.11M
          -0.307882213957909f,
286
1.11M
          -0.17478669754808135f,
287
1.11M
          0.3675398009862011f,
288
1.11M
          0.0,
289
1.11M
          0.4826689115059883f,
290
1.11M
          -0.08126111767175039f,
291
1.11M
          0.30788221395790305f,
292
1.11M
          -0.48266891150598584f,
293
1.11M
          0.0,
294
1.11M
      },
295
1.11M
      {
296
1.11M
          0.0,
297
1.11M
          0.0,
298
1.11M
          -0.21105601049335784f,
299
1.11M
          0.18567180916109802f,
300
1.11M
          0.0,
301
1.11M
          0.0,
302
1.11M
          0.49215859013738733f,
303
1.11M
          -0.38525013709251915f,
304
1.11M
          0.21105601049335806f,
305
1.11M
          -0.49215859013738905f,
306
1.11M
          0.0,
307
1.11M
          0.17419412659916217f,
308
1.11M
          -0.18567180916109904f,
309
1.11M
          0.3852501370925211f,
310
1.11M
          -0.1741941265991621f,
311
1.11M
          0.0,
312
1.11M
      },
313
1.11M
      {
314
1.11M
          0.0,
315
1.11M
          0.0,
316
1.11M
          -0.14266084808807264f,
317
1.11M
          -0.3416446842253372f,
318
1.11M
          0.0,
319
1.11M
          0.7367497537172237f,
320
1.11M
          0.24627107722075148f,
321
1.11M
          -0.08574019035519306f,
322
1.11M
          -0.14266084808807344f,
323
1.11M
          0.24627107722075137f,
324
1.11M
          0.14883399227113567f,
325
1.11M
          -0.04768680350229251f,
326
1.11M
          -0.3416446842253373f,
327
1.11M
          -0.08574019035519267f,
328
1.11M
          -0.047686803502292804f,
329
1.11M
          -0.14266084808807242f,
330
1.11M
      },
331
1.11M
      {
332
1.11M
          0.0,
333
1.11M
          0.0,
334
1.11M
          -0.13813540350758585f,
335
1.11M
          0.3302282550303788f,
336
1.11M
          0.0,
337
1.11M
          0.08755115000587084f,
338
1.11M
          -0.07946706605909573f,
339
1.11M
          -0.4613374887461511f,
340
1.11M
          -0.13813540350758294f,
341
1.11M
          -0.07946706605910261f,
342
1.11M
          0.49724647109535086f,
343
1.11M
          0.12538059448563663f,
344
1.11M
          0.3302282550303805f,
345
1.11M
          -0.4613374887461554f,
346
1.11M
          0.12538059448564315f,
347
1.11M
          -0.13813540350758452f,
348
1.11M
      },
349
1.11M
      {
350
1.11M
          0.0,
351
1.11M
          0.0,
352
1.11M
          -0.17437602599651067f,
353
1.11M
          0.0702790691196284f,
354
1.11M
          0.0,
355
1.11M
          -0.2921026642334881f,
356
1.11M
          0.3623817333531167f,
357
1.11M
          0.0,
358
1.11M
          -0.1743760259965108f,
359
1.11M
          0.36238173335311646f,
360
1.11M
          0.29210266423348785f,
361
1.11M
          -0.4326608024727445f,
362
1.11M
          0.07027906911962818f,
363
1.11M
          0.0,
364
1.11M
          -0.4326608024727457f,
365
1.11M
          0.34875205199302267f,
366
1.11M
      },
367
1.11M
      {
368
1.11M
          0.0,
369
1.11M
          0.0,
370
1.11M
          0.11354987314994337f,
371
1.11M
          -0.07417504595810355f,
372
1.11M
          0.0,
373
1.11M
          0.19402893032594343f,
374
1.11M
          -0.435190496523228f,
375
1.11M
          0.21918684838857466f,
376
1.11M
          0.11354987314994257f,
377
1.11M
          -0.4351904965232251f,
378
1.11M
          0.5550443808910661f,
379
1.11M
          -0.25468277124066463f,
380
1.11M
          -0.07417504595810233f,
381
1.11M
          0.2191868483885728f,
382
1.11M
          -0.25468277124066413f,
383
1.11M
          0.1135498731499429f,
384
1.11M
      },
385
1.11M
  };
386
387
1.11M
  const HWY_CAPPED(float, 16) d;
388
3.34M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
389
2.23M
    auto pixel = Zero(d);
390
37.9M
    for (size_t j = 0; j < 16; j++) {
391
35.7M
      auto cf = Set(d, coeffs[j]);
392
35.7M
      auto basis = Load(d, k4x4AFVBasis[j] + i);
393
35.7M
      pixel = MulAdd(cf, basis, pixel);
394
35.7M
    }
395
2.23M
    Store(pixel, d, pixels + i);
396
2.23M
  }
397
1.11M
}
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::AFVIDCT4x4(float const*, float*)
398
399
template <size_t afv_kind>
400
void AFVTransformToPixels(const float* JXL_RESTRICT coefficients,
401
66.3M
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
66.3M
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
66.3M
  size_t afv_x = afv_kind & 1;
404
66.3M
  size_t afv_y = afv_kind / 2;
405
66.3M
  float dcs[3] = {};
406
66.3M
  float block00 = coefficients[0];
407
66.3M
  float block01 = coefficients[1];
408
66.3M
  float block10 = coefficients[8];
409
66.3M
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
66.3M
  dcs[1] = (block00 + block10 - block01);
411
66.3M
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
66.3M
  HWY_ALIGN float coeff[4 * 4];
414
66.3M
  coeff[0] = dcs[0];
415
331M
  for (size_t iy = 0; iy < 4; iy++) {
416
1.32G
    for (size_t ix = 0; ix < 4; ix++) {
417
1.06G
      if (ix == 0 && iy == 0) continue;
418
994M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
994M
    }
420
265M
  }
421
66.3M
  HWY_ALIGN float block[4 * 8];
422
66.3M
  AFVIDCT4x4(coeff, block);
423
331M
  for (size_t iy = 0; iy < 4; iy++) {
424
1.32G
    for (size_t ix = 0; ix < 4; ix++) {
425
1.06G
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
1.06G
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
1.06G
    }
428
265M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
66.3M
  block[0] = dcs[1];
431
331M
  for (size_t iy = 0; iy < 4; iy++) {
432
1.32G
    for (size_t ix = 0; ix < 4; ix++) {
433
1.06G
      if (ix == 0 && iy == 0) continue;
434
994M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
994M
    }
436
265M
  }
437
66.3M
  ComputeScaledIDCT<4, 4>()(
438
66.3M
      block,
439
66.3M
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
66.3M
            pixels_stride),
441
66.3M
      scratch_space);
442
  // IDCT4x8.
443
66.3M
  block[0] = dcs[2];
444
331M
  for (size_t iy = 0; iy < 4; iy++) {
445
2.38G
    for (size_t ix = 0; ix < 8; ix++) {
446
2.12G
      if (ix == 0 && iy == 0) continue;
447
2.05G
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
2.05G
    }
449
265M
  }
450
66.3M
  ComputeScaledIDCT<4, 8>()(
451
66.3M
      block,
452
66.3M
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
66.3M
      scratch_space);
454
66.3M
}
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Line
Count
Source
401
16.2M
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
16.2M
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
16.2M
  size_t afv_x = afv_kind & 1;
404
16.2M
  size_t afv_y = afv_kind / 2;
405
16.2M
  float dcs[3] = {};
406
16.2M
  float block00 = coefficients[0];
407
16.2M
  float block01 = coefficients[1];
408
16.2M
  float block10 = coefficients[8];
409
16.2M
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
16.2M
  dcs[1] = (block00 + block10 - block01);
411
16.2M
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
16.2M
  HWY_ALIGN float coeff[4 * 4];
414
16.2M
  coeff[0] = dcs[0];
415
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
416
325M
    for (size_t ix = 0; ix < 4; ix++) {
417
260M
      if (ix == 0 && iy == 0) continue;
418
244M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
244M
    }
420
65.1M
  }
421
16.2M
  HWY_ALIGN float block[4 * 8];
422
16.2M
  AFVIDCT4x4(coeff, block);
423
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
424
325M
    for (size_t ix = 0; ix < 4; ix++) {
425
260M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
260M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
260M
    }
428
65.1M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
16.2M
  block[0] = dcs[1];
431
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
432
325M
    for (size_t ix = 0; ix < 4; ix++) {
433
260M
      if (ix == 0 && iy == 0) continue;
434
244M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
244M
    }
436
65.1M
  }
437
16.2M
  ComputeScaledIDCT<4, 4>()(
438
16.2M
      block,
439
16.2M
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
16.2M
            pixels_stride),
441
16.2M
      scratch_space);
442
  // IDCT4x8.
443
16.2M
  block[0] = dcs[2];
444
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
445
586M
    for (size_t ix = 0; ix < 8; ix++) {
446
521M
      if (ix == 0 && iy == 0) continue;
447
505M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
505M
    }
449
65.1M
  }
450
16.2M
  ComputeScaledIDCT<4, 8>()(
451
16.2M
      block,
452
16.2M
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
16.2M
      scratch_space);
454
16.2M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Line
Count
Source
401
16.2M
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
16.2M
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
16.2M
  size_t afv_x = afv_kind & 1;
404
16.2M
  size_t afv_y = afv_kind / 2;
405
16.2M
  float dcs[3] = {};
406
16.2M
  float block00 = coefficients[0];
407
16.2M
  float block01 = coefficients[1];
408
16.2M
  float block10 = coefficients[8];
409
16.2M
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
16.2M
  dcs[1] = (block00 + block10 - block01);
411
16.2M
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
16.2M
  HWY_ALIGN float coeff[4 * 4];
414
16.2M
  coeff[0] = dcs[0];
415
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
416
325M
    for (size_t ix = 0; ix < 4; ix++) {
417
260M
      if (ix == 0 && iy == 0) continue;
418
244M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
244M
    }
420
65.1M
  }
421
16.2M
  HWY_ALIGN float block[4 * 8];
422
16.2M
  AFVIDCT4x4(coeff, block);
423
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
424
325M
    for (size_t ix = 0; ix < 4; ix++) {
425
260M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
260M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
260M
    }
428
65.1M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
16.2M
  block[0] = dcs[1];
431
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
432
325M
    for (size_t ix = 0; ix < 4; ix++) {
433
260M
      if (ix == 0 && iy == 0) continue;
434
244M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
244M
    }
436
65.1M
  }
437
16.2M
  ComputeScaledIDCT<4, 4>()(
438
16.2M
      block,
439
16.2M
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
16.2M
            pixels_stride),
441
16.2M
      scratch_space);
442
  // IDCT4x8.
443
16.2M
  block[0] = dcs[2];
444
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
445
586M
    for (size_t ix = 0; ix < 8; ix++) {
446
521M
      if (ix == 0 && iy == 0) continue;
447
505M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
505M
    }
449
65.1M
  }
450
16.2M
  ComputeScaledIDCT<4, 8>()(
451
16.2M
      block,
452
16.2M
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
16.2M
      scratch_space);
454
16.2M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Line
Count
Source
401
16.2M
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
16.2M
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
16.2M
  size_t afv_x = afv_kind & 1;
404
16.2M
  size_t afv_y = afv_kind / 2;
405
16.2M
  float dcs[3] = {};
406
16.2M
  float block00 = coefficients[0];
407
16.2M
  float block01 = coefficients[1];
408
16.2M
  float block10 = coefficients[8];
409
16.2M
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
16.2M
  dcs[1] = (block00 + block10 - block01);
411
16.2M
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
16.2M
  HWY_ALIGN float coeff[4 * 4];
414
16.2M
  coeff[0] = dcs[0];
415
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
416
325M
    for (size_t ix = 0; ix < 4; ix++) {
417
260M
      if (ix == 0 && iy == 0) continue;
418
244M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
244M
    }
420
65.1M
  }
421
16.2M
  HWY_ALIGN float block[4 * 8];
422
16.2M
  AFVIDCT4x4(coeff, block);
423
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
424
325M
    for (size_t ix = 0; ix < 4; ix++) {
425
260M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
260M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
260M
    }
428
65.1M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
16.2M
  block[0] = dcs[1];
431
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
432
325M
    for (size_t ix = 0; ix < 4; ix++) {
433
260M
      if (ix == 0 && iy == 0) continue;
434
244M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
244M
    }
436
65.1M
  }
437
16.2M
  ComputeScaledIDCT<4, 4>()(
438
16.2M
      block,
439
16.2M
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
16.2M
            pixels_stride),
441
16.2M
      scratch_space);
442
  // IDCT4x8.
443
16.2M
  block[0] = dcs[2];
444
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
445
586M
    for (size_t ix = 0; ix < 8; ix++) {
446
521M
      if (ix == 0 && iy == 0) continue;
447
505M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
505M
    }
449
65.1M
  }
450
16.2M
  ComputeScaledIDCT<4, 8>()(
451
16.2M
      block,
452
16.2M
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
16.2M
      scratch_space);
454
16.2M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
Line
Count
Source
401
16.2M
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
16.2M
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
16.2M
  size_t afv_x = afv_kind & 1;
404
16.2M
  size_t afv_y = afv_kind / 2;
405
16.2M
  float dcs[3] = {};
406
16.2M
  float block00 = coefficients[0];
407
16.2M
  float block01 = coefficients[1];
408
16.2M
  float block10 = coefficients[8];
409
16.2M
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
16.2M
  dcs[1] = (block00 + block10 - block01);
411
16.2M
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
16.2M
  HWY_ALIGN float coeff[4 * 4];
414
16.2M
  coeff[0] = dcs[0];
415
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
416
325M
    for (size_t ix = 0; ix < 4; ix++) {
417
260M
      if (ix == 0 && iy == 0) continue;
418
244M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
244M
    }
420
65.1M
  }
421
16.2M
  HWY_ALIGN float block[4 * 8];
422
16.2M
  AFVIDCT4x4(coeff, block);
423
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
424
325M
    for (size_t ix = 0; ix < 4; ix++) {
425
260M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
260M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
260M
    }
428
65.1M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
16.2M
  block[0] = dcs[1];
431
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
432
325M
    for (size_t ix = 0; ix < 4; ix++) {
433
260M
      if (ix == 0 && iy == 0) continue;
434
244M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
244M
    }
436
65.1M
  }
437
16.2M
  ComputeScaledIDCT<4, 4>()(
438
16.2M
      block,
439
16.2M
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
16.2M
            pixels_stride),
441
16.2M
      scratch_space);
442
  // IDCT4x8.
443
16.2M
  block[0] = dcs[2];
444
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
445
586M
    for (size_t ix = 0; ix < 8; ix++) {
446
521M
      if (ix == 0 && iy == 0) continue;
447
505M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
505M
    }
449
65.1M
  }
450
16.2M
  ComputeScaledIDCT<4, 8>()(
451
16.2M
      block,
452
16.2M
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
16.2M
      scratch_space);
454
16.2M
}
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Line
Count
Source
401
347k
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
347k
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
347k
  size_t afv_x = afv_kind & 1;
404
347k
  size_t afv_y = afv_kind / 2;
405
347k
  float dcs[3] = {};
406
347k
  float block00 = coefficients[0];
407
347k
  float block01 = coefficients[1];
408
347k
  float block10 = coefficients[8];
409
347k
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
347k
  dcs[1] = (block00 + block10 - block01);
411
347k
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
347k
  HWY_ALIGN float coeff[4 * 4];
414
347k
  coeff[0] = dcs[0];
415
1.73M
  for (size_t iy = 0; iy < 4; iy++) {
416
6.95M
    for (size_t ix = 0; ix < 4; ix++) {
417
5.56M
      if (ix == 0 && iy == 0) continue;
418
5.21M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
5.21M
    }
420
1.39M
  }
421
347k
  HWY_ALIGN float block[4 * 8];
422
347k
  AFVIDCT4x4(coeff, block);
423
1.73M
  for (size_t iy = 0; iy < 4; iy++) {
424
6.95M
    for (size_t ix = 0; ix < 4; ix++) {
425
5.56M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
5.56M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
5.56M
    }
428
1.39M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
347k
  block[0] = dcs[1];
431
1.73M
  for (size_t iy = 0; iy < 4; iy++) {
432
6.95M
    for (size_t ix = 0; ix < 4; ix++) {
433
5.56M
      if (ix == 0 && iy == 0) continue;
434
5.21M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
5.21M
    }
436
1.39M
  }
437
347k
  ComputeScaledIDCT<4, 4>()(
438
347k
      block,
439
347k
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
347k
            pixels_stride),
441
347k
      scratch_space);
442
  // IDCT4x8.
443
347k
  block[0] = dcs[2];
444
1.73M
  for (size_t iy = 0; iy < 4; iy++) {
445
12.5M
    for (size_t ix = 0; ix < 8; ix++) {
446
11.1M
      if (ix == 0 && iy == 0) continue;
447
10.7M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
10.7M
    }
449
1.39M
  }
450
347k
  ComputeScaledIDCT<4, 8>()(
451
347k
      block,
452
347k
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
347k
      scratch_space);
454
347k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Line
Count
Source
401
214k
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
214k
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
214k
  size_t afv_x = afv_kind & 1;
404
214k
  size_t afv_y = afv_kind / 2;
405
214k
  float dcs[3] = {};
406
214k
  float block00 = coefficients[0];
407
214k
  float block01 = coefficients[1];
408
214k
  float block10 = coefficients[8];
409
214k
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
214k
  dcs[1] = (block00 + block10 - block01);
411
214k
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
214k
  HWY_ALIGN float coeff[4 * 4];
414
214k
  coeff[0] = dcs[0];
415
1.07M
  for (size_t iy = 0; iy < 4; iy++) {
416
4.28M
    for (size_t ix = 0; ix < 4; ix++) {
417
3.42M
      if (ix == 0 && iy == 0) continue;
418
3.21M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
3.21M
    }
420
856k
  }
421
214k
  HWY_ALIGN float block[4 * 8];
422
214k
  AFVIDCT4x4(coeff, block);
423
1.07M
  for (size_t iy = 0; iy < 4; iy++) {
424
4.28M
    for (size_t ix = 0; ix < 4; ix++) {
425
3.42M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
3.42M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
3.42M
    }
428
856k
  }
429
  // IDCT4x4 in (odd, even) positions.
430
214k
  block[0] = dcs[1];
431
1.07M
  for (size_t iy = 0; iy < 4; iy++) {
432
4.28M
    for (size_t ix = 0; ix < 4; ix++) {
433
3.42M
      if (ix == 0 && iy == 0) continue;
434
3.21M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
3.21M
    }
436
856k
  }
437
214k
  ComputeScaledIDCT<4, 4>()(
438
214k
      block,
439
214k
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
214k
            pixels_stride),
441
214k
      scratch_space);
442
  // IDCT4x8.
443
214k
  block[0] = dcs[2];
444
1.07M
  for (size_t iy = 0; iy < 4; iy++) {
445
7.71M
    for (size_t ix = 0; ix < 8; ix++) {
446
6.85M
      if (ix == 0 && iy == 0) continue;
447
6.64M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
6.64M
    }
449
856k
  }
450
214k
  ComputeScaledIDCT<4, 8>()(
451
214k
      block,
452
214k
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
214k
      scratch_space);
454
214k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Line
Count
Source
401
265k
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
265k
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
265k
  size_t afv_x = afv_kind & 1;
404
265k
  size_t afv_y = afv_kind / 2;
405
265k
  float dcs[3] = {};
406
265k
  float block00 = coefficients[0];
407
265k
  float block01 = coefficients[1];
408
265k
  float block10 = coefficients[8];
409
265k
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
265k
  dcs[1] = (block00 + block10 - block01);
411
265k
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
265k
  HWY_ALIGN float coeff[4 * 4];
414
265k
  coeff[0] = dcs[0];
415
1.32M
  for (size_t iy = 0; iy < 4; iy++) {
416
5.30M
    for (size_t ix = 0; ix < 4; ix++) {
417
4.24M
      if (ix == 0 && iy == 0) continue;
418
3.97M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
3.97M
    }
420
1.06M
  }
421
265k
  HWY_ALIGN float block[4 * 8];
422
265k
  AFVIDCT4x4(coeff, block);
423
1.32M
  for (size_t iy = 0; iy < 4; iy++) {
424
5.30M
    for (size_t ix = 0; ix < 4; ix++) {
425
4.24M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
4.24M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
4.24M
    }
428
1.06M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
265k
  block[0] = dcs[1];
431
1.32M
  for (size_t iy = 0; iy < 4; iy++) {
432
5.30M
    for (size_t ix = 0; ix < 4; ix++) {
433
4.24M
      if (ix == 0 && iy == 0) continue;
434
3.97M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
3.97M
    }
436
1.06M
  }
437
265k
  ComputeScaledIDCT<4, 4>()(
438
265k
      block,
439
265k
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
265k
            pixels_stride),
441
265k
      scratch_space);
442
  // IDCT4x8.
443
265k
  block[0] = dcs[2];
444
1.32M
  for (size_t iy = 0; iy < 4; iy++) {
445
9.54M
    for (size_t ix = 0; ix < 8; ix++) {
446
8.48M
      if (ix == 0 && iy == 0) continue;
447
8.21M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
8.21M
    }
449
1.06M
  }
450
265k
  ComputeScaledIDCT<4, 8>()(
451
265k
      block,
452
265k
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
265k
      scratch_space);
454
265k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
Line
Count
Source
401
288k
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
288k
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
288k
  size_t afv_x = afv_kind & 1;
404
288k
  size_t afv_y = afv_kind / 2;
405
288k
  float dcs[3] = {};
406
288k
  float block00 = coefficients[0];
407
288k
  float block01 = coefficients[1];
408
288k
  float block10 = coefficients[8];
409
288k
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
288k
  dcs[1] = (block00 + block10 - block01);
411
288k
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
288k
  HWY_ALIGN float coeff[4 * 4];
414
288k
  coeff[0] = dcs[0];
415
1.44M
  for (size_t iy = 0; iy < 4; iy++) {
416
5.77M
    for (size_t ix = 0; ix < 4; ix++) {
417
4.61M
      if (ix == 0 && iy == 0) continue;
418
4.33M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
4.33M
    }
420
1.15M
  }
421
288k
  HWY_ALIGN float block[4 * 8];
422
288k
  AFVIDCT4x4(coeff, block);
423
1.44M
  for (size_t iy = 0; iy < 4; iy++) {
424
5.77M
    for (size_t ix = 0; ix < 4; ix++) {
425
4.61M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
4.61M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
4.61M
    }
428
1.15M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
288k
  block[0] = dcs[1];
431
1.44M
  for (size_t iy = 0; iy < 4; iy++) {
432
5.77M
    for (size_t ix = 0; ix < 4; ix++) {
433
4.61M
      if (ix == 0 && iy == 0) continue;
434
4.33M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
4.33M
    }
436
1.15M
  }
437
288k
  ComputeScaledIDCT<4, 4>()(
438
288k
      block,
439
288k
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
288k
            pixels_stride),
441
288k
      scratch_space);
442
  // IDCT4x8.
443
288k
  block[0] = dcs[2];
444
1.44M
  for (size_t iy = 0; iy < 4; iy++) {
445
10.3M
    for (size_t ix = 0; ix < 8; ix++) {
446
9.23M
      if (ix == 0 && iy == 0) continue;
447
8.95M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
8.95M
    }
449
1.15M
  }
450
288k
  ComputeScaledIDCT<4, 8>()(
451
288k
      block,
452
288k
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
288k
      scratch_space);
454
288k
}
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<0ul>(float const*, float*, unsigned long)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Unexecuted instantiation: dec_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
455
456
HWY_MAYBE_UNUSED void TransformToPixels(const AcStrategyType strategy,
457
                                        float* JXL_RESTRICT coefficients,
458
                                        float* JXL_RESTRICT pixels,
459
                                        size_t pixels_stride,
460
227M
                                        float* scratch_space) {
461
227M
  using Type = AcStrategyType;
462
227M
  switch (strategy) {
463
20.2M
    case Type::IDENTITY: {
464
20.2M
      float dcs[4] = {};
465
20.2M
      float block00 = coefficients[0];
466
20.2M
      float block01 = coefficients[1];
467
20.2M
      float block10 = coefficients[8];
468
20.2M
      float block11 = coefficients[9];
469
20.2M
      dcs[0] = block00 + block01 + block10 + block11;
470
20.2M
      dcs[1] = block00 + block01 - block10 - block11;
471
20.2M
      dcs[2] = block00 - block01 + block10 - block11;
472
20.2M
      dcs[3] = block00 - block01 - block10 + block11;
473
60.7M
      for (size_t y = 0; y < 2; y++) {
474
121M
        for (size_t x = 0; x < 2; x++) {
475
80.9M
          float block_dc = dcs[y * 2 + x];
476
80.9M
          float residual_sum = 0;
477
404M
          for (size_t iy = 0; iy < 4; iy++) {
478
1.61G
            for (size_t ix = 0; ix < 4; ix++) {
479
1.29G
              if (ix == 0 && iy == 0) continue;
480
1.21G
              residual_sum += coefficients[(y + iy * 2) * 8 + x + ix * 2];
481
1.21G
            }
482
323M
          }
483
80.9M
          pixels[(4 * y + 1) * pixels_stride + 4 * x + 1] =
484
80.9M
              block_dc - residual_sum * (1.0f / 16);
485
404M
          for (size_t iy = 0; iy < 4; iy++) {
486
1.61G
            for (size_t ix = 0; ix < 4; ix++) {
487
1.29G
              if (ix == 1 && iy == 1) continue;
488
1.21G
              pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] =
489
1.21G
                  coefficients[(y + iy * 2) * 8 + x + ix * 2] +
490
1.21G
                  pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
491
1.21G
            }
492
323M
          }
493
80.9M
          pixels[y * 4 * pixels_stride + x * 4] =
494
80.9M
              coefficients[(y + 2) * 8 + x + 2] +
495
80.9M
              pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
496
80.9M
        }
497
40.4M
      }
498
20.2M
      break;
499
0
    }
500
16.8M
    case Type::DCT8X4: {
501
16.8M
      float dcs[2] = {};
502
16.8M
      float block0 = coefficients[0];
503
16.8M
      float block1 = coefficients[8];
504
16.8M
      dcs[0] = block0 + block1;
505
16.8M
      dcs[1] = block0 - block1;
506
50.5M
      for (size_t x = 0; x < 2; x++) {
507
33.7M
        HWY_ALIGN float block[4 * 8];
508
33.7M
        block[0] = dcs[x];
509
168M
        for (size_t iy = 0; iy < 4; iy++) {
510
1.21G
          for (size_t ix = 0; ix < 8; ix++) {
511
1.07G
            if (ix == 0 && iy == 0) continue;
512
1.04G
            block[iy * 8 + ix] = coefficients[(x + iy * 2) * 8 + ix];
513
1.04G
          }
514
134M
        }
515
33.7M
        ComputeScaledIDCT<8, 4>()(block, DCTTo(pixels + x * 4, pixels_stride),
516
33.7M
                                  scratch_space);
517
33.7M
      }
518
16.8M
      break;
519
0
    }
520
16.5M
    case Type::DCT4X8: {
521
16.5M
      float dcs[2] = {};
522
16.5M
      float block0 = coefficients[0];
523
16.5M
      float block1 = coefficients[8];
524
16.5M
      dcs[0] = block0 + block1;
525
16.5M
      dcs[1] = block0 - block1;
526
49.6M
      for (size_t y = 0; y < 2; y++) {
527
33.1M
        HWY_ALIGN float block[4 * 8];
528
33.1M
        block[0] = dcs[y];
529
165M
        for (size_t iy = 0; iy < 4; iy++) {
530
1.19G
          for (size_t ix = 0; ix < 8; ix++) {
531
1.05G
            if (ix == 0 && iy == 0) continue;
532
1.02G
            block[iy * 8 + ix] = coefficients[(y + iy * 2) * 8 + ix];
533
1.02G
          }
534
132M
        }
535
33.1M
        ComputeScaledIDCT<4, 8>()(
536
33.1M
            block, DCTTo(pixels + y * 4 * pixels_stride, pixels_stride),
537
33.1M
            scratch_space);
538
33.1M
      }
539
16.5M
      break;
540
0
    }
541
16.3M
    case Type::DCT4X4: {
542
16.3M
      float dcs[4] = {};
543
16.3M
      float block00 = coefficients[0];
544
16.3M
      float block01 = coefficients[1];
545
16.3M
      float block10 = coefficients[8];
546
16.3M
      float block11 = coefficients[9];
547
16.3M
      dcs[0] = block00 + block01 + block10 + block11;
548
16.3M
      dcs[1] = block00 + block01 - block10 - block11;
549
16.3M
      dcs[2] = block00 - block01 + block10 - block11;
550
16.3M
      dcs[3] = block00 - block01 - block10 + block11;
551
48.9M
      for (size_t y = 0; y < 2; y++) {
552
97.8M
        for (size_t x = 0; x < 2; x++) {
553
65.2M
          HWY_ALIGN float block[4 * 4];
554
65.2M
          block[0] = dcs[y * 2 + x];
555
326M
          for (size_t iy = 0; iy < 4; iy++) {
556
1.30G
            for (size_t ix = 0; ix < 4; ix++) {
557
1.04G
              if (ix == 0 && iy == 0) continue;
558
978M
              block[iy * 4 + ix] = coefficients[(y + iy * 2) * 8 + x + ix * 2];
559
978M
            }
560
260M
          }
561
65.2M
          ComputeScaledIDCT<4, 4>()(
562
65.2M
              block,
563
65.2M
              DCTTo(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
564
65.2M
              scratch_space);
565
65.2M
        }
566
32.6M
      }
567
16.3M
      break;
568
0
    }
569
23.9M
    case Type::DCT2X2: {
570
23.9M
      HWY_ALIGN float coeffs[kDCTBlockSize];
571
23.9M
      memcpy(coeffs, coefficients, sizeof(float) * kDCTBlockSize);
572
23.9M
      IDCT2TopBlock<2>(coeffs, kBlockDim, coeffs);
573
23.9M
      IDCT2TopBlock<4>(coeffs, kBlockDim, coeffs);
574
23.9M
      IDCT2TopBlock<8>(coeffs, kBlockDim, coeffs);
575
215M
      for (size_t y = 0; y < kBlockDim; y++) {
576
1.72G
        for (size_t x = 0; x < kBlockDim; x++) {
577
1.53G
          pixels[y * pixels_stride + x] = coeffs[y * kBlockDim + x];
578
1.53G
        }
579
191M
      }
580
23.9M
      break;
581
0
    }
582
7.17M
    case Type::DCT16X16: {
583
7.17M
      ComputeScaledIDCT<16, 16>()(coefficients, DCTTo(pixels, pixels_stride),
584
7.17M
                                  scratch_space);
585
7.17M
      break;
586
0
    }
587
13.8M
    case Type::DCT16X8: {
588
13.8M
      ComputeScaledIDCT<16, 8>()(coefficients, DCTTo(pixels, pixels_stride),
589
13.8M
                                 scratch_space);
590
13.8M
      break;
591
0
    }
592
13.8M
    case Type::DCT8X16: {
593
13.8M
      ComputeScaledIDCT<8, 16>()(coefficients, DCTTo(pixels, pixels_stride),
594
13.8M
                                 scratch_space);
595
13.8M
      break;
596
0
    }
597
36
    case Type::DCT32X8: {
598
36
      ComputeScaledIDCT<32, 8>()(coefficients, DCTTo(pixels, pixels_stride),
599
36
                                 scratch_space);
600
36
      break;
601
0
    }
602
132
    case Type::DCT8X32: {
603
132
      ComputeScaledIDCT<8, 32>()(coefficients, DCTTo(pixels, pixels_stride),
604
132
                                 scratch_space);
605
132
      break;
606
0
    }
607
2.76M
    case Type::DCT32X16: {
608
2.76M
      ComputeScaledIDCT<32, 16>()(coefficients, DCTTo(pixels, pixels_stride),
609
2.76M
                                  scratch_space);
610
2.76M
      break;
611
0
    }
612
2.75M
    case Type::DCT16X32: {
613
2.75M
      ComputeScaledIDCT<16, 32>()(coefficients, DCTTo(pixels, pixels_stride),
614
2.75M
                                  scratch_space);
615
2.75M
      break;
616
0
    }
617
1.69M
    case Type::DCT32X32: {
618
1.69M
      ComputeScaledIDCT<32, 32>()(coefficients, DCTTo(pixels, pixels_stride),
619
1.69M
                                  scratch_space);
620
1.69M
      break;
621
0
    }
622
22.9M
    case Type::DCT: {
623
22.9M
      ComputeScaledIDCT<8, 8>()(coefficients, DCTTo(pixels, pixels_stride),
624
22.9M
                                scratch_space);
625
22.9M
      break;
626
0
    }
627
16.6M
    case Type::AFV0: {
628
16.6M
      AFVTransformToPixels<0>(coefficients, pixels, pixels_stride);
629
16.6M
      break;
630
0
    }
631
16.5M
    case Type::AFV1: {
632
16.5M
      AFVTransformToPixels<1>(coefficients, pixels, pixels_stride);
633
16.5M
      break;
634
0
    }
635
16.5M
    case Type::AFV2: {
636
16.5M
      AFVTransformToPixels<2>(coefficients, pixels, pixels_stride);
637
16.5M
      break;
638
0
    }
639
16.5M
    case Type::AFV3: {
640
16.5M
      AFVTransformToPixels<3>(coefficients, pixels, pixels_stride);
641
16.5M
      break;
642
0
    }
643
815k
    case Type::DCT64X32: {
644
815k
      ComputeScaledIDCT<64, 32>()(coefficients, DCTTo(pixels, pixels_stride),
645
815k
                                  scratch_space);
646
815k
      break;
647
0
    }
648
505k
    case Type::DCT32X64: {
649
505k
      ComputeScaledIDCT<32, 64>()(coefficients, DCTTo(pixels, pixels_stride),
650
505k
                                  scratch_space);
651
505k
      break;
652
0
    }
653
435k
    case Type::DCT64X64: {
654
435k
      ComputeScaledIDCT<64, 64>()(coefficients, DCTTo(pixels, pixels_stride),
655
435k
                                  scratch_space);
656
435k
      break;
657
0
    }
658
3
    case Type::DCT128X64: {
659
3
      ComputeScaledIDCT<128, 64>()(coefficients, DCTTo(pixels, pixels_stride),
660
3
                                   scratch_space);
661
3
      break;
662
0
    }
663
3
    case Type::DCT64X128: {
664
3
      ComputeScaledIDCT<64, 128>()(coefficients, DCTTo(pixels, pixels_stride),
665
3
                                   scratch_space);
666
3
      break;
667
0
    }
668
18
    case Type::DCT128X128: {
669
18
      ComputeScaledIDCT<128, 128>()(coefficients, DCTTo(pixels, pixels_stride),
670
18
                                    scratch_space);
671
18
      break;
672
0
    }
673
0
    case Type::DCT256X128: {
674
0
      ComputeScaledIDCT<256, 128>()(coefficients, DCTTo(pixels, pixels_stride),
675
0
                                    scratch_space);
676
0
      break;
677
0
    }
678
0
    case Type::DCT128X256: {
679
0
      ComputeScaledIDCT<128, 256>()(coefficients, DCTTo(pixels, pixels_stride),
680
0
                                    scratch_space);
681
0
      break;
682
0
    }
683
0
    case Type::DCT256X256: {
684
0
      ComputeScaledIDCT<256, 256>()(coefficients, DCTTo(pixels, pixels_stride),
685
0
                                    scratch_space);
686
0
      break;
687
0
    }
688
227M
  }
689
227M
}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:jxl::N_AVX2::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
Line
Count
Source
460
203M
                                        float* scratch_space) {
461
203M
  using Type = AcStrategyType;
462
203M
  switch (strategy) {
463
16.2M
    case Type::IDENTITY: {
464
16.2M
      float dcs[4] = {};
465
16.2M
      float block00 = coefficients[0];
466
16.2M
      float block01 = coefficients[1];
467
16.2M
      float block10 = coefficients[8];
468
16.2M
      float block11 = coefficients[9];
469
16.2M
      dcs[0] = block00 + block01 + block10 + block11;
470
16.2M
      dcs[1] = block00 + block01 - block10 - block11;
471
16.2M
      dcs[2] = block00 - block01 + block10 - block11;
472
16.2M
      dcs[3] = block00 - block01 - block10 + block11;
473
48.8M
      for (size_t y = 0; y < 2; y++) {
474
97.7M
        for (size_t x = 0; x < 2; x++) {
475
65.1M
          float block_dc = dcs[y * 2 + x];
476
65.1M
          float residual_sum = 0;
477
325M
          for (size_t iy = 0; iy < 4; iy++) {
478
1.30G
            for (size_t ix = 0; ix < 4; ix++) {
479
1.04G
              if (ix == 0 && iy == 0) continue;
480
977M
              residual_sum += coefficients[(y + iy * 2) * 8 + x + ix * 2];
481
977M
            }
482
260M
          }
483
65.1M
          pixels[(4 * y + 1) * pixels_stride + 4 * x + 1] =
484
65.1M
              block_dc - residual_sum * (1.0f / 16);
485
325M
          for (size_t iy = 0; iy < 4; iy++) {
486
1.30G
            for (size_t ix = 0; ix < 4; ix++) {
487
1.04G
              if (ix == 1 && iy == 1) continue;
488
977M
              pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] =
489
977M
                  coefficients[(y + iy * 2) * 8 + x + ix * 2] +
490
977M
                  pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
491
977M
            }
492
260M
          }
493
65.1M
          pixels[y * 4 * pixels_stride + x * 4] =
494
65.1M
              coefficients[(y + 2) * 8 + x + 2] +
495
65.1M
              pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
496
65.1M
        }
497
32.5M
      }
498
16.2M
      break;
499
0
    }
500
16.2M
    case Type::DCT8X4: {
501
16.2M
      float dcs[2] = {};
502
16.2M
      float block0 = coefficients[0];
503
16.2M
      float block1 = coefficients[8];
504
16.2M
      dcs[0] = block0 + block1;
505
16.2M
      dcs[1] = block0 - block1;
506
48.8M
      for (size_t x = 0; x < 2; x++) {
507
32.5M
        HWY_ALIGN float block[4 * 8];
508
32.5M
        block[0] = dcs[x];
509
162M
        for (size_t iy = 0; iy < 4; iy++) {
510
1.17G
          for (size_t ix = 0; ix < 8; ix++) {
511
1.04G
            if (ix == 0 && iy == 0) continue;
512
1.01G
            block[iy * 8 + ix] = coefficients[(x + iy * 2) * 8 + ix];
513
1.01G
          }
514
130M
        }
515
32.5M
        ComputeScaledIDCT<8, 4>()(block, DCTTo(pixels + x * 4, pixels_stride),
516
32.5M
                                  scratch_space);
517
32.5M
      }
518
16.2M
      break;
519
0
    }
520
16.2M
    case Type::DCT4X8: {
521
16.2M
      float dcs[2] = {};
522
16.2M
      float block0 = coefficients[0];
523
16.2M
      float block1 = coefficients[8];
524
16.2M
      dcs[0] = block0 + block1;
525
16.2M
      dcs[1] = block0 - block1;
526
48.8M
      for (size_t y = 0; y < 2; y++) {
527
32.5M
        HWY_ALIGN float block[4 * 8];
528
32.5M
        block[0] = dcs[y];
529
162M
        for (size_t iy = 0; iy < 4; iy++) {
530
1.17G
          for (size_t ix = 0; ix < 8; ix++) {
531
1.04G
            if (ix == 0 && iy == 0) continue;
532
1.01G
            block[iy * 8 + ix] = coefficients[(y + iy * 2) * 8 + ix];
533
1.01G
          }
534
130M
        }
535
32.5M
        ComputeScaledIDCT<4, 8>()(
536
32.5M
            block, DCTTo(pixels + y * 4 * pixels_stride, pixels_stride),
537
32.5M
            scratch_space);
538
32.5M
      }
539
16.2M
      break;
540
0
    }
541
16.2M
    case Type::DCT4X4: {
542
16.2M
      float dcs[4] = {};
543
16.2M
      float block00 = coefficients[0];
544
16.2M
      float block01 = coefficients[1];
545
16.2M
      float block10 = coefficients[8];
546
16.2M
      float block11 = coefficients[9];
547
16.2M
      dcs[0] = block00 + block01 + block10 + block11;
548
16.2M
      dcs[1] = block00 + block01 - block10 - block11;
549
16.2M
      dcs[2] = block00 - block01 + block10 - block11;
550
16.2M
      dcs[3] = block00 - block01 - block10 + block11;
551
48.8M
      for (size_t y = 0; y < 2; y++) {
552
97.7M
        for (size_t x = 0; x < 2; x++) {
553
65.1M
          HWY_ALIGN float block[4 * 4];
554
65.1M
          block[0] = dcs[y * 2 + x];
555
325M
          for (size_t iy = 0; iy < 4; iy++) {
556
1.30G
            for (size_t ix = 0; ix < 4; ix++) {
557
1.04G
              if (ix == 0 && iy == 0) continue;
558
977M
              block[iy * 4 + ix] = coefficients[(y + iy * 2) * 8 + x + ix * 2];
559
977M
            }
560
260M
          }
561
65.1M
          ComputeScaledIDCT<4, 4>()(
562
65.1M
              block,
563
65.1M
              DCTTo(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
564
65.1M
              scratch_space);
565
65.1M
        }
566
32.5M
      }
567
16.2M
      break;
568
0
    }
569
16.2M
    case Type::DCT2X2: {
570
16.2M
      HWY_ALIGN float coeffs[kDCTBlockSize];
571
16.2M
      memcpy(coeffs, coefficients, sizeof(float) * kDCTBlockSize);
572
16.2M
      IDCT2TopBlock<2>(coeffs, kBlockDim, coeffs);
573
16.2M
      IDCT2TopBlock<4>(coeffs, kBlockDim, coeffs);
574
16.2M
      IDCT2TopBlock<8>(coeffs, kBlockDim, coeffs);
575
146M
      for (size_t y = 0; y < kBlockDim; y++) {
576
1.17G
        for (size_t x = 0; x < kBlockDim; x++) {
577
1.04G
          pixels[y * pixels_stride + x] = coeffs[y * kBlockDim + x];
578
1.04G
        }
579
130M
      }
580
16.2M
      break;
581
0
    }
582
6.57M
    case Type::DCT16X16: {
583
6.57M
      ComputeScaledIDCT<16, 16>()(coefficients, DCTTo(pixels, pixels_stride),
584
6.57M
                                  scratch_space);
585
6.57M
      break;
586
0
    }
587
13.0M
    case Type::DCT16X8: {
588
13.0M
      ComputeScaledIDCT<16, 8>()(coefficients, DCTTo(pixels, pixels_stride),
589
13.0M
                                 scratch_space);
590
13.0M
      break;
591
0
    }
592
12.9M
    case Type::DCT8X16: {
593
12.9M
      ComputeScaledIDCT<8, 16>()(coefficients, DCTTo(pixels, pixels_stride),
594
12.9M
                                 scratch_space);
595
12.9M
      break;
596
0
    }
597
0
    case Type::DCT32X8: {
598
0
      ComputeScaledIDCT<32, 8>()(coefficients, DCTTo(pixels, pixels_stride),
599
0
                                 scratch_space);
600
0
      break;
601
0
    }
602
0
    case Type::DCT8X32: {
603
0
      ComputeScaledIDCT<8, 32>()(coefficients, DCTTo(pixels, pixels_stride),
604
0
                                 scratch_space);
605
0
      break;
606
0
    }
607
2.57M
    case Type::DCT32X16: {
608
2.57M
      ComputeScaledIDCT<32, 16>()(coefficients, DCTTo(pixels, pixels_stride),
609
2.57M
                                  scratch_space);
610
2.57M
      break;
611
0
    }
612
2.55M
    case Type::DCT16X32: {
613
2.55M
      ComputeScaledIDCT<16, 32>()(coefficients, DCTTo(pixels, pixels_stride),
614
2.55M
                                  scratch_space);
615
2.55M
      break;
616
0
    }
617
1.30M
    case Type::DCT32X32: {
618
1.30M
      ComputeScaledIDCT<32, 32>()(coefficients, DCTTo(pixels, pixels_stride),
619
1.30M
                                  scratch_space);
620
1.30M
      break;
621
0
    }
622
16.2M
    case Type::DCT: {
623
16.2M
      ComputeScaledIDCT<8, 8>()(coefficients, DCTTo(pixels, pixels_stride),
624
16.2M
                                scratch_space);
625
16.2M
      break;
626
0
    }
627
16.2M
    case Type::AFV0: {
628
16.2M
      AFVTransformToPixels<0>(coefficients, pixels, pixels_stride);
629
16.2M
      break;
630
0
    }
631
16.2M
    case Type::AFV1: {
632
16.2M
      AFVTransformToPixels<1>(coefficients, pixels, pixels_stride);
633
16.2M
      break;
634
0
    }
635
16.2M
    case Type::AFV2: {
636
16.2M
      AFVTransformToPixels<2>(coefficients, pixels, pixels_stride);
637
16.2M
      break;
638
0
    }
639
16.2M
    case Type::AFV3: {
640
16.2M
      AFVTransformToPixels<3>(coefficients, pixels, pixels_stride);
641
16.2M
      break;
642
0
    }
643
790k
    case Type::DCT64X32: {
644
790k
      ComputeScaledIDCT<64, 32>()(coefficients, DCTTo(pixels, pixels_stride),
645
790k
                                  scratch_space);
646
790k
      break;
647
0
    }
648
480k
    case Type::DCT32X64: {
649
480k
      ComputeScaledIDCT<32, 64>()(coefficients, DCTTo(pixels, pixels_stride),
650
480k
                                  scratch_space);
651
480k
      break;
652
0
    }
653
227k
    case Type::DCT64X64: {
654
227k
      ComputeScaledIDCT<64, 64>()(coefficients, DCTTo(pixels, pixels_stride),
655
227k
                                  scratch_space);
656
227k
      break;
657
0
    }
658
0
    case Type::DCT128X64: {
659
0
      ComputeScaledIDCT<128, 64>()(coefficients, DCTTo(pixels, pixels_stride),
660
0
                                   scratch_space);
661
0
      break;
662
0
    }
663
0
    case Type::DCT64X128: {
664
0
      ComputeScaledIDCT<64, 128>()(coefficients, DCTTo(pixels, pixels_stride),
665
0
                                   scratch_space);
666
0
      break;
667
0
    }
668
0
    case Type::DCT128X128: {
669
0
      ComputeScaledIDCT<128, 128>()(coefficients, DCTTo(pixels, pixels_stride),
670
0
                                    scratch_space);
671
0
      break;
672
0
    }
673
0
    case Type::DCT256X128: {
674
0
      ComputeScaledIDCT<256, 128>()(coefficients, DCTTo(pixels, pixels_stride),
675
0
                                    scratch_space);
676
0
      break;
677
0
    }
678
0
    case Type::DCT128X256: {
679
0
      ComputeScaledIDCT<128, 256>()(coefficients, DCTTo(pixels, pixels_stride),
680
0
                                    scratch_space);
681
0
      break;
682
0
    }
683
0
    case Type::DCT256X256: {
684
0
      ComputeScaledIDCT<256, 256>()(coefficients, DCTTo(pixels, pixels_stride),
685
0
                                    scratch_space);
686
0
      break;
687
0
    }
688
203M
  }
689
203M
}
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
Line
Count
Source
460
23.5M
                                        float* scratch_space) {
461
23.5M
  using Type = AcStrategyType;
462
23.5M
  switch (strategy) {
463
3.94M
    case Type::IDENTITY: {
464
3.94M
      float dcs[4] = {};
465
3.94M
      float block00 = coefficients[0];
466
3.94M
      float block01 = coefficients[1];
467
3.94M
      float block10 = coefficients[8];
468
3.94M
      float block11 = coefficients[9];
469
3.94M
      dcs[0] = block00 + block01 + block10 + block11;
470
3.94M
      dcs[1] = block00 + block01 - block10 - block11;
471
3.94M
      dcs[2] = block00 - block01 + block10 - block11;
472
3.94M
      dcs[3] = block00 - block01 - block10 + block11;
473
11.8M
      for (size_t y = 0; y < 2; y++) {
474
23.6M
        for (size_t x = 0; x < 2; x++) {
475
15.7M
          float block_dc = dcs[y * 2 + x];
476
15.7M
          float residual_sum = 0;
477
78.8M
          for (size_t iy = 0; iy < 4; iy++) {
478
315M
            for (size_t ix = 0; ix < 4; ix++) {
479
252M
              if (ix == 0 && iy == 0) continue;
480
236M
              residual_sum += coefficients[(y + iy * 2) * 8 + x + ix * 2];
481
236M
            }
482
63.0M
          }
483
15.7M
          pixels[(4 * y + 1) * pixels_stride + 4 * x + 1] =
484
15.7M
              block_dc - residual_sum * (1.0f / 16);
485
78.8M
          for (size_t iy = 0; iy < 4; iy++) {
486
315M
            for (size_t ix = 0; ix < 4; ix++) {
487
252M
              if (ix == 1 && iy == 1) continue;
488
236M
              pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] =
489
236M
                  coefficients[(y + iy * 2) * 8 + x + ix * 2] +
490
236M
                  pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
491
236M
            }
492
63.0M
          }
493
15.7M
          pixels[y * 4 * pixels_stride + x * 4] =
494
15.7M
              coefficients[(y + 2) * 8 + x + 2] +
495
15.7M
              pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
496
15.7M
        }
497
7.88M
      }
498
3.94M
      break;
499
0
    }
500
556k
    case Type::DCT8X4: {
501
556k
      float dcs[2] = {};
502
556k
      float block0 = coefficients[0];
503
556k
      float block1 = coefficients[8];
504
556k
      dcs[0] = block0 + block1;
505
556k
      dcs[1] = block0 - block1;
506
1.66M
      for (size_t x = 0; x < 2; x++) {
507
1.11M
        HWY_ALIGN float block[4 * 8];
508
1.11M
        block[0] = dcs[x];
509
5.56M
        for (size_t iy = 0; iy < 4; iy++) {
510
40.0M
          for (size_t ix = 0; ix < 8; ix++) {
511
35.6M
            if (ix == 0 && iy == 0) continue;
512
34.4M
            block[iy * 8 + ix] = coefficients[(x + iy * 2) * 8 + ix];
513
34.4M
          }
514
4.45M
        }
515
1.11M
        ComputeScaledIDCT<8, 4>()(block, DCTTo(pixels + x * 4, pixels_stride),
516
1.11M
                                  scratch_space);
517
1.11M
      }
518
556k
      break;
519
0
    }
520
252k
    case Type::DCT4X8: {
521
252k
      float dcs[2] = {};
522
252k
      float block0 = coefficients[0];
523
252k
      float block1 = coefficients[8];
524
252k
      dcs[0] = block0 + block1;
525
252k
      dcs[1] = block0 - block1;
526
756k
      for (size_t y = 0; y < 2; y++) {
527
504k
        HWY_ALIGN float block[4 * 8];
528
504k
        block[0] = dcs[y];
529
2.52M
        for (size_t iy = 0; iy < 4; iy++) {
530
18.1M
          for (size_t ix = 0; ix < 8; ix++) {
531
16.1M
            if (ix == 0 && iy == 0) continue;
532
15.6M
            block[iy * 8 + ix] = coefficients[(y + iy * 2) * 8 + ix];
533
15.6M
          }
534
2.01M
        }
535
504k
        ComputeScaledIDCT<4, 8>()(
536
504k
            block, DCTTo(pixels + y * 4 * pixels_stride, pixels_stride),
537
504k
            scratch_space);
538
504k
      }
539
252k
      break;
540
0
    }
541
4.82k
    case Type::DCT4X4: {
542
4.82k
      float dcs[4] = {};
543
4.82k
      float block00 = coefficients[0];
544
4.82k
      float block01 = coefficients[1];
545
4.82k
      float block10 = coefficients[8];
546
4.82k
      float block11 = coefficients[9];
547
4.82k
      dcs[0] = block00 + block01 + block10 + block11;
548
4.82k
      dcs[1] = block00 + block01 - block10 - block11;
549
4.82k
      dcs[2] = block00 - block01 + block10 - block11;
550
4.82k
      dcs[3] = block00 - block01 - block10 + block11;
551
14.4k
      for (size_t y = 0; y < 2; y++) {
552
28.9k
        for (size_t x = 0; x < 2; x++) {
553
19.3k
          HWY_ALIGN float block[4 * 4];
554
19.3k
          block[0] = dcs[y * 2 + x];
555
96.5k
          for (size_t iy = 0; iy < 4; iy++) {
556
386k
            for (size_t ix = 0; ix < 4; ix++) {
557
308k
              if (ix == 0 && iy == 0) continue;
558
289k
              block[iy * 4 + ix] = coefficients[(y + iy * 2) * 8 + x + ix * 2];
559
289k
            }
560
77.2k
          }
561
19.3k
          ComputeScaledIDCT<4, 4>()(
562
19.3k
              block,
563
19.3k
              DCTTo(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
564
19.3k
              scratch_space);
565
19.3k
        }
566
9.65k
      }
567
4.82k
      break;
568
0
    }
569
7.66M
    case Type::DCT2X2: {
570
7.66M
      HWY_ALIGN float coeffs[kDCTBlockSize];
571
7.66M
      memcpy(coeffs, coefficients, sizeof(float) * kDCTBlockSize);
572
7.66M
      IDCT2TopBlock<2>(coeffs, kBlockDim, coeffs);
573
7.66M
      IDCT2TopBlock<4>(coeffs, kBlockDim, coeffs);
574
7.66M
      IDCT2TopBlock<8>(coeffs, kBlockDim, coeffs);
575
68.9M
      for (size_t y = 0; y < kBlockDim; y++) {
576
551M
        for (size_t x = 0; x < kBlockDim; x++) {
577
490M
          pixels[y * pixels_stride + x] = coeffs[y * kBlockDim + x];
578
490M
        }
579
61.3M
      }
580
7.66M
      break;
581
0
    }
582
598k
    case Type::DCT16X16: {
583
598k
      ComputeScaledIDCT<16, 16>()(coefficients, DCTTo(pixels, pixels_stride),
584
598k
                                  scratch_space);
585
598k
      break;
586
0
    }
587
807k
    case Type::DCT16X8: {
588
807k
      ComputeScaledIDCT<16, 8>()(coefficients, DCTTo(pixels, pixels_stride),
589
807k
                                 scratch_space);
590
807k
      break;
591
0
    }
592
867k
    case Type::DCT8X16: {
593
867k
      ComputeScaledIDCT<8, 16>()(coefficients, DCTTo(pixels, pixels_stride),
594
867k
                                 scratch_space);
595
867k
      break;
596
0
    }
597
36
    case Type::DCT32X8: {
598
36
      ComputeScaledIDCT<32, 8>()(coefficients, DCTTo(pixels, pixels_stride),
599
36
                                 scratch_space);
600
36
      break;
601
0
    }
602
132
    case Type::DCT8X32: {
603
132
      ComputeScaledIDCT<8, 32>()(coefficients, DCTTo(pixels, pixels_stride),
604
132
                                 scratch_space);
605
132
      break;
606
0
    }
607
188k
    case Type::DCT32X16: {
608
188k
      ComputeScaledIDCT<32, 16>()(coefficients, DCTTo(pixels, pixels_stride),
609
188k
                                  scratch_space);
610
188k
      break;
611
0
    }
612
200k
    case Type::DCT16X32: {
613
200k
      ComputeScaledIDCT<16, 32>()(coefficients, DCTTo(pixels, pixels_stride),
614
200k
                                  scratch_space);
615
200k
      break;
616
0
    }
617
389k
    case Type::DCT32X32: {
618
389k
      ComputeScaledIDCT<32, 32>()(coefficients, DCTTo(pixels, pixels_stride),
619
389k
                                  scratch_space);
620
389k
      break;
621
0
    }
622
6.66M
    case Type::DCT: {
623
6.66M
      ComputeScaledIDCT<8, 8>()(coefficients, DCTTo(pixels, pixels_stride),
624
6.66M
                                scratch_space);
625
6.66M
      break;
626
0
    }
627
347k
    case Type::AFV0: {
628
347k
      AFVTransformToPixels<0>(coefficients, pixels, pixels_stride);
629
347k
      break;
630
0
    }
631
214k
    case Type::AFV1: {
632
214k
      AFVTransformToPixels<1>(coefficients, pixels, pixels_stride);
633
214k
      break;
634
0
    }
635
265k
    case Type::AFV2: {
636
265k
      AFVTransformToPixels<2>(coefficients, pixels, pixels_stride);
637
265k
      break;
638
0
    }
639
288k
    case Type::AFV3: {
640
288k
      AFVTransformToPixels<3>(coefficients, pixels, pixels_stride);
641
288k
      break;
642
0
    }
643
25.5k
    case Type::DCT64X32: {
644
25.5k
      ComputeScaledIDCT<64, 32>()(coefficients, DCTTo(pixels, pixels_stride),
645
25.5k
                                  scratch_space);
646
25.5k
      break;
647
0
    }
648
24.8k
    case Type::DCT32X64: {
649
24.8k
      ComputeScaledIDCT<32, 64>()(coefficients, DCTTo(pixels, pixels_stride),
650
24.8k
                                  scratch_space);
651
24.8k
      break;
652
0
    }
653
207k
    case Type::DCT64X64: {
654
207k
      ComputeScaledIDCT<64, 64>()(coefficients, DCTTo(pixels, pixels_stride),
655
207k
                                  scratch_space);
656
207k
      break;
657
0
    }
658
3
    case Type::DCT128X64: {
659
3
      ComputeScaledIDCT<128, 64>()(coefficients, DCTTo(pixels, pixels_stride),
660
3
                                   scratch_space);
661
3
      break;
662
0
    }
663
3
    case Type::DCT64X128: {
664
3
      ComputeScaledIDCT<64, 128>()(coefficients, DCTTo(pixels, pixels_stride),
665
3
                                   scratch_space);
666
3
      break;
667
0
    }
668
18
    case Type::DCT128X128: {
669
18
      ComputeScaledIDCT<128, 128>()(coefficients, DCTTo(pixels, pixels_stride),
670
18
                                    scratch_space);
671
18
      break;
672
0
    }
673
0
    case Type::DCT256X128: {
674
0
      ComputeScaledIDCT<256, 128>()(coefficients, DCTTo(pixels, pixels_stride),
675
0
                                    scratch_space);
676
0
      break;
677
0
    }
678
0
    case Type::DCT128X256: {
679
0
      ComputeScaledIDCT<128, 256>()(coefficients, DCTTo(pixels, pixels_stride),
680
0
                                    scratch_space);
681
0
      break;
682
0
    }
683
0
    case Type::DCT256X256: {
684
0
      ComputeScaledIDCT<256, 256>()(coefficients, DCTTo(pixels, pixels_stride),
685
0
                                    scratch_space);
686
0
      break;
687
0
    }
688
23.5M
  }
689
23.5M
}
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::TransformToPixels(jxl::AcStrategyType, float*, float*, unsigned long, float*)
690
691
HWY_MAYBE_UNUSED void LowestFrequenciesFromDC(const AcStrategyType strategy,
692
                                              const float* dc, size_t dc_stride,
693
                                              float* llf,
694
23.9M
                                              float* JXL_RESTRICT scratch) {
695
23.9M
  using Type = AcStrategyType;
696
23.9M
  HWY_ALIGN float warm_block[4 * 4];
697
23.9M
  HWY_ALIGN float warm_scratch_space[4 * 4 * 4];
698
23.9M
  switch (strategy) {
699
807k
    case Type::DCT16X8: {
700
807k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
701
807k
                        /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
702
807k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
703
807k
      break;
704
0
    }
705
867k
    case Type::DCT8X16: {
706
867k
      ReinterpretingDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
707
867k
                        /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
708
867k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
709
867k
      break;
710
0
    }
711
598k
    case Type::DCT16X16: {
712
598k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
713
598k
                        /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
714
598k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
715
598k
      break;
716
0
    }
717
36
    case Type::DCT32X8: {
718
36
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/kBlockDim,
719
36
                        /*LF_ROWS=*/4, /*LF_COLS=*/1, /*ROWS=*/4, /*COLS=*/1>(
720
36
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
721
36
      break;
722
0
    }
723
132
    case Type::DCT8X32: {
724
132
      ReinterpretingDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
725
132
                        /*LF_ROWS=*/1, /*LF_COLS=*/4, /*ROWS=*/1, /*COLS=*/4>(
726
132
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
727
132
      break;
728
0
    }
729
188k
    case Type::DCT32X16: {
730
188k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
731
188k
                        /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
732
188k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
733
188k
      break;
734
0
    }
735
200k
    case Type::DCT16X32: {
736
200k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
737
200k
                        /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
738
200k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
739
200k
      break;
740
0
    }
741
389k
    case Type::DCT32X32: {
742
389k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
743
389k
                        /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
744
389k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
745
389k
      break;
746
0
    }
747
25.5k
    case Type::DCT64X32: {
748
25.5k
      ReinterpretingDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
749
25.5k
                        /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
750
25.5k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 8 * 4);
751
25.5k
      break;
752
0
    }
753
24.8k
    case Type::DCT32X64: {
754
24.8k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
755
24.8k
                        /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
756
24.8k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 4 * 8);
757
24.8k
      break;
758
0
    }
759
207k
    case Type::DCT64X64: {
760
207k
      ReinterpretingDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
761
207k
                        /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
762
207k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 8 * 8);
763
207k
      break;
764
0
    }
765
3
    case Type::DCT128X64: {
766
3
      ReinterpretingDCT</*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
767
3
                        /*LF_ROWS=*/16, /*LF_COLS=*/8, /*ROWS=*/16, /*COLS=*/8>(
768
3
          dc, dc_stride, llf, 16 * kBlockDim, scratch, scratch + 16 * 8);
769
3
      break;
770
0
    }
771
3
    case Type::DCT64X128: {
772
3
      ReinterpretingDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
773
3
                        /*LF_ROWS=*/8, /*LF_COLS=*/16, /*ROWS=*/8, /*COLS=*/16>(
774
3
          dc, dc_stride, llf, 16 * kBlockDim, scratch, scratch + 8 * 16);
775
3
      break;
776
0
    }
777
18
    case Type::DCT128X128: {
778
18
      ReinterpretingDCT<
779
18
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
780
18
          /*LF_ROWS=*/16, /*LF_COLS=*/16, /*ROWS=*/16, /*COLS=*/16>(
781
18
          dc, dc_stride, llf, 16 * kBlockDim, scratch, scratch + 16 * 16);
782
18
      break;
783
0
    }
784
0
    case Type::DCT256X128: {
785
0
      ReinterpretingDCT<
786
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
787
0
          /*LF_ROWS=*/32, /*LF_COLS=*/16, /*ROWS=*/32, /*COLS=*/16>(
788
0
          dc, dc_stride, llf, 32 * kBlockDim, scratch, scratch + 32 * 16);
789
0
      break;
790
0
    }
791
0
    case Type::DCT128X256: {
792
0
      ReinterpretingDCT<
793
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
794
0
          /*LF_ROWS=*/16, /*LF_COLS=*/32, /*ROWS=*/16, /*COLS=*/32>(
795
0
          dc, dc_stride, llf, 32 * kBlockDim, scratch, scratch + 16 * 32);
796
0
      break;
797
0
    }
798
0
    case Type::DCT256X256: {
799
0
      ReinterpretingDCT<
800
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
801
0
          /*LF_ROWS=*/32, /*LF_COLS=*/32, /*ROWS=*/32, /*COLS=*/32>(
802
0
          dc, dc_stride, llf, 32 * kBlockDim, scratch, scratch + 32 * 32);
803
0
      break;
804
0
    }
805
6.70M
    case Type::DCT:
806
14.3M
    case Type::DCT2X2:
807
14.3M
    case Type::DCT4X4:
808
14.6M
    case Type::DCT4X8:
809
15.1M
    case Type::DCT8X4:
810
15.5M
    case Type::AFV0:
811
15.7M
    case Type::AFV1:
812
16.0M
    case Type::AFV2:
813
16.2M
    case Type::AFV3:
814
20.6M
    case Type::IDENTITY:
815
20.6M
      llf[0] = dc[0];
816
20.6M
      break;
817
23.9M
  };
818
23.9M
}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:jxl::N_AVX2::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: dec_group.cc:jxl::N_SSE4::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
dec_group.cc:jxl::N_AVX2::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Line
Count
Source
694
23.9M
                                              float* JXL_RESTRICT scratch) {
695
23.9M
  using Type = AcStrategyType;
696
23.9M
  HWY_ALIGN float warm_block[4 * 4];
697
23.9M
  HWY_ALIGN float warm_scratch_space[4 * 4 * 4];
698
23.9M
  switch (strategy) {
699
807k
    case Type::DCT16X8: {
700
807k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
701
807k
                        /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
702
807k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
703
807k
      break;
704
0
    }
705
867k
    case Type::DCT8X16: {
706
867k
      ReinterpretingDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
707
867k
                        /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
708
867k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
709
867k
      break;
710
0
    }
711
598k
    case Type::DCT16X16: {
712
598k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
713
598k
                        /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
714
598k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
715
598k
      break;
716
0
    }
717
36
    case Type::DCT32X8: {
718
36
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/kBlockDim,
719
36
                        /*LF_ROWS=*/4, /*LF_COLS=*/1, /*ROWS=*/4, /*COLS=*/1>(
720
36
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
721
36
      break;
722
0
    }
723
132
    case Type::DCT8X32: {
724
132
      ReinterpretingDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
725
132
                        /*LF_ROWS=*/1, /*LF_COLS=*/4, /*ROWS=*/1, /*COLS=*/4>(
726
132
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
727
132
      break;
728
0
    }
729
188k
    case Type::DCT32X16: {
730
188k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
731
188k
                        /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
732
188k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
733
188k
      break;
734
0
    }
735
200k
    case Type::DCT16X32: {
736
200k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
737
200k
                        /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
738
200k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
739
200k
      break;
740
0
    }
741
389k
    case Type::DCT32X32: {
742
389k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
743
389k
                        /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
744
389k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
745
389k
      break;
746
0
    }
747
25.5k
    case Type::DCT64X32: {
748
25.5k
      ReinterpretingDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
749
25.5k
                        /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
750
25.5k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 8 * 4);
751
25.5k
      break;
752
0
    }
753
24.8k
    case Type::DCT32X64: {
754
24.8k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
755
24.8k
                        /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
756
24.8k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 4 * 8);
757
24.8k
      break;
758
0
    }
759
207k
    case Type::DCT64X64: {
760
207k
      ReinterpretingDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
761
207k
                        /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
762
207k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 8 * 8);
763
207k
      break;
764
0
    }
765
3
    case Type::DCT128X64: {
766
3
      ReinterpretingDCT</*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
767
3
                        /*LF_ROWS=*/16, /*LF_COLS=*/8, /*ROWS=*/16, /*COLS=*/8>(
768
3
          dc, dc_stride, llf, 16 * kBlockDim, scratch, scratch + 16 * 8);
769
3
      break;
770
0
    }
771
3
    case Type::DCT64X128: {
772
3
      ReinterpretingDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
773
3
                        /*LF_ROWS=*/8, /*LF_COLS=*/16, /*ROWS=*/8, /*COLS=*/16>(
774
3
          dc, dc_stride, llf, 16 * kBlockDim, scratch, scratch + 8 * 16);
775
3
      break;
776
0
    }
777
18
    case Type::DCT128X128: {
778
18
      ReinterpretingDCT<
779
18
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
780
18
          /*LF_ROWS=*/16, /*LF_COLS=*/16, /*ROWS=*/16, /*COLS=*/16>(
781
18
          dc, dc_stride, llf, 16 * kBlockDim, scratch, scratch + 16 * 16);
782
18
      break;
783
0
    }
784
0
    case Type::DCT256X128: {
785
0
      ReinterpretingDCT<
786
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
787
0
          /*LF_ROWS=*/32, /*LF_COLS=*/16, /*ROWS=*/32, /*COLS=*/16>(
788
0
          dc, dc_stride, llf, 32 * kBlockDim, scratch, scratch + 32 * 16);
789
0
      break;
790
0
    }
791
0
    case Type::DCT128X256: {
792
0
      ReinterpretingDCT<
793
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
794
0
          /*LF_ROWS=*/16, /*LF_COLS=*/32, /*ROWS=*/16, /*COLS=*/32>(
795
0
          dc, dc_stride, llf, 32 * kBlockDim, scratch, scratch + 16 * 32);
796
0
      break;
797
0
    }
798
0
    case Type::DCT256X256: {
799
0
      ReinterpretingDCT<
800
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
801
0
          /*LF_ROWS=*/32, /*LF_COLS=*/32, /*ROWS=*/32, /*COLS=*/32>(
802
0
          dc, dc_stride, llf, 32 * kBlockDim, scratch, scratch + 32 * 32);
803
0
      break;
804
0
    }
805
6.70M
    case Type::DCT:
806
14.3M
    case Type::DCT2X2:
807
14.3M
    case Type::DCT4X4:
808
14.6M
    case Type::DCT4X8:
809
15.1M
    case Type::DCT8X4:
810
15.5M
    case Type::AFV0:
811
15.7M
    case Type::AFV1:
812
16.0M
    case Type::AFV2:
813
16.2M
    case Type::AFV3:
814
20.6M
    case Type::IDENTITY:
815
20.6M
      llf[0] = dc[0];
816
20.6M
      break;
817
23.9M
  };
818
23.9M
}
Unexecuted instantiation: dec_group.cc:jxl::N_SSE2::(anonymous namespace)::LowestFrequenciesFromDC(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
819
820
}  // namespace
821
// NOLINTNEXTLINE(google-readability-namespace-comments)
822
}  // namespace HWY_NAMESPACE
823
}  // namespace jxl
824
HWY_AFTER_NAMESPACE();
825
826
#endif  // LIB_JXL_DEC_TRANSFORMS_INL_H_