Coverage Report

Created: 2026-09-13 07:02

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.51M
                                  float* JXL_RESTRICT scratch_space) {
41
3.51M
  static_assert(LF_ROWS == ROWS,
42
3.51M
                "ReinterpretingDCT should only be called with LF == N");
43
3.51M
  static_assert(LF_COLS == COLS,
44
3.51M
                "ReinterpretingDCT should only be called with LF == N");
45
3.51M
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
3.51M
                                 scratch_space);
47
3.51M
  if (ROWS < COLS) {
48
2.61M
    for (size_t y = 0; y < LF_ROWS; y++) {
49
5.97M
      for (size_t x = 0; x < LF_COLS; x++) {
50
4.51M
        output[y * output_stride + x] =
51
4.51M
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
4.51M
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
4.51M
      }
54
1.46M
    }
55
2.36M
  } else {
56
8.55M
    for (size_t y = 0; y < LF_COLS; y++) {
57
34.7M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
28.5M
        output[y * output_stride + x] =
59
28.5M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
28.5M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
28.5M
      }
62
6.19M
    }
63
2.36M
  }
64
3.51M
}
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
838k
                                  float* JXL_RESTRICT scratch_space) {
41
838k
  static_assert(LF_ROWS == ROWS,
42
838k
                "ReinterpretingDCT should only be called with LF == N");
43
838k
  static_assert(LF_COLS == COLS,
44
838k
                "ReinterpretingDCT should only be called with LF == N");
45
838k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
838k
                                 scratch_space);
47
838k
  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
838k
  } else {
56
1.67M
    for (size_t y = 0; y < LF_COLS; y++) {
57
2.51M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
1.67M
        output[y * output_stride + x] =
59
1.67M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
1.67M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
1.67M
      }
62
838k
    }
63
838k
  }
64
838k
}
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
901k
                                  float* JXL_RESTRICT scratch_space) {
41
901k
  static_assert(LF_ROWS == ROWS,
42
901k
                "ReinterpretingDCT should only be called with LF == N");
43
901k
  static_assert(LF_COLS == COLS,
44
901k
                "ReinterpretingDCT should only be called with LF == N");
45
901k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
901k
                                 scratch_space);
47
901k
  if (ROWS < COLS) {
48
1.80M
    for (size_t y = 0; y < LF_ROWS; y++) {
49
2.70M
      for (size_t x = 0; x < LF_COLS; x++) {
50
1.80M
        output[y * output_stride + x] =
51
1.80M
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
1.80M
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
1.80M
      }
54
901k
    }
55
901k
  } 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
901k
}
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
629k
                                  float* JXL_RESTRICT scratch_space) {
41
629k
  static_assert(LF_ROWS == ROWS,
42
629k
                "ReinterpretingDCT should only be called with LF == N");
43
629k
  static_assert(LF_COLS == COLS,
44
629k
                "ReinterpretingDCT should only be called with LF == N");
45
629k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
629k
                                 scratch_space);
47
629k
  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
629k
  } else {
56
1.88M
    for (size_t y = 0; y < LF_COLS; y++) {
57
3.77M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
2.51M
        output[y * output_stride + x] =
59
2.51M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
2.51M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
2.51M
      }
62
1.25M
    }
63
629k
  }
64
629k
}
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
204k
                                  float* JXL_RESTRICT scratch_space) {
41
204k
  static_assert(LF_ROWS == ROWS,
42
204k
                "ReinterpretingDCT should only be called with LF == N");
43
204k
  static_assert(LF_COLS == COLS,
44
204k
                "ReinterpretingDCT should only be called with LF == N");
45
204k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
204k
                                 scratch_space);
47
204k
  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
204k
  } else {
56
613k
    for (size_t y = 0; y < LF_COLS; y++) {
57
2.04M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
1.63M
        output[y * output_stride + x] =
59
1.63M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
1.63M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
1.63M
      }
62
408k
    }
63
204k
  }
64
204k
}
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
224k
                                  float* JXL_RESTRICT scratch_space) {
41
224k
  static_assert(LF_ROWS == ROWS,
42
224k
                "ReinterpretingDCT should only be called with LF == N");
43
224k
  static_assert(LF_COLS == COLS,
44
224k
                "ReinterpretingDCT should only be called with LF == N");
45
224k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
224k
                                 scratch_space);
47
224k
  if (ROWS < COLS) {
48
673k
    for (size_t y = 0; y < LF_ROWS; y++) {
49
2.24M
      for (size_t x = 0; x < LF_COLS; x++) {
50
1.79M
        output[y * output_stride + x] =
51
1.79M
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
1.79M
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
1.79M
      }
54
448k
    }
55
224k
  } 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
224k
}
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
426k
                                  float* JXL_RESTRICT scratch_space) {
41
426k
  static_assert(LF_ROWS == ROWS,
42
426k
                "ReinterpretingDCT should only be called with LF == N");
43
426k
  static_assert(LF_COLS == COLS,
44
426k
                "ReinterpretingDCT should only be called with LF == N");
45
426k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
426k
                                 scratch_space);
47
426k
  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
426k
  } else {
56
2.13M
    for (size_t y = 0; y < LF_COLS; y++) {
57
8.52M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
6.82M
        output[y * output_stride + x] =
59
6.82M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
6.82M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
6.82M
      }
62
1.70M
    }
63
426k
  }
64
426k
}
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
29.3k
                                  float* JXL_RESTRICT scratch_space) {
41
29.3k
  static_assert(LF_ROWS == ROWS,
42
29.3k
                "ReinterpretingDCT should only be called with LF == N");
43
29.3k
  static_assert(LF_COLS == COLS,
44
29.3k
                "ReinterpretingDCT should only be called with LF == N");
45
29.3k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
29.3k
                                 scratch_space);
47
29.3k
  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
29.3k
  } else {
56
146k
    for (size_t y = 0; y < LF_COLS; y++) {
57
1.05M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
938k
        output[y * output_stride + x] =
59
938k
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
938k
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
938k
      }
62
117k
    }
63
29.3k
  }
64
29.3k
}
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
28.6k
                                  float* JXL_RESTRICT scratch_space) {
41
28.6k
  static_assert(LF_ROWS == ROWS,
42
28.6k
                "ReinterpretingDCT should only be called with LF == N");
43
28.6k
  static_assert(LF_COLS == COLS,
44
28.6k
                "ReinterpretingDCT should only be called with LF == N");
45
28.6k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
28.6k
                                 scratch_space);
47
28.6k
  if (ROWS < COLS) {
48
143k
    for (size_t y = 0; y < LF_ROWS; y++) {
49
1.03M
      for (size_t x = 0; x < LF_COLS; x++) {
50
916k
        output[y * output_stride + x] =
51
916k
            block[y * COLS + x] * DCTTotalResampleScale<ROWS, DCT_ROWS>(y) *
52
916k
            DCTTotalResampleScale<COLS, DCT_COLS>(x);
53
916k
      }
54
114k
    }
55
28.6k
  } 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
28.6k
}
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
233k
                                  float* JXL_RESTRICT scratch_space) {
41
233k
  static_assert(LF_ROWS == ROWS,
42
233k
                "ReinterpretingDCT should only be called with LF == N");
43
233k
  static_assert(LF_COLS == COLS,
44
233k
                "ReinterpretingDCT should only be called with LF == N");
45
233k
  ComputeScaledDCT<ROWS, COLS>()(DCTFrom(input, input_stride), block,
46
233k
                                 scratch_space);
47
233k
  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
233k
  } else {
56
2.10M
    for (size_t y = 0; y < LF_COLS; y++) {
57
16.8M
      for (size_t x = 0; x < LF_ROWS; x++) {
58
14.9M
        output[y * output_stride + x] =
59
14.9M
            block[y * ROWS + x] * DCTTotalResampleScale<COLS, DCT_COLS>(y) *
60
14.9M
            DCTTotalResampleScale<ROWS, DCT_ROWS>(x);
61
14.9M
      }
62
1.86M
    }
63
233k
  }
64
233k
}
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
76.5M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
76.5M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
76.5M
  static_assert(S % 2 == 0, "S should be even");
70
76.5M
  float temp[kDCTBlockSize];
71
76.5M
  constexpr size_t num_2x2 = S / 2;
72
255M
  for (size_t y = 0; y < num_2x2; y++) {
73
714M
    for (size_t x = 0; x < num_2x2; x++) {
74
535M
      float c00 = block[y * kBlockDim + x];
75
535M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
535M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
535M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
535M
      float r00 = c00 + c01 + c10 + c11;
79
535M
      float r01 = c00 + c01 - c10 - c11;
80
535M
      float r10 = c00 - c01 + c10 - c11;
81
535M
      float r11 = c00 - c01 - c10 + c11;
82
535M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
535M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
535M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
535M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
535M
    }
87
178M
  }
88
433M
  for (size_t y = 0; y < S; y++) {
89
2.50G
    for (size_t x = 0; x < S; x++) {
90
2.14G
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
2.14G
    }
92
357M
  }
93
76.5M
}
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
17.5M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
17.5M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
17.5M
  static_assert(S % 2 == 0, "S should be even");
70
17.5M
  float temp[kDCTBlockSize];
71
17.5M
  constexpr size_t num_2x2 = S / 2;
72
35.1M
  for (size_t y = 0; y < num_2x2; y++) {
73
35.1M
    for (size_t x = 0; x < num_2x2; x++) {
74
17.5M
      float c00 = block[y * kBlockDim + x];
75
17.5M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
17.5M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
17.5M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
17.5M
      float r00 = c00 + c01 + c10 + c11;
79
17.5M
      float r01 = c00 + c01 - c10 - c11;
80
17.5M
      float r10 = c00 - c01 + c10 - c11;
81
17.5M
      float r11 = c00 - c01 - c10 + c11;
82
17.5M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
17.5M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
17.5M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
17.5M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
17.5M
    }
87
17.5M
  }
88
52.6M
  for (size_t y = 0; y < S; y++) {
89
105M
    for (size_t x = 0; x < S; x++) {
90
70.2M
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
70.2M
    }
92
35.1M
  }
93
17.5M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
17.5M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
17.5M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
17.5M
  static_assert(S % 2 == 0, "S should be even");
70
17.5M
  float temp[kDCTBlockSize];
71
17.5M
  constexpr size_t num_2x2 = S / 2;
72
52.6M
  for (size_t y = 0; y < num_2x2; y++) {
73
105M
    for (size_t x = 0; x < num_2x2; x++) {
74
70.2M
      float c00 = block[y * kBlockDim + x];
75
70.2M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
70.2M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
70.2M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
70.2M
      float r00 = c00 + c01 + c10 + c11;
79
70.2M
      float r01 = c00 + c01 - c10 - c11;
80
70.2M
      float r10 = c00 - c01 + c10 - c11;
81
70.2M
      float r11 = c00 - c01 - c10 + c11;
82
70.2M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
70.2M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
70.2M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
70.2M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
70.2M
    }
87
35.1M
  }
88
87.8M
  for (size_t y = 0; y < S; y++) {
89
351M
    for (size_t x = 0; x < S; x++) {
90
281M
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
281M
    }
92
70.2M
  }
93
17.5M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Line
Count
Source
67
17.5M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
17.5M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
17.5M
  static_assert(S % 2 == 0, "S should be even");
70
17.5M
  float temp[kDCTBlockSize];
71
17.5M
  constexpr size_t num_2x2 = S / 2;
72
87.8M
  for (size_t y = 0; y < num_2x2; y++) {
73
351M
    for (size_t x = 0; x < num_2x2; x++) {
74
281M
      float c00 = block[y * kBlockDim + x];
75
281M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
281M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
281M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
281M
      float r00 = c00 + c01 + c10 + c11;
79
281M
      float r01 = c00 + c01 - c10 - c11;
80
281M
      float r10 = c00 - c01 + c10 - c11;
81
281M
      float r11 = c00 - c01 - c10 + c11;
82
281M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
281M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
281M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
281M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
281M
    }
87
70.2M
  }
88
158M
  for (size_t y = 0; y < S; y++) {
89
1.26G
    for (size_t x = 0; x < S; x++) {
90
1.12G
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
1.12G
    }
92
140M
  }
93
17.5M
}
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.95M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
7.95M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
7.95M
  static_assert(S % 2 == 0, "S should be even");
70
7.95M
  float temp[kDCTBlockSize];
71
7.95M
  constexpr size_t num_2x2 = S / 2;
72
15.9M
  for (size_t y = 0; y < num_2x2; y++) {
73
15.9M
    for (size_t x = 0; x < num_2x2; x++) {
74
7.95M
      float c00 = block[y * kBlockDim + x];
75
7.95M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
7.95M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
7.95M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
7.95M
      float r00 = c00 + c01 + c10 + c11;
79
7.95M
      float r01 = c00 + c01 - c10 - c11;
80
7.95M
      float r10 = c00 - c01 + c10 - c11;
81
7.95M
      float r11 = c00 - c01 - c10 + c11;
82
7.95M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
7.95M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
7.95M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
7.95M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
7.95M
    }
87
7.95M
  }
88
23.8M
  for (size_t y = 0; y < S; y++) {
89
47.7M
    for (size_t x = 0; x < S; x++) {
90
31.8M
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
31.8M
    }
92
15.9M
  }
93
7.95M
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
7.95M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
7.95M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
7.95M
  static_assert(S % 2 == 0, "S should be even");
70
7.95M
  float temp[kDCTBlockSize];
71
7.95M
  constexpr size_t num_2x2 = S / 2;
72
23.8M
  for (size_t y = 0; y < num_2x2; y++) {
73
47.7M
    for (size_t x = 0; x < num_2x2; x++) {
74
31.8M
      float c00 = block[y * kBlockDim + x];
75
31.8M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
31.8M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
31.8M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
31.8M
      float r00 = c00 + c01 + c10 + c11;
79
31.8M
      float r01 = c00 + c01 - c10 - c11;
80
31.8M
      float r10 = c00 - c01 + c10 - c11;
81
31.8M
      float r11 = c00 - c01 - c10 + c11;
82
31.8M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
31.8M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
31.8M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
31.8M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
31.8M
    }
87
15.9M
  }
88
39.7M
  for (size_t y = 0; y < S; y++) {
89
159M
    for (size_t x = 0; x < S; x++) {
90
127M
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
127M
    }
92
31.8M
  }
93
7.95M
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::IDCT2TopBlock<8ul>(float const*, unsigned long, float*)
Line
Count
Source
67
7.95M
void IDCT2TopBlock(const float* block, size_t stride_out, float* out) {
68
7.95M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
7.95M
  static_assert(S % 2 == 0, "S should be even");
70
7.95M
  float temp[kDCTBlockSize];
71
7.95M
  constexpr size_t num_2x2 = S / 2;
72
39.7M
  for (size_t y = 0; y < num_2x2; y++) {
73
159M
    for (size_t x = 0; x < num_2x2; x++) {
74
127M
      float c00 = block[y * kBlockDim + x];
75
127M
      float c01 = block[y * kBlockDim + num_2x2 + x];
76
127M
      float c10 = block[(y + num_2x2) * kBlockDim + x];
77
127M
      float c11 = block[(y + num_2x2) * kBlockDim + num_2x2 + x];
78
127M
      float r00 = c00 + c01 + c10 + c11;
79
127M
      float r01 = c00 + c01 - c10 - c11;
80
127M
      float r10 = c00 - c01 + c10 - c11;
81
127M
      float r11 = c00 - c01 - c10 + c11;
82
127M
      temp[y * 2 * kBlockDim + x * 2] = r00;
83
127M
      temp[y * 2 * kBlockDim + x * 2 + 1] = r01;
84
127M
      temp[(y * 2 + 1) * kBlockDim + x * 2] = r10;
85
127M
      temp[(y * 2 + 1) * kBlockDim + x * 2 + 1] = r11;
86
127M
    }
87
31.8M
  }
88
71.5M
  for (size_t y = 0; y < S; y++) {
89
572M
    for (size_t x = 0; x < S; x++) {
90
509M
      out[y * stride_out + x] = temp[y * kBlockDim + x];
91
509M
    }
92
63.6M
  }
93
7.95M
}
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
71.3M
void AFVIDCT4x4(const float* JXL_RESTRICT coeffs, float* JXL_RESTRICT pixels) {
96
71.3M
  HWY_ALIGN static constexpr float k4x4AFVBasis[16][16] = {
97
71.3M
      {
98
71.3M
          0.25,
99
71.3M
          0.25,
100
71.3M
          0.25,
101
71.3M
          0.25,
102
71.3M
          0.25,
103
71.3M
          0.25,
104
71.3M
          0.25,
105
71.3M
          0.25,
106
71.3M
          0.25,
107
71.3M
          0.25,
108
71.3M
          0.25,
109
71.3M
          0.25,
110
71.3M
          0.25,
111
71.3M
          0.25,
112
71.3M
          0.25,
113
71.3M
          0.25,
114
71.3M
      },
115
71.3M
      {
116
71.3M
          0.876902929799142f,
117
71.3M
          0.2206518106944235f,
118
71.3M
          -0.10140050393753763f,
119
71.3M
          -0.1014005039375375f,
120
71.3M
          0.2206518106944236f,
121
71.3M
          -0.10140050393753777f,
122
71.3M
          -0.10140050393753772f,
123
71.3M
          -0.10140050393753763f,
124
71.3M
          -0.10140050393753758f,
125
71.3M
          -0.10140050393753769f,
126
71.3M
          -0.1014005039375375f,
127
71.3M
          -0.10140050393753768f,
128
71.3M
          -0.10140050393753768f,
129
71.3M
          -0.10140050393753759f,
130
71.3M
          -0.10140050393753763f,
131
71.3M
          -0.10140050393753741f,
132
71.3M
      },
133
71.3M
      {
134
71.3M
          0.0,
135
71.3M
          0.0,
136
71.3M
          0.40670075830260755f,
137
71.3M
          0.44444816619734445f,
138
71.3M
          0.0,
139
71.3M
          0.0,
140
71.3M
          0.19574399372042936f,
141
71.3M
          0.2929100136981264f,
142
71.3M
          -0.40670075830260716f,
143
71.3M
          -0.19574399372042872f,
144
71.3M
          0.0,
145
71.3M
          0.11379074460448091f,
146
71.3M
          -0.44444816619734384f,
147
71.3M
          -0.29291001369812636f,
148
71.3M
          -0.1137907446044814f,
149
71.3M
          0.0,
150
71.3M
      },
151
71.3M
      {
152
71.3M
          0.0,
153
71.3M
          0.0,
154
71.3M
          -0.21255748058288748f,
155
71.3M
          0.3085497062849767f,
156
71.3M
          0.0,
157
71.3M
          0.4706702258572536f,
158
71.3M
          -0.1621205195722993f,
159
71.3M
          0.0,
160
71.3M
          -0.21255748058287047f,
161
71.3M
          -0.16212051957228327f,
162
71.3M
          -0.47067022585725277f,
163
71.3M
          -0.1464291867126764f,
164
71.3M
          0.3085497062849487f,
165
71.3M
          0.0,
166
71.3M
          -0.14642918671266536f,
167
71.3M
          0.4251149611657548f,
168
71.3M
      },
169
71.3M
      {
170
71.3M
          0.0,
171
71.3M
          -0.7071067811865474f,
172
71.3M
          0.0,
173
71.3M
          0.0,
174
71.3M
          0.7071067811865476f,
175
71.3M
          0.0,
176
71.3M
          0.0,
177
71.3M
          0.0,
178
71.3M
          0.0,
179
71.3M
          0.0,
180
71.3M
          0.0,
181
71.3M
          0.0,
182
71.3M
          0.0,
183
71.3M
          0.0,
184
71.3M
          0.0,
185
71.3M
          0.0,
186
71.3M
      },
187
71.3M
      {
188
71.3M
          -0.4105377591765233f,
189
71.3M
          0.6235485373547691f,
190
71.3M
          -0.06435071657946274f,
191
71.3M
          -0.06435071657946266f,
192
71.3M
          0.6235485373547694f,
193
71.3M
          -0.06435071657946284f,
194
71.3M
          -0.0643507165794628f,
195
71.3M
          -0.06435071657946274f,
196
71.3M
          -0.06435071657946272f,
197
71.3M
          -0.06435071657946279f,
198
71.3M
          -0.06435071657946266f,
199
71.3M
          -0.06435071657946277f,
200
71.3M
          -0.06435071657946277f,
201
71.3M
          -0.06435071657946273f,
202
71.3M
          -0.06435071657946274f,
203
71.3M
          -0.0643507165794626f,
204
71.3M
      },
205
71.3M
      {
206
71.3M
          0.0,
207
71.3M
          0.0,
208
71.3M
          -0.4517556589999482f,
209
71.3M
          0.15854503551840063f,
210
71.3M
          0.0,
211
71.3M
          -0.04038515160822202f,
212
71.3M
          0.0074182263792423875f,
213
71.3M
          0.39351034269210167f,
214
71.3M
          -0.45175565899994635f,
215
71.3M
          0.007418226379244351f,
216
71.3M
          0.1107416575309343f,
217
71.3M
          0.08298163094882051f,
218
71.3M
          0.15854503551839705f,
219
71.3M
          0.3935103426921022f,
220
71.3M
          0.0829816309488214f,
221
71.3M
          -0.45175565899994796f,
222
71.3M
      },
223
71.3M
      {
224
71.3M
          0.0,
225
71.3M
          0.0,
226
71.3M
          -0.304684750724869f,
227
71.3M
          0.5112616136591823f,
228
71.3M
          0.0,
229
71.3M
          0.0,
230
71.3M
          -0.290480129728998f,
231
71.3M
          -0.06578701549142804f,
232
71.3M
          0.304684750724884f,
233
71.3M
          0.2904801297290076f,
234
71.3M
          0.0,
235
71.3M
          -0.23889773523344604f,
236
71.3M
          -0.5112616136592012f,
237
71.3M
          0.06578701549142545f,
238
71.3M
          0.23889773523345467f,
239
71.3M
          0.0,
240
71.3M
      },
241
71.3M
      {
242
71.3M
          0.0,
243
71.3M
          0.0,
244
71.3M
          0.3017929516615495f,
245
71.3M
          0.25792362796341184f,
246
71.3M
          0.0,
247
71.3M
          0.16272340142866204f,
248
71.3M
          0.09520022653475037f,
249
71.3M
          0.0,
250
71.3M
          0.3017929516615503f,
251
71.3M
          0.09520022653475055f,
252
71.3M
          -0.16272340142866173f,
253
71.3M
          -0.35312385449816297f,
254
71.3M
          0.25792362796341295f,
255
71.3M
          0.0,
256
71.3M
          -0.3531238544981624f,
257
71.3M
          -0.6035859033230976f,
258
71.3M
      },
259
71.3M
      {
260
71.3M
          0.0,
261
71.3M
          0.0,
262
71.3M
          0.40824829046386274f,
263
71.3M
          0.0,
264
71.3M
          0.0,
265
71.3M
          0.0,
266
71.3M
          0.0,
267
71.3M
          -0.4082482904638628f,
268
71.3M
          -0.4082482904638635f,
269
71.3M
          0.0,
270
71.3M
          0.0,
271
71.3M
          -0.40824829046386296f,
272
71.3M
          0.0,
273
71.3M
          0.4082482904638634f,
274
71.3M
          0.408248290463863f,
275
71.3M
          0.0,
276
71.3M
      },
277
71.3M
      {
278
71.3M
          0.0,
279
71.3M
          0.0,
280
71.3M
          0.1747866975480809f,
281
71.3M
          0.0812611176717539f,
282
71.3M
          0.0,
283
71.3M
          0.0,
284
71.3M
          -0.3675398009862027f,
285
71.3M
          -0.307882213957909f,
286
71.3M
          -0.17478669754808135f,
287
71.3M
          0.3675398009862011f,
288
71.3M
          0.0,
289
71.3M
          0.4826689115059883f,
290
71.3M
          -0.08126111767175039f,
291
71.3M
          0.30788221395790305f,
292
71.3M
          -0.48266891150598584f,
293
71.3M
          0.0,
294
71.3M
      },
295
71.3M
      {
296
71.3M
          0.0,
297
71.3M
          0.0,
298
71.3M
          -0.21105601049335784f,
299
71.3M
          0.18567180916109802f,
300
71.3M
          0.0,
301
71.3M
          0.0,
302
71.3M
          0.49215859013738733f,
303
71.3M
          -0.38525013709251915f,
304
71.3M
          0.21105601049335806f,
305
71.3M
          -0.49215859013738905f,
306
71.3M
          0.0,
307
71.3M
          0.17419412659916217f,
308
71.3M
          -0.18567180916109904f,
309
71.3M
          0.3852501370925211f,
310
71.3M
          -0.1741941265991621f,
311
71.3M
          0.0,
312
71.3M
      },
313
71.3M
      {
314
71.3M
          0.0,
315
71.3M
          0.0,
316
71.3M
          -0.14266084808807264f,
317
71.3M
          -0.3416446842253372f,
318
71.3M
          0.0,
319
71.3M
          0.7367497537172237f,
320
71.3M
          0.24627107722075148f,
321
71.3M
          -0.08574019035519306f,
322
71.3M
          -0.14266084808807344f,
323
71.3M
          0.24627107722075137f,
324
71.3M
          0.14883399227113567f,
325
71.3M
          -0.04768680350229251f,
326
71.3M
          -0.3416446842253373f,
327
71.3M
          -0.08574019035519267f,
328
71.3M
          -0.047686803502292804f,
329
71.3M
          -0.14266084808807242f,
330
71.3M
      },
331
71.3M
      {
332
71.3M
          0.0,
333
71.3M
          0.0,
334
71.3M
          -0.13813540350758585f,
335
71.3M
          0.3302282550303788f,
336
71.3M
          0.0,
337
71.3M
          0.08755115000587084f,
338
71.3M
          -0.07946706605909573f,
339
71.3M
          -0.4613374887461511f,
340
71.3M
          -0.13813540350758294f,
341
71.3M
          -0.07946706605910261f,
342
71.3M
          0.49724647109535086f,
343
71.3M
          0.12538059448563663f,
344
71.3M
          0.3302282550303805f,
345
71.3M
          -0.4613374887461554f,
346
71.3M
          0.12538059448564315f,
347
71.3M
          -0.13813540350758452f,
348
71.3M
      },
349
71.3M
      {
350
71.3M
          0.0,
351
71.3M
          0.0,
352
71.3M
          -0.17437602599651067f,
353
71.3M
          0.0702790691196284f,
354
71.3M
          0.0,
355
71.3M
          -0.2921026642334881f,
356
71.3M
          0.3623817333531167f,
357
71.3M
          0.0,
358
71.3M
          -0.1743760259965108f,
359
71.3M
          0.36238173335311646f,
360
71.3M
          0.29210266423348785f,
361
71.3M
          -0.4326608024727445f,
362
71.3M
          0.07027906911962818f,
363
71.3M
          0.0,
364
71.3M
          -0.4326608024727457f,
365
71.3M
          0.34875205199302267f,
366
71.3M
      },
367
71.3M
      {
368
71.3M
          0.0,
369
71.3M
          0.0,
370
71.3M
          0.11354987314994337f,
371
71.3M
          -0.07417504595810355f,
372
71.3M
          0.0,
373
71.3M
          0.19402893032594343f,
374
71.3M
          -0.435190496523228f,
375
71.3M
          0.21918684838857466f,
376
71.3M
          0.11354987314994257f,
377
71.3M
          -0.4351904965232251f,
378
71.3M
          0.5550443808910661f,
379
71.3M
          -0.25468277124066463f,
380
71.3M
          -0.07417504595810233f,
381
71.3M
          0.2191868483885728f,
382
71.3M
          -0.25468277124066413f,
383
71.3M
          0.1135498731499429f,
384
71.3M
      },
385
71.3M
  };
386
387
71.3M
  const HWY_CAPPED(float, 16) d;
388
214M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
389
142M
    auto pixel = Zero(d);
390
2.42G
    for (size_t j = 0; j < 16; j++) {
391
2.28G
      auto cf = Set(d, coeffs[j]);
392
2.28G
      auto basis = Load(d, k4x4AFVBasis[j] + i);
393
2.28G
      pixel = MulAdd(cf, basis, pixel);
394
2.28G
    }
395
142M
    Store(pixel, d, pixels + i);
396
142M
  }
397
71.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
70.2M
void AFVIDCT4x4(const float* JXL_RESTRICT coeffs, float* JXL_RESTRICT pixels) {
96
70.2M
  HWY_ALIGN static constexpr float k4x4AFVBasis[16][16] = {
97
70.2M
      {
98
70.2M
          0.25,
99
70.2M
          0.25,
100
70.2M
          0.25,
101
70.2M
          0.25,
102
70.2M
          0.25,
103
70.2M
          0.25,
104
70.2M
          0.25,
105
70.2M
          0.25,
106
70.2M
          0.25,
107
70.2M
          0.25,
108
70.2M
          0.25,
109
70.2M
          0.25,
110
70.2M
          0.25,
111
70.2M
          0.25,
112
70.2M
          0.25,
113
70.2M
          0.25,
114
70.2M
      },
115
70.2M
      {
116
70.2M
          0.876902929799142f,
117
70.2M
          0.2206518106944235f,
118
70.2M
          -0.10140050393753763f,
119
70.2M
          -0.1014005039375375f,
120
70.2M
          0.2206518106944236f,
121
70.2M
          -0.10140050393753777f,
122
70.2M
          -0.10140050393753772f,
123
70.2M
          -0.10140050393753763f,
124
70.2M
          -0.10140050393753758f,
125
70.2M
          -0.10140050393753769f,
126
70.2M
          -0.1014005039375375f,
127
70.2M
          -0.10140050393753768f,
128
70.2M
          -0.10140050393753768f,
129
70.2M
          -0.10140050393753759f,
130
70.2M
          -0.10140050393753763f,
131
70.2M
          -0.10140050393753741f,
132
70.2M
      },
133
70.2M
      {
134
70.2M
          0.0,
135
70.2M
          0.0,
136
70.2M
          0.40670075830260755f,
137
70.2M
          0.44444816619734445f,
138
70.2M
          0.0,
139
70.2M
          0.0,
140
70.2M
          0.19574399372042936f,
141
70.2M
          0.2929100136981264f,
142
70.2M
          -0.40670075830260716f,
143
70.2M
          -0.19574399372042872f,
144
70.2M
          0.0,
145
70.2M
          0.11379074460448091f,
146
70.2M
          -0.44444816619734384f,
147
70.2M
          -0.29291001369812636f,
148
70.2M
          -0.1137907446044814f,
149
70.2M
          0.0,
150
70.2M
      },
151
70.2M
      {
152
70.2M
          0.0,
153
70.2M
          0.0,
154
70.2M
          -0.21255748058288748f,
155
70.2M
          0.3085497062849767f,
156
70.2M
          0.0,
157
70.2M
          0.4706702258572536f,
158
70.2M
          -0.1621205195722993f,
159
70.2M
          0.0,
160
70.2M
          -0.21255748058287047f,
161
70.2M
          -0.16212051957228327f,
162
70.2M
          -0.47067022585725277f,
163
70.2M
          -0.1464291867126764f,
164
70.2M
          0.3085497062849487f,
165
70.2M
          0.0,
166
70.2M
          -0.14642918671266536f,
167
70.2M
          0.4251149611657548f,
168
70.2M
      },
169
70.2M
      {
170
70.2M
          0.0,
171
70.2M
          -0.7071067811865474f,
172
70.2M
          0.0,
173
70.2M
          0.0,
174
70.2M
          0.7071067811865476f,
175
70.2M
          0.0,
176
70.2M
          0.0,
177
70.2M
          0.0,
178
70.2M
          0.0,
179
70.2M
          0.0,
180
70.2M
          0.0,
181
70.2M
          0.0,
182
70.2M
          0.0,
183
70.2M
          0.0,
184
70.2M
          0.0,
185
70.2M
          0.0,
186
70.2M
      },
187
70.2M
      {
188
70.2M
          -0.4105377591765233f,
189
70.2M
          0.6235485373547691f,
190
70.2M
          -0.06435071657946274f,
191
70.2M
          -0.06435071657946266f,
192
70.2M
          0.6235485373547694f,
193
70.2M
          -0.06435071657946284f,
194
70.2M
          -0.0643507165794628f,
195
70.2M
          -0.06435071657946274f,
196
70.2M
          -0.06435071657946272f,
197
70.2M
          -0.06435071657946279f,
198
70.2M
          -0.06435071657946266f,
199
70.2M
          -0.06435071657946277f,
200
70.2M
          -0.06435071657946277f,
201
70.2M
          -0.06435071657946273f,
202
70.2M
          -0.06435071657946274f,
203
70.2M
          -0.0643507165794626f,
204
70.2M
      },
205
70.2M
      {
206
70.2M
          0.0,
207
70.2M
          0.0,
208
70.2M
          -0.4517556589999482f,
209
70.2M
          0.15854503551840063f,
210
70.2M
          0.0,
211
70.2M
          -0.04038515160822202f,
212
70.2M
          0.0074182263792423875f,
213
70.2M
          0.39351034269210167f,
214
70.2M
          -0.45175565899994635f,
215
70.2M
          0.007418226379244351f,
216
70.2M
          0.1107416575309343f,
217
70.2M
          0.08298163094882051f,
218
70.2M
          0.15854503551839705f,
219
70.2M
          0.3935103426921022f,
220
70.2M
          0.0829816309488214f,
221
70.2M
          -0.45175565899994796f,
222
70.2M
      },
223
70.2M
      {
224
70.2M
          0.0,
225
70.2M
          0.0,
226
70.2M
          -0.304684750724869f,
227
70.2M
          0.5112616136591823f,
228
70.2M
          0.0,
229
70.2M
          0.0,
230
70.2M
          -0.290480129728998f,
231
70.2M
          -0.06578701549142804f,
232
70.2M
          0.304684750724884f,
233
70.2M
          0.2904801297290076f,
234
70.2M
          0.0,
235
70.2M
          -0.23889773523344604f,
236
70.2M
          -0.5112616136592012f,
237
70.2M
          0.06578701549142545f,
238
70.2M
          0.23889773523345467f,
239
70.2M
          0.0,
240
70.2M
      },
241
70.2M
      {
242
70.2M
          0.0,
243
70.2M
          0.0,
244
70.2M
          0.3017929516615495f,
245
70.2M
          0.25792362796341184f,
246
70.2M
          0.0,
247
70.2M
          0.16272340142866204f,
248
70.2M
          0.09520022653475037f,
249
70.2M
          0.0,
250
70.2M
          0.3017929516615503f,
251
70.2M
          0.09520022653475055f,
252
70.2M
          -0.16272340142866173f,
253
70.2M
          -0.35312385449816297f,
254
70.2M
          0.25792362796341295f,
255
70.2M
          0.0,
256
70.2M
          -0.3531238544981624f,
257
70.2M
          -0.6035859033230976f,
258
70.2M
      },
259
70.2M
      {
260
70.2M
          0.0,
261
70.2M
          0.0,
262
70.2M
          0.40824829046386274f,
263
70.2M
          0.0,
264
70.2M
          0.0,
265
70.2M
          0.0,
266
70.2M
          0.0,
267
70.2M
          -0.4082482904638628f,
268
70.2M
          -0.4082482904638635f,
269
70.2M
          0.0,
270
70.2M
          0.0,
271
70.2M
          -0.40824829046386296f,
272
70.2M
          0.0,
273
70.2M
          0.4082482904638634f,
274
70.2M
          0.408248290463863f,
275
70.2M
          0.0,
276
70.2M
      },
277
70.2M
      {
278
70.2M
          0.0,
279
70.2M
          0.0,
280
70.2M
          0.1747866975480809f,
281
70.2M
          0.0812611176717539f,
282
70.2M
          0.0,
283
70.2M
          0.0,
284
70.2M
          -0.3675398009862027f,
285
70.2M
          -0.307882213957909f,
286
70.2M
          -0.17478669754808135f,
287
70.2M
          0.3675398009862011f,
288
70.2M
          0.0,
289
70.2M
          0.4826689115059883f,
290
70.2M
          -0.08126111767175039f,
291
70.2M
          0.30788221395790305f,
292
70.2M
          -0.48266891150598584f,
293
70.2M
          0.0,
294
70.2M
      },
295
70.2M
      {
296
70.2M
          0.0,
297
70.2M
          0.0,
298
70.2M
          -0.21105601049335784f,
299
70.2M
          0.18567180916109802f,
300
70.2M
          0.0,
301
70.2M
          0.0,
302
70.2M
          0.49215859013738733f,
303
70.2M
          -0.38525013709251915f,
304
70.2M
          0.21105601049335806f,
305
70.2M
          -0.49215859013738905f,
306
70.2M
          0.0,
307
70.2M
          0.17419412659916217f,
308
70.2M
          -0.18567180916109904f,
309
70.2M
          0.3852501370925211f,
310
70.2M
          -0.1741941265991621f,
311
70.2M
          0.0,
312
70.2M
      },
313
70.2M
      {
314
70.2M
          0.0,
315
70.2M
          0.0,
316
70.2M
          -0.14266084808807264f,
317
70.2M
          -0.3416446842253372f,
318
70.2M
          0.0,
319
70.2M
          0.7367497537172237f,
320
70.2M
          0.24627107722075148f,
321
70.2M
          -0.08574019035519306f,
322
70.2M
          -0.14266084808807344f,
323
70.2M
          0.24627107722075137f,
324
70.2M
          0.14883399227113567f,
325
70.2M
          -0.04768680350229251f,
326
70.2M
          -0.3416446842253373f,
327
70.2M
          -0.08574019035519267f,
328
70.2M
          -0.047686803502292804f,
329
70.2M
          -0.14266084808807242f,
330
70.2M
      },
331
70.2M
      {
332
70.2M
          0.0,
333
70.2M
          0.0,
334
70.2M
          -0.13813540350758585f,
335
70.2M
          0.3302282550303788f,
336
70.2M
          0.0,
337
70.2M
          0.08755115000587084f,
338
70.2M
          -0.07946706605909573f,
339
70.2M
          -0.4613374887461511f,
340
70.2M
          -0.13813540350758294f,
341
70.2M
          -0.07946706605910261f,
342
70.2M
          0.49724647109535086f,
343
70.2M
          0.12538059448563663f,
344
70.2M
          0.3302282550303805f,
345
70.2M
          -0.4613374887461554f,
346
70.2M
          0.12538059448564315f,
347
70.2M
          -0.13813540350758452f,
348
70.2M
      },
349
70.2M
      {
350
70.2M
          0.0,
351
70.2M
          0.0,
352
70.2M
          -0.17437602599651067f,
353
70.2M
          0.0702790691196284f,
354
70.2M
          0.0,
355
70.2M
          -0.2921026642334881f,
356
70.2M
          0.3623817333531167f,
357
70.2M
          0.0,
358
70.2M
          -0.1743760259965108f,
359
70.2M
          0.36238173335311646f,
360
70.2M
          0.29210266423348785f,
361
70.2M
          -0.4326608024727445f,
362
70.2M
          0.07027906911962818f,
363
70.2M
          0.0,
364
70.2M
          -0.4326608024727457f,
365
70.2M
          0.34875205199302267f,
366
70.2M
      },
367
70.2M
      {
368
70.2M
          0.0,
369
70.2M
          0.0,
370
70.2M
          0.11354987314994337f,
371
70.2M
          -0.07417504595810355f,
372
70.2M
          0.0,
373
70.2M
          0.19402893032594343f,
374
70.2M
          -0.435190496523228f,
375
70.2M
          0.21918684838857466f,
376
70.2M
          0.11354987314994257f,
377
70.2M
          -0.4351904965232251f,
378
70.2M
          0.5550443808910661f,
379
70.2M
          -0.25468277124066463f,
380
70.2M
          -0.07417504595810233f,
381
70.2M
          0.2191868483885728f,
382
70.2M
          -0.25468277124066413f,
383
70.2M
          0.1135498731499429f,
384
70.2M
      },
385
70.2M
  };
386
387
70.2M
  const HWY_CAPPED(float, 16) d;
388
210M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
389
140M
    auto pixel = Zero(d);
390
2.38G
    for (size_t j = 0; j < 16; j++) {
391
2.24G
      auto cf = Set(d, coeffs[j]);
392
2.24G
      auto basis = Load(d, k4x4AFVBasis[j] + i);
393
2.24G
      pixel = MulAdd(cf, basis, pixel);
394
2.24G
    }
395
140M
    Store(pixel, d, pixels + i);
396
140M
  }
397
70.2M
}
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.13M
void AFVIDCT4x4(const float* JXL_RESTRICT coeffs, float* JXL_RESTRICT pixels) {
96
1.13M
  HWY_ALIGN static constexpr float k4x4AFVBasis[16][16] = {
97
1.13M
      {
98
1.13M
          0.25,
99
1.13M
          0.25,
100
1.13M
          0.25,
101
1.13M
          0.25,
102
1.13M
          0.25,
103
1.13M
          0.25,
104
1.13M
          0.25,
105
1.13M
          0.25,
106
1.13M
          0.25,
107
1.13M
          0.25,
108
1.13M
          0.25,
109
1.13M
          0.25,
110
1.13M
          0.25,
111
1.13M
          0.25,
112
1.13M
          0.25,
113
1.13M
          0.25,
114
1.13M
      },
115
1.13M
      {
116
1.13M
          0.876902929799142f,
117
1.13M
          0.2206518106944235f,
118
1.13M
          -0.10140050393753763f,
119
1.13M
          -0.1014005039375375f,
120
1.13M
          0.2206518106944236f,
121
1.13M
          -0.10140050393753777f,
122
1.13M
          -0.10140050393753772f,
123
1.13M
          -0.10140050393753763f,
124
1.13M
          -0.10140050393753758f,
125
1.13M
          -0.10140050393753769f,
126
1.13M
          -0.1014005039375375f,
127
1.13M
          -0.10140050393753768f,
128
1.13M
          -0.10140050393753768f,
129
1.13M
          -0.10140050393753759f,
130
1.13M
          -0.10140050393753763f,
131
1.13M
          -0.10140050393753741f,
132
1.13M
      },
133
1.13M
      {
134
1.13M
          0.0,
135
1.13M
          0.0,
136
1.13M
          0.40670075830260755f,
137
1.13M
          0.44444816619734445f,
138
1.13M
          0.0,
139
1.13M
          0.0,
140
1.13M
          0.19574399372042936f,
141
1.13M
          0.2929100136981264f,
142
1.13M
          -0.40670075830260716f,
143
1.13M
          -0.19574399372042872f,
144
1.13M
          0.0,
145
1.13M
          0.11379074460448091f,
146
1.13M
          -0.44444816619734384f,
147
1.13M
          -0.29291001369812636f,
148
1.13M
          -0.1137907446044814f,
149
1.13M
          0.0,
150
1.13M
      },
151
1.13M
      {
152
1.13M
          0.0,
153
1.13M
          0.0,
154
1.13M
          -0.21255748058288748f,
155
1.13M
          0.3085497062849767f,
156
1.13M
          0.0,
157
1.13M
          0.4706702258572536f,
158
1.13M
          -0.1621205195722993f,
159
1.13M
          0.0,
160
1.13M
          -0.21255748058287047f,
161
1.13M
          -0.16212051957228327f,
162
1.13M
          -0.47067022585725277f,
163
1.13M
          -0.1464291867126764f,
164
1.13M
          0.3085497062849487f,
165
1.13M
          0.0,
166
1.13M
          -0.14642918671266536f,
167
1.13M
          0.4251149611657548f,
168
1.13M
      },
169
1.13M
      {
170
1.13M
          0.0,
171
1.13M
          -0.7071067811865474f,
172
1.13M
          0.0,
173
1.13M
          0.0,
174
1.13M
          0.7071067811865476f,
175
1.13M
          0.0,
176
1.13M
          0.0,
177
1.13M
          0.0,
178
1.13M
          0.0,
179
1.13M
          0.0,
180
1.13M
          0.0,
181
1.13M
          0.0,
182
1.13M
          0.0,
183
1.13M
          0.0,
184
1.13M
          0.0,
185
1.13M
          0.0,
186
1.13M
      },
187
1.13M
      {
188
1.13M
          -0.4105377591765233f,
189
1.13M
          0.6235485373547691f,
190
1.13M
          -0.06435071657946274f,
191
1.13M
          -0.06435071657946266f,
192
1.13M
          0.6235485373547694f,
193
1.13M
          -0.06435071657946284f,
194
1.13M
          -0.0643507165794628f,
195
1.13M
          -0.06435071657946274f,
196
1.13M
          -0.06435071657946272f,
197
1.13M
          -0.06435071657946279f,
198
1.13M
          -0.06435071657946266f,
199
1.13M
          -0.06435071657946277f,
200
1.13M
          -0.06435071657946277f,
201
1.13M
          -0.06435071657946273f,
202
1.13M
          -0.06435071657946274f,
203
1.13M
          -0.0643507165794626f,
204
1.13M
      },
205
1.13M
      {
206
1.13M
          0.0,
207
1.13M
          0.0,
208
1.13M
          -0.4517556589999482f,
209
1.13M
          0.15854503551840063f,
210
1.13M
          0.0,
211
1.13M
          -0.04038515160822202f,
212
1.13M
          0.0074182263792423875f,
213
1.13M
          0.39351034269210167f,
214
1.13M
          -0.45175565899994635f,
215
1.13M
          0.007418226379244351f,
216
1.13M
          0.1107416575309343f,
217
1.13M
          0.08298163094882051f,
218
1.13M
          0.15854503551839705f,
219
1.13M
          0.3935103426921022f,
220
1.13M
          0.0829816309488214f,
221
1.13M
          -0.45175565899994796f,
222
1.13M
      },
223
1.13M
      {
224
1.13M
          0.0,
225
1.13M
          0.0,
226
1.13M
          -0.304684750724869f,
227
1.13M
          0.5112616136591823f,
228
1.13M
          0.0,
229
1.13M
          0.0,
230
1.13M
          -0.290480129728998f,
231
1.13M
          -0.06578701549142804f,
232
1.13M
          0.304684750724884f,
233
1.13M
          0.2904801297290076f,
234
1.13M
          0.0,
235
1.13M
          -0.23889773523344604f,
236
1.13M
          -0.5112616136592012f,
237
1.13M
          0.06578701549142545f,
238
1.13M
          0.23889773523345467f,
239
1.13M
          0.0,
240
1.13M
      },
241
1.13M
      {
242
1.13M
          0.0,
243
1.13M
          0.0,
244
1.13M
          0.3017929516615495f,
245
1.13M
          0.25792362796341184f,
246
1.13M
          0.0,
247
1.13M
          0.16272340142866204f,
248
1.13M
          0.09520022653475037f,
249
1.13M
          0.0,
250
1.13M
          0.3017929516615503f,
251
1.13M
          0.09520022653475055f,
252
1.13M
          -0.16272340142866173f,
253
1.13M
          -0.35312385449816297f,
254
1.13M
          0.25792362796341295f,
255
1.13M
          0.0,
256
1.13M
          -0.3531238544981624f,
257
1.13M
          -0.6035859033230976f,
258
1.13M
      },
259
1.13M
      {
260
1.13M
          0.0,
261
1.13M
          0.0,
262
1.13M
          0.40824829046386274f,
263
1.13M
          0.0,
264
1.13M
          0.0,
265
1.13M
          0.0,
266
1.13M
          0.0,
267
1.13M
          -0.4082482904638628f,
268
1.13M
          -0.4082482904638635f,
269
1.13M
          0.0,
270
1.13M
          0.0,
271
1.13M
          -0.40824829046386296f,
272
1.13M
          0.0,
273
1.13M
          0.4082482904638634f,
274
1.13M
          0.408248290463863f,
275
1.13M
          0.0,
276
1.13M
      },
277
1.13M
      {
278
1.13M
          0.0,
279
1.13M
          0.0,
280
1.13M
          0.1747866975480809f,
281
1.13M
          0.0812611176717539f,
282
1.13M
          0.0,
283
1.13M
          0.0,
284
1.13M
          -0.3675398009862027f,
285
1.13M
          -0.307882213957909f,
286
1.13M
          -0.17478669754808135f,
287
1.13M
          0.3675398009862011f,
288
1.13M
          0.0,
289
1.13M
          0.4826689115059883f,
290
1.13M
          -0.08126111767175039f,
291
1.13M
          0.30788221395790305f,
292
1.13M
          -0.48266891150598584f,
293
1.13M
          0.0,
294
1.13M
      },
295
1.13M
      {
296
1.13M
          0.0,
297
1.13M
          0.0,
298
1.13M
          -0.21105601049335784f,
299
1.13M
          0.18567180916109802f,
300
1.13M
          0.0,
301
1.13M
          0.0,
302
1.13M
          0.49215859013738733f,
303
1.13M
          -0.38525013709251915f,
304
1.13M
          0.21105601049335806f,
305
1.13M
          -0.49215859013738905f,
306
1.13M
          0.0,
307
1.13M
          0.17419412659916217f,
308
1.13M
          -0.18567180916109904f,
309
1.13M
          0.3852501370925211f,
310
1.13M
          -0.1741941265991621f,
311
1.13M
          0.0,
312
1.13M
      },
313
1.13M
      {
314
1.13M
          0.0,
315
1.13M
          0.0,
316
1.13M
          -0.14266084808807264f,
317
1.13M
          -0.3416446842253372f,
318
1.13M
          0.0,
319
1.13M
          0.7367497537172237f,
320
1.13M
          0.24627107722075148f,
321
1.13M
          -0.08574019035519306f,
322
1.13M
          -0.14266084808807344f,
323
1.13M
          0.24627107722075137f,
324
1.13M
          0.14883399227113567f,
325
1.13M
          -0.04768680350229251f,
326
1.13M
          -0.3416446842253373f,
327
1.13M
          -0.08574019035519267f,
328
1.13M
          -0.047686803502292804f,
329
1.13M
          -0.14266084808807242f,
330
1.13M
      },
331
1.13M
      {
332
1.13M
          0.0,
333
1.13M
          0.0,
334
1.13M
          -0.13813540350758585f,
335
1.13M
          0.3302282550303788f,
336
1.13M
          0.0,
337
1.13M
          0.08755115000587084f,
338
1.13M
          -0.07946706605909573f,
339
1.13M
          -0.4613374887461511f,
340
1.13M
          -0.13813540350758294f,
341
1.13M
          -0.07946706605910261f,
342
1.13M
          0.49724647109535086f,
343
1.13M
          0.12538059448563663f,
344
1.13M
          0.3302282550303805f,
345
1.13M
          -0.4613374887461554f,
346
1.13M
          0.12538059448564315f,
347
1.13M
          -0.13813540350758452f,
348
1.13M
      },
349
1.13M
      {
350
1.13M
          0.0,
351
1.13M
          0.0,
352
1.13M
          -0.17437602599651067f,
353
1.13M
          0.0702790691196284f,
354
1.13M
          0.0,
355
1.13M
          -0.2921026642334881f,
356
1.13M
          0.3623817333531167f,
357
1.13M
          0.0,
358
1.13M
          -0.1743760259965108f,
359
1.13M
          0.36238173335311646f,
360
1.13M
          0.29210266423348785f,
361
1.13M
          -0.4326608024727445f,
362
1.13M
          0.07027906911962818f,
363
1.13M
          0.0,
364
1.13M
          -0.4326608024727457f,
365
1.13M
          0.34875205199302267f,
366
1.13M
      },
367
1.13M
      {
368
1.13M
          0.0,
369
1.13M
          0.0,
370
1.13M
          0.11354987314994337f,
371
1.13M
          -0.07417504595810355f,
372
1.13M
          0.0,
373
1.13M
          0.19402893032594343f,
374
1.13M
          -0.435190496523228f,
375
1.13M
          0.21918684838857466f,
376
1.13M
          0.11354987314994257f,
377
1.13M
          -0.4351904965232251f,
378
1.13M
          0.5550443808910661f,
379
1.13M
          -0.25468277124066463f,
380
1.13M
          -0.07417504595810233f,
381
1.13M
          0.2191868483885728f,
382
1.13M
          -0.25468277124066413f,
383
1.13M
          0.1135498731499429f,
384
1.13M
      },
385
1.13M
  };
386
387
1.13M
  const HWY_CAPPED(float, 16) d;
388
3.39M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
389
2.26M
    auto pixel = Zero(d);
390
38.4M
    for (size_t j = 0; j < 16; j++) {
391
36.2M
      auto cf = Set(d, coeffs[j]);
392
36.2M
      auto basis = Load(d, k4x4AFVBasis[j] + i);
393
36.2M
      pixel = MulAdd(cf, basis, pixel);
394
36.2M
    }
395
2.26M
    Store(pixel, d, pixels + i);
396
2.26M
  }
397
1.13M
}
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
71.3M
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
71.3M
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
71.3M
  size_t afv_x = afv_kind & 1;
404
71.3M
  size_t afv_y = afv_kind / 2;
405
71.3M
  float dcs[3] = {};
406
71.3M
  float block00 = coefficients[0];
407
71.3M
  float block01 = coefficients[1];
408
71.3M
  float block10 = coefficients[8];
409
71.3M
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
71.3M
  dcs[1] = (block00 + block10 - block01);
411
71.3M
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
71.3M
  HWY_ALIGN float coeff[4 * 4];
414
71.3M
  coeff[0] = dcs[0];
415
356M
  for (size_t iy = 0; iy < 4; iy++) {
416
1.42G
    for (size_t ix = 0; ix < 4; ix++) {
417
1.14G
      if (ix == 0 && iy == 0) continue;
418
1.07G
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
1.07G
    }
420
285M
  }
421
71.3M
  HWY_ALIGN float block[4 * 8];
422
71.3M
  AFVIDCT4x4(coeff, block);
423
356M
  for (size_t iy = 0; iy < 4; iy++) {
424
1.42G
    for (size_t ix = 0; ix < 4; ix++) {
425
1.14G
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
1.14G
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
1.14G
    }
428
285M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
71.3M
  block[0] = dcs[1];
431
356M
  for (size_t iy = 0; iy < 4; iy++) {
432
1.42G
    for (size_t ix = 0; ix < 4; ix++) {
433
1.14G
      if (ix == 0 && iy == 0) continue;
434
1.07G
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
1.07G
    }
436
285M
  }
437
71.3M
  ComputeScaledIDCT<4, 4>()(
438
71.3M
      block,
439
71.3M
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
71.3M
            pixels_stride),
441
71.3M
      scratch_space);
442
  // IDCT4x8.
443
71.3M
  block[0] = dcs[2];
444
356M
  for (size_t iy = 0; iy < 4; iy++) {
445
2.56G
    for (size_t ix = 0; ix < 8; ix++) {
446
2.28G
      if (ix == 0 && iy == 0) continue;
447
2.21G
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
2.21G
    }
449
285M
  }
450
71.3M
  ComputeScaledIDCT<4, 8>()(
451
71.3M
      block,
452
71.3M
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
71.3M
      scratch_space);
454
71.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
17.5M
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
17.5M
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
17.5M
  size_t afv_x = afv_kind & 1;
404
17.5M
  size_t afv_y = afv_kind / 2;
405
17.5M
  float dcs[3] = {};
406
17.5M
  float block00 = coefficients[0];
407
17.5M
  float block01 = coefficients[1];
408
17.5M
  float block10 = coefficients[8];
409
17.5M
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
17.5M
  dcs[1] = (block00 + block10 - block01);
411
17.5M
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
17.5M
  HWY_ALIGN float coeff[4 * 4];
414
17.5M
  coeff[0] = dcs[0];
415
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
416
351M
    for (size_t ix = 0; ix < 4; ix++) {
417
281M
      if (ix == 0 && iy == 0) continue;
418
263M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
263M
    }
420
70.2M
  }
421
17.5M
  HWY_ALIGN float block[4 * 8];
422
17.5M
  AFVIDCT4x4(coeff, block);
423
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
424
351M
    for (size_t ix = 0; ix < 4; ix++) {
425
281M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
281M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
281M
    }
428
70.2M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
17.5M
  block[0] = dcs[1];
431
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
432
351M
    for (size_t ix = 0; ix < 4; ix++) {
433
281M
      if (ix == 0 && iy == 0) continue;
434
263M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
263M
    }
436
70.2M
  }
437
17.5M
  ComputeScaledIDCT<4, 4>()(
438
17.5M
      block,
439
17.5M
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
17.5M
            pixels_stride),
441
17.5M
      scratch_space);
442
  // IDCT4x8.
443
17.5M
  block[0] = dcs[2];
444
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
445
632M
    for (size_t ix = 0; ix < 8; ix++) {
446
562M
      if (ix == 0 && iy == 0) continue;
447
544M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
544M
    }
449
70.2M
  }
450
17.5M
  ComputeScaledIDCT<4, 8>()(
451
17.5M
      block,
452
17.5M
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
17.5M
      scratch_space);
454
17.5M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Line
Count
Source
401
17.5M
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
17.5M
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
17.5M
  size_t afv_x = afv_kind & 1;
404
17.5M
  size_t afv_y = afv_kind / 2;
405
17.5M
  float dcs[3] = {};
406
17.5M
  float block00 = coefficients[0];
407
17.5M
  float block01 = coefficients[1];
408
17.5M
  float block10 = coefficients[8];
409
17.5M
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
17.5M
  dcs[1] = (block00 + block10 - block01);
411
17.5M
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
17.5M
  HWY_ALIGN float coeff[4 * 4];
414
17.5M
  coeff[0] = dcs[0];
415
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
416
351M
    for (size_t ix = 0; ix < 4; ix++) {
417
281M
      if (ix == 0 && iy == 0) continue;
418
263M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
263M
    }
420
70.2M
  }
421
17.5M
  HWY_ALIGN float block[4 * 8];
422
17.5M
  AFVIDCT4x4(coeff, block);
423
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
424
351M
    for (size_t ix = 0; ix < 4; ix++) {
425
281M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
281M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
281M
    }
428
70.2M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
17.5M
  block[0] = dcs[1];
431
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
432
351M
    for (size_t ix = 0; ix < 4; ix++) {
433
281M
      if (ix == 0 && iy == 0) continue;
434
263M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
263M
    }
436
70.2M
  }
437
17.5M
  ComputeScaledIDCT<4, 4>()(
438
17.5M
      block,
439
17.5M
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
17.5M
            pixels_stride),
441
17.5M
      scratch_space);
442
  // IDCT4x8.
443
17.5M
  block[0] = dcs[2];
444
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
445
632M
    for (size_t ix = 0; ix < 8; ix++) {
446
562M
      if (ix == 0 && iy == 0) continue;
447
544M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
544M
    }
449
70.2M
  }
450
17.5M
  ComputeScaledIDCT<4, 8>()(
451
17.5M
      block,
452
17.5M
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
17.5M
      scratch_space);
454
17.5M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<2ul>(float const*, float*, unsigned long)
Line
Count
Source
401
17.5M
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
17.5M
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
17.5M
  size_t afv_x = afv_kind & 1;
404
17.5M
  size_t afv_y = afv_kind / 2;
405
17.5M
  float dcs[3] = {};
406
17.5M
  float block00 = coefficients[0];
407
17.5M
  float block01 = coefficients[1];
408
17.5M
  float block10 = coefficients[8];
409
17.5M
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
17.5M
  dcs[1] = (block00 + block10 - block01);
411
17.5M
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
17.5M
  HWY_ALIGN float coeff[4 * 4];
414
17.5M
  coeff[0] = dcs[0];
415
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
416
351M
    for (size_t ix = 0; ix < 4; ix++) {
417
281M
      if (ix == 0 && iy == 0) continue;
418
263M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
263M
    }
420
70.2M
  }
421
17.5M
  HWY_ALIGN float block[4 * 8];
422
17.5M
  AFVIDCT4x4(coeff, block);
423
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
424
351M
    for (size_t ix = 0; ix < 4; ix++) {
425
281M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
281M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
281M
    }
428
70.2M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
17.5M
  block[0] = dcs[1];
431
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
432
351M
    for (size_t ix = 0; ix < 4; ix++) {
433
281M
      if (ix == 0 && iy == 0) continue;
434
263M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
263M
    }
436
70.2M
  }
437
17.5M
  ComputeScaledIDCT<4, 4>()(
438
17.5M
      block,
439
17.5M
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
17.5M
            pixels_stride),
441
17.5M
      scratch_space);
442
  // IDCT4x8.
443
17.5M
  block[0] = dcs[2];
444
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
445
632M
    for (size_t ix = 0; ix < 8; ix++) {
446
562M
      if (ix == 0 && iy == 0) continue;
447
544M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
544M
    }
449
70.2M
  }
450
17.5M
  ComputeScaledIDCT<4, 8>()(
451
17.5M
      block,
452
17.5M
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
17.5M
      scratch_space);
454
17.5M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<3ul>(float const*, float*, unsigned long)
Line
Count
Source
401
17.5M
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
17.5M
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
17.5M
  size_t afv_x = afv_kind & 1;
404
17.5M
  size_t afv_y = afv_kind / 2;
405
17.5M
  float dcs[3] = {};
406
17.5M
  float block00 = coefficients[0];
407
17.5M
  float block01 = coefficients[1];
408
17.5M
  float block10 = coefficients[8];
409
17.5M
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
17.5M
  dcs[1] = (block00 + block10 - block01);
411
17.5M
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
17.5M
  HWY_ALIGN float coeff[4 * 4];
414
17.5M
  coeff[0] = dcs[0];
415
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
416
351M
    for (size_t ix = 0; ix < 4; ix++) {
417
281M
      if (ix == 0 && iy == 0) continue;
418
263M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
263M
    }
420
70.2M
  }
421
17.5M
  HWY_ALIGN float block[4 * 8];
422
17.5M
  AFVIDCT4x4(coeff, block);
423
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
424
351M
    for (size_t ix = 0; ix < 4; ix++) {
425
281M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
281M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
281M
    }
428
70.2M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
17.5M
  block[0] = dcs[1];
431
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
432
351M
    for (size_t ix = 0; ix < 4; ix++) {
433
281M
      if (ix == 0 && iy == 0) continue;
434
263M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
263M
    }
436
70.2M
  }
437
17.5M
  ComputeScaledIDCT<4, 4>()(
438
17.5M
      block,
439
17.5M
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
17.5M
            pixels_stride),
441
17.5M
      scratch_space);
442
  // IDCT4x8.
443
17.5M
  block[0] = dcs[2];
444
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
445
632M
    for (size_t ix = 0; ix < 8; ix++) {
446
562M
      if (ix == 0 && iy == 0) continue;
447
544M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
544M
    }
449
70.2M
  }
450
17.5M
  ComputeScaledIDCT<4, 8>()(
451
17.5M
      block,
452
17.5M
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
17.5M
      scratch_space);
454
17.5M
}
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
352k
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
352k
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
352k
  size_t afv_x = afv_kind & 1;
404
352k
  size_t afv_y = afv_kind / 2;
405
352k
  float dcs[3] = {};
406
352k
  float block00 = coefficients[0];
407
352k
  float block01 = coefficients[1];
408
352k
  float block10 = coefficients[8];
409
352k
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
352k
  dcs[1] = (block00 + block10 - block01);
411
352k
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
352k
  HWY_ALIGN float coeff[4 * 4];
414
352k
  coeff[0] = dcs[0];
415
1.76M
  for (size_t iy = 0; iy < 4; iy++) {
416
7.04M
    for (size_t ix = 0; ix < 4; ix++) {
417
5.63M
      if (ix == 0 && iy == 0) continue;
418
5.28M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
5.28M
    }
420
1.40M
  }
421
352k
  HWY_ALIGN float block[4 * 8];
422
352k
  AFVIDCT4x4(coeff, block);
423
1.76M
  for (size_t iy = 0; iy < 4; iy++) {
424
7.04M
    for (size_t ix = 0; ix < 4; ix++) {
425
5.63M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
5.63M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
5.63M
    }
428
1.40M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
352k
  block[0] = dcs[1];
431
1.76M
  for (size_t iy = 0; iy < 4; iy++) {
432
7.04M
    for (size_t ix = 0; ix < 4; ix++) {
433
5.63M
      if (ix == 0 && iy == 0) continue;
434
5.28M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
5.28M
    }
436
1.40M
  }
437
352k
  ComputeScaledIDCT<4, 4>()(
438
352k
      block,
439
352k
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
352k
            pixels_stride),
441
352k
      scratch_space);
442
  // IDCT4x8.
443
352k
  block[0] = dcs[2];
444
1.76M
  for (size_t iy = 0; iy < 4; iy++) {
445
12.6M
    for (size_t ix = 0; ix < 8; ix++) {
446
11.2M
      if (ix == 0 && iy == 0) continue;
447
10.9M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
10.9M
    }
449
1.40M
  }
450
352k
  ComputeScaledIDCT<4, 8>()(
451
352k
      block,
452
352k
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
352k
      scratch_space);
454
352k
}
dec_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformToPixels<1ul>(float const*, float*, unsigned long)
Line
Count
Source
401
220k
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
220k
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
220k
  size_t afv_x = afv_kind & 1;
404
220k
  size_t afv_y = afv_kind / 2;
405
220k
  float dcs[3] = {};
406
220k
  float block00 = coefficients[0];
407
220k
  float block01 = coefficients[1];
408
220k
  float block10 = coefficients[8];
409
220k
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
220k
  dcs[1] = (block00 + block10 - block01);
411
220k
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
220k
  HWY_ALIGN float coeff[4 * 4];
414
220k
  coeff[0] = dcs[0];
415
1.10M
  for (size_t iy = 0; iy < 4; iy++) {
416
4.40M
    for (size_t ix = 0; ix < 4; ix++) {
417
3.52M
      if (ix == 0 && iy == 0) continue;
418
3.30M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
3.30M
    }
420
880k
  }
421
220k
  HWY_ALIGN float block[4 * 8];
422
220k
  AFVIDCT4x4(coeff, block);
423
1.10M
  for (size_t iy = 0; iy < 4; iy++) {
424
4.40M
    for (size_t ix = 0; ix < 4; ix++) {
425
3.52M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
3.52M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
3.52M
    }
428
880k
  }
429
  // IDCT4x4 in (odd, even) positions.
430
220k
  block[0] = dcs[1];
431
1.10M
  for (size_t iy = 0; iy < 4; iy++) {
432
4.40M
    for (size_t ix = 0; ix < 4; ix++) {
433
3.52M
      if (ix == 0 && iy == 0) continue;
434
3.30M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
3.30M
    }
436
880k
  }
437
220k
  ComputeScaledIDCT<4, 4>()(
438
220k
      block,
439
220k
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
220k
            pixels_stride),
441
220k
      scratch_space);
442
  // IDCT4x8.
443
220k
  block[0] = dcs[2];
444
1.10M
  for (size_t iy = 0; iy < 4; iy++) {
445
7.92M
    for (size_t ix = 0; ix < 8; ix++) {
446
7.04M
      if (ix == 0 && iy == 0) continue;
447
6.82M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
6.82M
    }
449
880k
  }
450
220k
  ComputeScaledIDCT<4, 8>()(
451
220k
      block,
452
220k
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
220k
      scratch_space);
454
220k
}
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.98M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
3.98M
    }
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.98M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
3.98M
    }
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.55M
    for (size_t ix = 0; ix < 8; ix++) {
446
8.49M
      if (ix == 0 && iy == 0) continue;
447
8.22M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
8.22M
    }
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
294k
                          float* JXL_RESTRICT pixels, size_t pixels_stride) {
402
294k
  HWY_ALIGN float scratch_space[4 * 8 * 4];
403
294k
  size_t afv_x = afv_kind & 1;
404
294k
  size_t afv_y = afv_kind / 2;
405
294k
  float dcs[3] = {};
406
294k
  float block00 = coefficients[0];
407
294k
  float block01 = coefficients[1];
408
294k
  float block10 = coefficients[8];
409
294k
  dcs[0] = (block00 + block10 + block01) * 4.0f;
410
294k
  dcs[1] = (block00 + block10 - block01);
411
294k
  dcs[2] = block00 - block10;
412
  // IAFV: (even, even) positions.
413
294k
  HWY_ALIGN float coeff[4 * 4];
414
294k
  coeff[0] = dcs[0];
415
1.47M
  for (size_t iy = 0; iy < 4; iy++) {
416
5.88M
    for (size_t ix = 0; ix < 4; ix++) {
417
4.70M
      if (ix == 0 && iy == 0) continue;
418
4.41M
      coeff[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2];
419
4.41M
    }
420
1.17M
  }
421
294k
  HWY_ALIGN float block[4 * 8];
422
294k
  AFVIDCT4x4(coeff, block);
423
1.47M
  for (size_t iy = 0; iy < 4; iy++) {
424
5.88M
    for (size_t ix = 0; ix < 4; ix++) {
425
4.70M
      pixels[(iy + afv_y * 4) * pixels_stride + afv_x * 4 + ix] =
426
4.70M
          block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)];
427
4.70M
    }
428
1.17M
  }
429
  // IDCT4x4 in (odd, even) positions.
430
294k
  block[0] = dcs[1];
431
1.47M
  for (size_t iy = 0; iy < 4; iy++) {
432
5.88M
    for (size_t ix = 0; ix < 4; ix++) {
433
4.70M
      if (ix == 0 && iy == 0) continue;
434
4.41M
      block[iy * 4 + ix] = coefficients[iy * 2 * 8 + ix * 2 + 1];
435
4.41M
    }
436
1.17M
  }
437
294k
  ComputeScaledIDCT<4, 4>()(
438
294k
      block,
439
294k
      DCTTo(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
440
294k
            pixels_stride),
441
294k
      scratch_space);
442
  // IDCT4x8.
443
294k
  block[0] = dcs[2];
444
1.47M
  for (size_t iy = 0; iy < 4; iy++) {
445
10.5M
    for (size_t ix = 0; ix < 8; ix++) {
446
9.41M
      if (ix == 0 && iy == 0) continue;
447
9.11M
      block[iy * 8 + ix] = coefficients[(1 + iy * 2) * 8 + ix];
448
9.11M
    }
449
1.17M
  }
450
294k
  ComputeScaledIDCT<4, 8>()(
451
294k
      block,
452
294k
      DCTTo(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
453
294k
      scratch_space);
454
294k
}
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
243M
                                        float* scratch_space) {
461
243M
  using Type = AcStrategyType;
462
243M
  switch (strategy) {
463
21.6M
    case Type::IDENTITY: {
464
21.6M
      float dcs[4] = {};
465
21.6M
      float block00 = coefficients[0];
466
21.6M
      float block01 = coefficients[1];
467
21.6M
      float block10 = coefficients[8];
468
21.6M
      float block11 = coefficients[9];
469
21.6M
      dcs[0] = block00 + block01 + block10 + block11;
470
21.6M
      dcs[1] = block00 + block01 - block10 - block11;
471
21.6M
      dcs[2] = block00 - block01 + block10 - block11;
472
21.6M
      dcs[3] = block00 - block01 - block10 + block11;
473
65.0M
      for (size_t y = 0; y < 2; y++) {
474
130M
        for (size_t x = 0; x < 2; x++) {
475
86.7M
          float block_dc = dcs[y * 2 + x];
476
86.7M
          float residual_sum = 0;
477
433M
          for (size_t iy = 0; iy < 4; iy++) {
478
1.73G
            for (size_t ix = 0; ix < 4; ix++) {
479
1.38G
              if (ix == 0 && iy == 0) continue;
480
1.30G
              residual_sum += coefficients[(y + iy * 2) * 8 + x + ix * 2];
481
1.30G
            }
482
347M
          }
483
86.7M
          pixels[(4 * y + 1) * pixels_stride + 4 * x + 1] =
484
86.7M
              block_dc - residual_sum * (1.0f / 16);
485
433M
          for (size_t iy = 0; iy < 4; iy++) {
486
1.73G
            for (size_t ix = 0; ix < 4; ix++) {
487
1.38G
              if (ix == 1 && iy == 1) continue;
488
1.30G
              pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] =
489
1.30G
                  coefficients[(y + iy * 2) * 8 + x + ix * 2] +
490
1.30G
                  pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
491
1.30G
            }
492
347M
          }
493
86.7M
          pixels[y * 4 * pixels_stride + x * 4] =
494
86.7M
              coefficients[(y + 2) * 8 + x + 2] +
495
86.7M
              pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
496
86.7M
        }
497
43.3M
      }
498
21.6M
      break;
499
0
    }
500
18.1M
    case Type::DCT8X4: {
501
18.1M
      float dcs[2] = {};
502
18.1M
      float block0 = coefficients[0];
503
18.1M
      float block1 = coefficients[8];
504
18.1M
      dcs[0] = block0 + block1;
505
18.1M
      dcs[1] = block0 - block1;
506
54.4M
      for (size_t x = 0; x < 2; x++) {
507
36.2M
        HWY_ALIGN float block[4 * 8];
508
36.2M
        block[0] = dcs[x];
509
181M
        for (size_t iy = 0; iy < 4; iy++) {
510
1.30G
          for (size_t ix = 0; ix < 8; ix++) {
511
1.16G
            if (ix == 0 && iy == 0) continue;
512
1.12G
            block[iy * 8 + ix] = coefficients[(x + iy * 2) * 8 + ix];
513
1.12G
          }
514
145M
        }
515
36.2M
        ComputeScaledIDCT<8, 4>()(block, DCTTo(pixels + x * 4, pixels_stride),
516
36.2M
                                  scratch_space);
517
36.2M
      }
518
18.1M
      break;
519
0
    }
520
17.8M
    case Type::DCT4X8: {
521
17.8M
      float dcs[2] = {};
522
17.8M
      float block0 = coefficients[0];
523
17.8M
      float block1 = coefficients[8];
524
17.8M
      dcs[0] = block0 + block1;
525
17.8M
      dcs[1] = block0 - block1;
526
53.4M
      for (size_t y = 0; y < 2; y++) {
527
35.6M
        HWY_ALIGN float block[4 * 8];
528
35.6M
        block[0] = dcs[y];
529
178M
        for (size_t iy = 0; iy < 4; iy++) {
530
1.28G
          for (size_t ix = 0; ix < 8; ix++) {
531
1.14G
            if (ix == 0 && iy == 0) continue;
532
1.10G
            block[iy * 8 + ix] = coefficients[(y + iy * 2) * 8 + ix];
533
1.10G
          }
534
142M
        }
535
35.6M
        ComputeScaledIDCT<4, 8>()(
536
35.6M
            block, DCTTo(pixels + y * 4 * pixels_stride, pixels_stride),
537
35.6M
            scratch_space);
538
35.6M
      }
539
17.8M
      break;
540
0
    }
541
17.5M
    case Type::DCT4X4: {
542
17.5M
      float dcs[4] = {};
543
17.5M
      float block00 = coefficients[0];
544
17.5M
      float block01 = coefficients[1];
545
17.5M
      float block10 = coefficients[8];
546
17.5M
      float block11 = coefficients[9];
547
17.5M
      dcs[0] = block00 + block01 + block10 + block11;
548
17.5M
      dcs[1] = block00 + block01 - block10 - block11;
549
17.5M
      dcs[2] = block00 - block01 + block10 - block11;
550
17.5M
      dcs[3] = block00 - block01 - block10 + block11;
551
52.6M
      for (size_t y = 0; y < 2; y++) {
552
105M
        for (size_t x = 0; x < 2; x++) {
553
70.2M
          HWY_ALIGN float block[4 * 4];
554
70.2M
          block[0] = dcs[y * 2 + x];
555
351M
          for (size_t iy = 0; iy < 4; iy++) {
556
1.40G
            for (size_t ix = 0; ix < 4; ix++) {
557
1.12G
              if (ix == 0 && iy == 0) continue;
558
1.05G
              block[iy * 4 + ix] = coefficients[(y + iy * 2) * 8 + x + ix * 2];
559
1.05G
            }
560
281M
          }
561
70.2M
          ComputeScaledIDCT<4, 4>()(
562
70.2M
              block,
563
70.2M
              DCTTo(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
564
70.2M
              scratch_space);
565
70.2M
        }
566
35.1M
      }
567
17.5M
      break;
568
0
    }
569
25.5M
    case Type::DCT2X2: {
570
25.5M
      HWY_ALIGN float coeffs[kDCTBlockSize];
571
25.5M
      memcpy(coeffs, coefficients, sizeof(float) * kDCTBlockSize);
572
25.5M
      IDCT2TopBlock<2>(coeffs, kBlockDim, coeffs);
573
25.5M
      IDCT2TopBlock<4>(coeffs, kBlockDim, coeffs);
574
25.5M
      IDCT2TopBlock<8>(coeffs, kBlockDim, coeffs);
575
229M
      for (size_t y = 0; y < kBlockDim; y++) {
576
1.83G
        for (size_t x = 0; x < kBlockDim; x++) {
577
1.63G
          pixels[y * pixels_stride + x] = coeffs[y * kBlockDim + x];
578
1.63G
        }
579
204M
      }
580
25.5M
      break;
581
0
    }
582
7.61M
    case Type::DCT16X16: {
583
7.61M
      ComputeScaledIDCT<16, 16>()(coefficients, DCTTo(pixels, pixels_stride),
584
7.61M
                                  scratch_space);
585
7.61M
      break;
586
0
    }
587
14.6M
    case Type::DCT16X8: {
588
14.6M
      ComputeScaledIDCT<16, 8>()(coefficients, DCTTo(pixels, pixels_stride),
589
14.6M
                                 scratch_space);
590
14.6M
      break;
591
0
    }
592
14.6M
    case Type::DCT8X16: {
593
14.6M
      ComputeScaledIDCT<8, 16>()(coefficients, DCTTo(pixels, pixels_stride),
594
14.6M
                                 scratch_space);
595
14.6M
      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.96M
    case Type::DCT32X16: {
608
2.96M
      ComputeScaledIDCT<32, 16>()(coefficients, DCTTo(pixels, pixels_stride),
609
2.96M
                                  scratch_space);
610
2.96M
      break;
611
0
    }
612
2.95M
    case Type::DCT16X32: {
613
2.95M
      ComputeScaledIDCT<16, 32>()(coefficients, DCTTo(pixels, pixels_stride),
614
2.95M
                                  scratch_space);
615
2.95M
      break;
616
0
    }
617
1.82M
    case Type::DCT32X32: {
618
1.82M
      ComputeScaledIDCT<32, 32>()(coefficients, DCTTo(pixels, pixels_stride),
619
1.82M
                                  scratch_space);
620
1.82M
      break;
621
0
    }
622
24.4M
    case Type::DCT: {
623
24.4M
      ComputeScaledIDCT<8, 8>()(coefficients, DCTTo(pixels, pixels_stride),
624
24.4M
                                scratch_space);
625
24.4M
      break;
626
0
    }
627
17.9M
    case Type::AFV0: {
628
17.9M
      AFVTransformToPixels<0>(coefficients, pixels, pixels_stride);
629
17.9M
      break;
630
0
    }
631
17.7M
    case Type::AFV1: {
632
17.7M
      AFVTransformToPixels<1>(coefficients, pixels, pixels_stride);
633
17.7M
      break;
634
0
    }
635
17.8M
    case Type::AFV2: {
636
17.8M
      AFVTransformToPixels<2>(coefficients, pixels, pixels_stride);
637
17.8M
      break;
638
0
    }
639
17.8M
    case Type::AFV3: {
640
17.8M
      AFVTransformToPixels<3>(coefficients, pixels, pixels_stride);
641
17.8M
      break;
642
0
    }
643
877k
    case Type::DCT64X32: {
644
877k
      ComputeScaledIDCT<64, 32>()(coefficients, DCTTo(pixels, pixels_stride),
645
877k
                                  scratch_space);
646
877k
      break;
647
0
    }
648
537k
    case Type::DCT32X64: {
649
537k
      ComputeScaledIDCT<32, 64>()(coefficients, DCTTo(pixels, pixels_stride),
650
537k
                                  scratch_space);
651
537k
      break;
652
0
    }
653
479k
    case Type::DCT64X64: {
654
479k
      ComputeScaledIDCT<64, 64>()(coefficients, DCTTo(pixels, pixels_stride),
655
479k
                                  scratch_space);
656
479k
      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
243M
  }
689
243M
}
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
218M
                                        float* scratch_space) {
461
218M
  using Type = AcStrategyType;
462
218M
  switch (strategy) {
463
17.5M
    case Type::IDENTITY: {
464
17.5M
      float dcs[4] = {};
465
17.5M
      float block00 = coefficients[0];
466
17.5M
      float block01 = coefficients[1];
467
17.5M
      float block10 = coefficients[8];
468
17.5M
      float block11 = coefficients[9];
469
17.5M
      dcs[0] = block00 + block01 + block10 + block11;
470
17.5M
      dcs[1] = block00 + block01 - block10 - block11;
471
17.5M
      dcs[2] = block00 - block01 + block10 - block11;
472
17.5M
      dcs[3] = block00 - block01 - block10 + block11;
473
52.6M
      for (size_t y = 0; y < 2; y++) {
474
105M
        for (size_t x = 0; x < 2; x++) {
475
70.2M
          float block_dc = dcs[y * 2 + x];
476
70.2M
          float residual_sum = 0;
477
351M
          for (size_t iy = 0; iy < 4; iy++) {
478
1.40G
            for (size_t ix = 0; ix < 4; ix++) {
479
1.12G
              if (ix == 0 && iy == 0) continue;
480
1.05G
              residual_sum += coefficients[(y + iy * 2) * 8 + x + ix * 2];
481
1.05G
            }
482
281M
          }
483
70.2M
          pixels[(4 * y + 1) * pixels_stride + 4 * x + 1] =
484
70.2M
              block_dc - residual_sum * (1.0f / 16);
485
351M
          for (size_t iy = 0; iy < 4; iy++) {
486
1.40G
            for (size_t ix = 0; ix < 4; ix++) {
487
1.12G
              if (ix == 1 && iy == 1) continue;
488
1.05G
              pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] =
489
1.05G
                  coefficients[(y + iy * 2) * 8 + x + ix * 2] +
490
1.05G
                  pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
491
1.05G
            }
492
281M
          }
493
70.2M
          pixels[y * 4 * pixels_stride + x * 4] =
494
70.2M
              coefficients[(y + 2) * 8 + x + 2] +
495
70.2M
              pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
496
70.2M
        }
497
35.1M
      }
498
17.5M
      break;
499
0
    }
500
17.5M
    case Type::DCT8X4: {
501
17.5M
      float dcs[2] = {};
502
17.5M
      float block0 = coefficients[0];
503
17.5M
      float block1 = coefficients[8];
504
17.5M
      dcs[0] = block0 + block1;
505
17.5M
      dcs[1] = block0 - block1;
506
52.6M
      for (size_t x = 0; x < 2; x++) {
507
35.1M
        HWY_ALIGN float block[4 * 8];
508
35.1M
        block[0] = dcs[x];
509
175M
        for (size_t iy = 0; iy < 4; iy++) {
510
1.26G
          for (size_t ix = 0; ix < 8; ix++) {
511
1.12G
            if (ix == 0 && iy == 0) continue;
512
1.08G
            block[iy * 8 + ix] = coefficients[(x + iy * 2) * 8 + ix];
513
1.08G
          }
514
140M
        }
515
35.1M
        ComputeScaledIDCT<8, 4>()(block, DCTTo(pixels + x * 4, pixels_stride),
516
35.1M
                                  scratch_space);
517
35.1M
      }
518
17.5M
      break;
519
0
    }
520
17.5M
    case Type::DCT4X8: {
521
17.5M
      float dcs[2] = {};
522
17.5M
      float block0 = coefficients[0];
523
17.5M
      float block1 = coefficients[8];
524
17.5M
      dcs[0] = block0 + block1;
525
17.5M
      dcs[1] = block0 - block1;
526
52.6M
      for (size_t y = 0; y < 2; y++) {
527
35.1M
        HWY_ALIGN float block[4 * 8];
528
35.1M
        block[0] = dcs[y];
529
175M
        for (size_t iy = 0; iy < 4; iy++) {
530
1.26G
          for (size_t ix = 0; ix < 8; ix++) {
531
1.12G
            if (ix == 0 && iy == 0) continue;
532
1.08G
            block[iy * 8 + ix] = coefficients[(y + iy * 2) * 8 + ix];
533
1.08G
          }
534
140M
        }
535
35.1M
        ComputeScaledIDCT<4, 8>()(
536
35.1M
            block, DCTTo(pixels + y * 4 * pixels_stride, pixels_stride),
537
35.1M
            scratch_space);
538
35.1M
      }
539
17.5M
      break;
540
0
    }
541
17.5M
    case Type::DCT4X4: {
542
17.5M
      float dcs[4] = {};
543
17.5M
      float block00 = coefficients[0];
544
17.5M
      float block01 = coefficients[1];
545
17.5M
      float block10 = coefficients[8];
546
17.5M
      float block11 = coefficients[9];
547
17.5M
      dcs[0] = block00 + block01 + block10 + block11;
548
17.5M
      dcs[1] = block00 + block01 - block10 - block11;
549
17.5M
      dcs[2] = block00 - block01 + block10 - block11;
550
17.5M
      dcs[3] = block00 - block01 - block10 + block11;
551
52.6M
      for (size_t y = 0; y < 2; y++) {
552
105M
        for (size_t x = 0; x < 2; x++) {
553
70.2M
          HWY_ALIGN float block[4 * 4];
554
70.2M
          block[0] = dcs[y * 2 + x];
555
351M
          for (size_t iy = 0; iy < 4; iy++) {
556
1.40G
            for (size_t ix = 0; ix < 4; ix++) {
557
1.12G
              if (ix == 0 && iy == 0) continue;
558
1.05G
              block[iy * 4 + ix] = coefficients[(y + iy * 2) * 8 + x + ix * 2];
559
1.05G
            }
560
281M
          }
561
70.2M
          ComputeScaledIDCT<4, 4>()(
562
70.2M
              block,
563
70.2M
              DCTTo(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
564
70.2M
              scratch_space);
565
70.2M
        }
566
35.1M
      }
567
17.5M
      break;
568
0
    }
569
17.5M
    case Type::DCT2X2: {
570
17.5M
      HWY_ALIGN float coeffs[kDCTBlockSize];
571
17.5M
      memcpy(coeffs, coefficients, sizeof(float) * kDCTBlockSize);
572
17.5M
      IDCT2TopBlock<2>(coeffs, kBlockDim, coeffs);
573
17.5M
      IDCT2TopBlock<4>(coeffs, kBlockDim, coeffs);
574
17.5M
      IDCT2TopBlock<8>(coeffs, kBlockDim, coeffs);
575
158M
      for (size_t y = 0; y < kBlockDim; y++) {
576
1.26G
        for (size_t x = 0; x < kBlockDim; x++) {
577
1.12G
          pixels[y * pixels_stride + x] = coeffs[y * kBlockDim + x];
578
1.12G
        }
579
140M
      }
580
17.5M
      break;
581
0
    }
582
6.98M
    case Type::DCT16X16: {
583
6.98M
      ComputeScaledIDCT<16, 16>()(coefficients, DCTTo(pixels, pixels_stride),
584
6.98M
                                  scratch_space);
585
6.98M
      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.7M
    case Type::DCT8X16: {
593
13.7M
      ComputeScaledIDCT<8, 16>()(coefficients, DCTTo(pixels, pixels_stride),
594
13.7M
                                 scratch_space);
595
13.7M
      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.75M
    case Type::DCT32X16: {
608
2.75M
      ComputeScaledIDCT<32, 16>()(coefficients, DCTTo(pixels, pixels_stride),
609
2.75M
                                  scratch_space);
610
2.75M
      break;
611
0
    }
612
2.73M
    case Type::DCT16X32: {
613
2.73M
      ComputeScaledIDCT<16, 32>()(coefficients, DCTTo(pixels, pixels_stride),
614
2.73M
                                  scratch_space);
615
2.73M
      break;
616
0
    }
617
1.39M
    case Type::DCT32X32: {
618
1.39M
      ComputeScaledIDCT<32, 32>()(coefficients, DCTTo(pixels, pixels_stride),
619
1.39M
                                  scratch_space);
620
1.39M
      break;
621
0
    }
622
17.5M
    case Type::DCT: {
623
17.5M
      ComputeScaledIDCT<8, 8>()(coefficients, DCTTo(pixels, pixels_stride),
624
17.5M
                                scratch_space);
625
17.5M
      break;
626
0
    }
627
17.5M
    case Type::AFV0: {
628
17.5M
      AFVTransformToPixels<0>(coefficients, pixels, pixels_stride);
629
17.5M
      break;
630
0
    }
631
17.5M
    case Type::AFV1: {
632
17.5M
      AFVTransformToPixels<1>(coefficients, pixels, pixels_stride);
633
17.5M
      break;
634
0
    }
635
17.5M
    case Type::AFV2: {
636
17.5M
      AFVTransformToPixels<2>(coefficients, pixels, pixels_stride);
637
17.5M
      break;
638
0
    }
639
17.5M
    case Type::AFV3: {
640
17.5M
      AFVTransformToPixels<3>(coefficients, pixels, pixels_stride);
641
17.5M
      break;
642
0
    }
643
847k
    case Type::DCT64X32: {
644
847k
      ComputeScaledIDCT<64, 32>()(coefficients, DCTTo(pixels, pixels_stride),
645
847k
                                  scratch_space);
646
847k
      break;
647
0
    }
648
508k
    case Type::DCT32X64: {
649
508k
      ComputeScaledIDCT<32, 64>()(coefficients, DCTTo(pixels, pixels_stride),
650
508k
                                  scratch_space);
651
508k
      break;
652
0
    }
653
246k
    case Type::DCT64X64: {
654
246k
      ComputeScaledIDCT<64, 64>()(coefficients, DCTTo(pixels, pixels_stride),
655
246k
                                  scratch_space);
656
246k
      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
218M
  }
689
218M
}
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
24.4M
                                        float* scratch_space) {
461
24.4M
  using Type = AcStrategyType;
462
24.4M
  switch (strategy) {
463
4.12M
    case Type::IDENTITY: {
464
4.12M
      float dcs[4] = {};
465
4.12M
      float block00 = coefficients[0];
466
4.12M
      float block01 = coefficients[1];
467
4.12M
      float block10 = coefficients[8];
468
4.12M
      float block11 = coefficients[9];
469
4.12M
      dcs[0] = block00 + block01 + block10 + block11;
470
4.12M
      dcs[1] = block00 + block01 - block10 - block11;
471
4.12M
      dcs[2] = block00 - block01 + block10 - block11;
472
4.12M
      dcs[3] = block00 - block01 - block10 + block11;
473
12.3M
      for (size_t y = 0; y < 2; y++) {
474
24.7M
        for (size_t x = 0; x < 2; x++) {
475
16.5M
          float block_dc = dcs[y * 2 + x];
476
16.5M
          float residual_sum = 0;
477
82.5M
          for (size_t iy = 0; iy < 4; iy++) {
478
330M
            for (size_t ix = 0; ix < 4; ix++) {
479
264M
              if (ix == 0 && iy == 0) continue;
480
247M
              residual_sum += coefficients[(y + iy * 2) * 8 + x + ix * 2];
481
247M
            }
482
66.0M
          }
483
16.5M
          pixels[(4 * y + 1) * pixels_stride + 4 * x + 1] =
484
16.5M
              block_dc - residual_sum * (1.0f / 16);
485
82.5M
          for (size_t iy = 0; iy < 4; iy++) {
486
330M
            for (size_t ix = 0; ix < 4; ix++) {
487
264M
              if (ix == 1 && iy == 1) continue;
488
247M
              pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] =
489
247M
                  coefficients[(y + iy * 2) * 8 + x + ix * 2] +
490
247M
                  pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
491
247M
            }
492
66.0M
          }
493
16.5M
          pixels[y * 4 * pixels_stride + x * 4] =
494
16.5M
              coefficients[(y + 2) * 8 + x + 2] +
495
16.5M
              pixels[(4 * y + 1) * pixels_stride + 4 * x + 1];
496
16.5M
        }
497
8.25M
      }
498
4.12M
      break;
499
0
    }
500
585k
    case Type::DCT8X4: {
501
585k
      float dcs[2] = {};
502
585k
      float block0 = coefficients[0];
503
585k
      float block1 = coefficients[8];
504
585k
      dcs[0] = block0 + block1;
505
585k
      dcs[1] = block0 - block1;
506
1.75M
      for (size_t x = 0; x < 2; x++) {
507
1.17M
        HWY_ALIGN float block[4 * 8];
508
1.17M
        block[0] = dcs[x];
509
5.85M
        for (size_t iy = 0; iy < 4; iy++) {
510
42.1M
          for (size_t ix = 0; ix < 8; ix++) {
511
37.4M
            if (ix == 0 && iy == 0) continue;
512
36.2M
            block[iy * 8 + ix] = coefficients[(x + iy * 2) * 8 + ix];
513
36.2M
          }
514
4.68M
        }
515
1.17M
        ComputeScaledIDCT<8, 4>()(block, DCTTo(pixels + x * 4, pixels_stride),
516
1.17M
                                  scratch_space);
517
1.17M
      }
518
585k
      break;
519
0
    }
520
261k
    case Type::DCT4X8: {
521
261k
      float dcs[2] = {};
522
261k
      float block0 = coefficients[0];
523
261k
      float block1 = coefficients[8];
524
261k
      dcs[0] = block0 + block1;
525
261k
      dcs[1] = block0 - block1;
526
783k
      for (size_t y = 0; y < 2; y++) {
527
522k
        HWY_ALIGN float block[4 * 8];
528
522k
        block[0] = dcs[y];
529
2.61M
        for (size_t iy = 0; iy < 4; iy++) {
530
18.8M
          for (size_t ix = 0; ix < 8; ix++) {
531
16.7M
            if (ix == 0 && iy == 0) continue;
532
16.2M
            block[iy * 8 + ix] = coefficients[(y + iy * 2) * 8 + ix];
533
16.2M
          }
534
2.09M
        }
535
522k
        ComputeScaledIDCT<4, 8>()(
536
522k
            block, DCTTo(pixels + y * 4 * pixels_stride, pixels_stride),
537
522k
            scratch_space);
538
522k
      }
539
261k
      break;
540
0
    }
541
1.71k
    case Type::DCT4X4: {
542
1.71k
      float dcs[4] = {};
543
1.71k
      float block00 = coefficients[0];
544
1.71k
      float block01 = coefficients[1];
545
1.71k
      float block10 = coefficients[8];
546
1.71k
      float block11 = coefficients[9];
547
1.71k
      dcs[0] = block00 + block01 + block10 + block11;
548
1.71k
      dcs[1] = block00 + block01 - block10 - block11;
549
1.71k
      dcs[2] = block00 - block01 + block10 - block11;
550
1.71k
      dcs[3] = block00 - block01 - block10 + block11;
551
5.15k
      for (size_t y = 0; y < 2; y++) {
552
10.3k
        for (size_t x = 0; x < 2; x++) {
553
6.87k
          HWY_ALIGN float block[4 * 4];
554
6.87k
          block[0] = dcs[y * 2 + x];
555
34.3k
          for (size_t iy = 0; iy < 4; iy++) {
556
137k
            for (size_t ix = 0; ix < 4; ix++) {
557
110k
              if (ix == 0 && iy == 0) continue;
558
103k
              block[iy * 4 + ix] = coefficients[(y + iy * 2) * 8 + x + ix * 2];
559
103k
            }
560
27.5k
          }
561
6.87k
          ComputeScaledIDCT<4, 4>()(
562
6.87k
              block,
563
6.87k
              DCTTo(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
564
6.87k
              scratch_space);
565
6.87k
        }
566
3.43k
      }
567
1.71k
      break;
568
0
    }
569
7.95M
    case Type::DCT2X2: {
570
7.95M
      HWY_ALIGN float coeffs[kDCTBlockSize];
571
7.95M
      memcpy(coeffs, coefficients, sizeof(float) * kDCTBlockSize);
572
7.95M
      IDCT2TopBlock<2>(coeffs, kBlockDim, coeffs);
573
7.95M
      IDCT2TopBlock<4>(coeffs, kBlockDim, coeffs);
574
7.95M
      IDCT2TopBlock<8>(coeffs, kBlockDim, coeffs);
575
71.5M
      for (size_t y = 0; y < kBlockDim; y++) {
576
572M
        for (size_t x = 0; x < kBlockDim; x++) {
577
509M
          pixels[y * pixels_stride + x] = coeffs[y * kBlockDim + x];
578
509M
        }
579
63.6M
      }
580
7.95M
      break;
581
0
    }
582
629k
    case Type::DCT16X16: {
583
629k
      ComputeScaledIDCT<16, 16>()(coefficients, DCTTo(pixels, pixels_stride),
584
629k
                                  scratch_space);
585
629k
      break;
586
0
    }
587
838k
    case Type::DCT16X8: {
588
838k
      ComputeScaledIDCT<16, 8>()(coefficients, DCTTo(pixels, pixels_stride),
589
838k
                                 scratch_space);
590
838k
      break;
591
0
    }
592
901k
    case Type::DCT8X16: {
593
901k
      ComputeScaledIDCT<8, 16>()(coefficients, DCTTo(pixels, pixels_stride),
594
901k
                                 scratch_space);
595
901k
      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
204k
    case Type::DCT32X16: {
608
204k
      ComputeScaledIDCT<32, 16>()(coefficients, DCTTo(pixels, pixels_stride),
609
204k
                                  scratch_space);
610
204k
      break;
611
0
    }
612
224k
    case Type::DCT16X32: {
613
224k
      ComputeScaledIDCT<16, 32>()(coefficients, DCTTo(pixels, pixels_stride),
614
224k
                                  scratch_space);
615
224k
      break;
616
0
    }
617
426k
    case Type::DCT32X32: {
618
426k
      ComputeScaledIDCT<32, 32>()(coefficients, DCTTo(pixels, pixels_stride),
619
426k
                                  scratch_space);
620
426k
      break;
621
0
    }
622
6.92M
    case Type::DCT: {
623
6.92M
      ComputeScaledIDCT<8, 8>()(coefficients, DCTTo(pixels, pixels_stride),
624
6.92M
                                scratch_space);
625
6.92M
      break;
626
0
    }
627
352k
    case Type::AFV0: {
628
352k
      AFVTransformToPixels<0>(coefficients, pixels, pixels_stride);
629
352k
      break;
630
0
    }
631
220k
    case Type::AFV1: {
632
220k
      AFVTransformToPixels<1>(coefficients, pixels, pixels_stride);
633
220k
      break;
634
0
    }
635
265k
    case Type::AFV2: {
636
265k
      AFVTransformToPixels<2>(coefficients, pixels, pixels_stride);
637
265k
      break;
638
0
    }
639
294k
    case Type::AFV3: {
640
294k
      AFVTransformToPixels<3>(coefficients, pixels, pixels_stride);
641
294k
      break;
642
0
    }
643
29.3k
    case Type::DCT64X32: {
644
29.3k
      ComputeScaledIDCT<64, 32>()(coefficients, DCTTo(pixels, pixels_stride),
645
29.3k
                                  scratch_space);
646
29.3k
      break;
647
0
    }
648
28.6k
    case Type::DCT32X64: {
649
28.6k
      ComputeScaledIDCT<32, 64>()(coefficients, DCTTo(pixels, pixels_stride),
650
28.6k
                                  scratch_space);
651
28.6k
      break;
652
0
    }
653
233k
    case Type::DCT64X64: {
654
233k
      ComputeScaledIDCT<64, 64>()(coefficients, DCTTo(pixels, pixels_stride),
655
233k
                                  scratch_space);
656
233k
      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
24.4M
  }
689
24.4M
}
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
24.9M
                                              float* JXL_RESTRICT scratch) {
695
24.9M
  using Type = AcStrategyType;
696
24.9M
  HWY_ALIGN float warm_block[4 * 4];
697
24.9M
  HWY_ALIGN float warm_scratch_space[4 * 4 * 4];
698
24.9M
  switch (strategy) {
699
838k
    case Type::DCT16X8: {
700
838k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
701
838k
                        /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
702
838k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
703
838k
      break;
704
0
    }
705
901k
    case Type::DCT8X16: {
706
901k
      ReinterpretingDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
707
901k
                        /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
708
901k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
709
901k
      break;
710
0
    }
711
629k
    case Type::DCT16X16: {
712
629k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
713
629k
                        /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
714
629k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
715
629k
      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
204k
    case Type::DCT32X16: {
730
204k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
731
204k
                        /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
732
204k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
733
204k
      break;
734
0
    }
735
224k
    case Type::DCT16X32: {
736
224k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
737
224k
                        /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
738
224k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
739
224k
      break;
740
0
    }
741
426k
    case Type::DCT32X32: {
742
426k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
743
426k
                        /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
744
426k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
745
426k
      break;
746
0
    }
747
29.3k
    case Type::DCT64X32: {
748
29.3k
      ReinterpretingDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
749
29.3k
                        /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
750
29.3k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 8 * 4);
751
29.3k
      break;
752
0
    }
753
28.6k
    case Type::DCT32X64: {
754
28.6k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
755
28.6k
                        /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
756
28.6k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 4 * 8);
757
28.6k
      break;
758
0
    }
759
233k
    case Type::DCT64X64: {
760
233k
      ReinterpretingDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
761
233k
                        /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
762
233k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 8 * 8);
763
233k
      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.95M
    case Type::DCT:
806
14.9M
    case Type::DCT2X2:
807
14.9M
    case Type::DCT4X4:
808
15.1M
    case Type::DCT4X8:
809
15.7M
    case Type::DCT8X4:
810
16.1M
    case Type::AFV0:
811
16.3M
    case Type::AFV1:
812
16.5M
    case Type::AFV2:
813
16.8M
    case Type::AFV3:
814
21.4M
    case Type::IDENTITY:
815
21.4M
      llf[0] = dc[0];
816
21.4M
      break;
817
24.9M
  };
818
24.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
24.9M
                                              float* JXL_RESTRICT scratch) {
695
24.9M
  using Type = AcStrategyType;
696
24.9M
  HWY_ALIGN float warm_block[4 * 4];
697
24.9M
  HWY_ALIGN float warm_scratch_space[4 * 4 * 4];
698
24.9M
  switch (strategy) {
699
838k
    case Type::DCT16X8: {
700
838k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
701
838k
                        /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
702
838k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
703
838k
      break;
704
0
    }
705
901k
    case Type::DCT8X16: {
706
901k
      ReinterpretingDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
707
901k
                        /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
708
901k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
709
901k
      break;
710
0
    }
711
629k
    case Type::DCT16X16: {
712
629k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
713
629k
                        /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
714
629k
          dc, dc_stride, llf, 2 * kBlockDim, warm_block, warm_scratch_space);
715
629k
      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
204k
    case Type::DCT32X16: {
730
204k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
731
204k
                        /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
732
204k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
733
204k
      break;
734
0
    }
735
224k
    case Type::DCT16X32: {
736
224k
      ReinterpretingDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
737
224k
                        /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
738
224k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
739
224k
      break;
740
0
    }
741
426k
    case Type::DCT32X32: {
742
426k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
743
426k
                        /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
744
426k
          dc, dc_stride, llf, 4 * kBlockDim, warm_block, warm_scratch_space);
745
426k
      break;
746
0
    }
747
29.3k
    case Type::DCT64X32: {
748
29.3k
      ReinterpretingDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
749
29.3k
                        /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
750
29.3k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 8 * 4);
751
29.3k
      break;
752
0
    }
753
28.6k
    case Type::DCT32X64: {
754
28.6k
      ReinterpretingDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
755
28.6k
                        /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
756
28.6k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 4 * 8);
757
28.6k
      break;
758
0
    }
759
233k
    case Type::DCT64X64: {
760
233k
      ReinterpretingDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
761
233k
                        /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
762
233k
          dc, dc_stride, llf, 8 * kBlockDim, scratch, scratch + 8 * 8);
763
233k
      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.95M
    case Type::DCT:
806
14.9M
    case Type::DCT2X2:
807
14.9M
    case Type::DCT4X4:
808
15.1M
    case Type::DCT4X8:
809
15.7M
    case Type::DCT8X4:
810
16.1M
    case Type::AFV0:
811
16.3M
    case Type::AFV1:
812
16.5M
    case Type::AFV2:
813
16.8M
    case Type::AFV3:
814
21.4M
    case Type::IDENTITY:
815
21.4M
      llf[0] = dc[0];
816
21.4M
      break;
817
24.9M
  };
818
24.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_