Coverage Report

Created: 2025-07-23 07:47

/src/libjxl/lib/jxl/enc_transforms-inl.h
Line
Count
Source (jump to first uncovered line)
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 "lib/jxl/base/compiler_specific.h"
7
#include "lib/jxl/frame_dimensions.h"
8
9
#if defined(LIB_JXL_ENC_TRANSFORMS_INL_H_) == defined(HWY_TARGET_TOGGLE)
10
#ifdef LIB_JXL_ENC_TRANSFORMS_INL_H_
11
#undef LIB_JXL_ENC_TRANSFORMS_INL_H_
12
#else
13
#define LIB_JXL_ENC_TRANSFORMS_INL_H_
14
#endif
15
16
#include <cstddef>
17
#include <cstdint>
18
#include <hwy/highway.h>
19
20
#include "lib/jxl/ac_strategy.h"
21
#include "lib/jxl/dct-inl.h"
22
#include "lib/jxl/dct_scales.h"
23
24
HWY_BEFORE_NAMESPACE();
25
namespace jxl {
26
27
enum class AcStrategyType : uint32_t;
28
29
namespace HWY_NAMESPACE {
30
namespace {
31
32
constexpr size_t kMaxBlocks = 32;
33
34
// Inverse of ReinterpretingDCT.
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
HWY_INLINE void ReinterpretingIDCT(const float* input,
38
                                   const size_t input_stride, float* output,
39
0
                                   const size_t output_stride, float* scratch) {
40
0
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
0
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
0
  float* block = scratch;
43
0
  if (ROWS < COLS) {
44
0
    for (size_t y = 0; y < LF_ROWS; y++) {
45
0
      for (size_t x = 0; x < LF_COLS; x++) {
46
0
        block[y * COLS + x] = input[y * input_stride + x] *
47
0
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
0
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
0
      }
50
0
    }
51
0
  } else {
52
0
    for (size_t y = 0; y < LF_COLS; y++) {
53
0
      for (size_t x = 0; x < LF_ROWS; x++) {
54
0
        block[y * ROWS + x] = input[y * input_stride + x] *
55
0
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
0
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
0
      }
58
0
    }
59
0
  }
60
61
0
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
0
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
0
                                  scratch_space);
64
0
}
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 8ul, 4ul, 1ul, 4ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<8ul, 32ul, 1ul, 4ul, 1ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 64ul, 16ul, 8ul, 16ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<64ul, 128ul, 8ul, 16ul, 8ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 128ul, 16ul, 16ul, 16ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<256ul, 128ul, 32ul, 16ul, 32ul, 16ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<128ul, 256ul, 16ul, 32ul, 16ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::ReinterpretingIDCT<256ul, 256ul, 32ul, 32ul, 32ul, 32ul>(float const*, unsigned long, float*, unsigned long, float*)
65
66
template <size_t S>
67
6.48k
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
6.48k
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
6.48k
  static_assert(S % 2 == 0, "S should be even");
70
6.48k
  float temp[kDCTBlockSize];
71
6.48k
  constexpr size_t num_2x2 = S / 2;
72
21.6k
  for (size_t y = 0; y < num_2x2; y++) {
73
60.4k
    for (size_t x = 0; x < num_2x2; x++) {
74
45.3k
      float c00 = block[y * 2 * stride + x * 2];
75
45.3k
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
45.3k
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
45.3k
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
45.3k
      float r00 = c00 + c01 + c10 + c11;
79
45.3k
      float r01 = c00 + c01 - c10 - c11;
80
45.3k
      float r10 = c00 - c01 + c10 - c11;
81
45.3k
      float r11 = c00 - c01 - c10 + c11;
82
45.3k
      r00 *= 0.25f;
83
45.3k
      r01 *= 0.25f;
84
45.3k
      r10 *= 0.25f;
85
45.3k
      r11 *= 0.25f;
86
45.3k
      temp[y * kBlockDim + x] = r00;
87
45.3k
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
45.3k
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
45.3k
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
45.3k
    }
91
15.1k
  }
92
36.7k
  for (size_t y = 0; y < S; y++) {
93
211k
    for (size_t x = 0; x < S; x++) {
94
181k
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
181k
    }
96
30.2k
  }
97
6.48k
}
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Line
Count
Source
67
720
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
720
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
720
  static_assert(S % 2 == 0, "S should be even");
70
720
  float temp[kDCTBlockSize];
71
720
  constexpr size_t num_2x2 = S / 2;
72
3.60k
  for (size_t y = 0; y < num_2x2; y++) {
73
14.4k
    for (size_t x = 0; x < num_2x2; x++) {
74
11.5k
      float c00 = block[y * 2 * stride + x * 2];
75
11.5k
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
11.5k
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
11.5k
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
11.5k
      float r00 = c00 + c01 + c10 + c11;
79
11.5k
      float r01 = c00 + c01 - c10 - c11;
80
11.5k
      float r10 = c00 - c01 + c10 - c11;
81
11.5k
      float r11 = c00 - c01 - c10 + c11;
82
11.5k
      r00 *= 0.25f;
83
11.5k
      r01 *= 0.25f;
84
11.5k
      r10 *= 0.25f;
85
11.5k
      r11 *= 0.25f;
86
11.5k
      temp[y * kBlockDim + x] = r00;
87
11.5k
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
11.5k
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
11.5k
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
11.5k
    }
91
2.88k
  }
92
6.48k
  for (size_t y = 0; y < S; y++) {
93
51.8k
    for (size_t x = 0; x < S; x++) {
94
46.0k
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
46.0k
    }
96
5.76k
  }
97
720
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
720
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
720
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
720
  static_assert(S % 2 == 0, "S should be even");
70
720
  float temp[kDCTBlockSize];
71
720
  constexpr size_t num_2x2 = S / 2;
72
2.16k
  for (size_t y = 0; y < num_2x2; y++) {
73
4.32k
    for (size_t x = 0; x < num_2x2; x++) {
74
2.88k
      float c00 = block[y * 2 * stride + x * 2];
75
2.88k
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
2.88k
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
2.88k
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
2.88k
      float r00 = c00 + c01 + c10 + c11;
79
2.88k
      float r01 = c00 + c01 - c10 - c11;
80
2.88k
      float r10 = c00 - c01 + c10 - c11;
81
2.88k
      float r11 = c00 - c01 - c10 + c11;
82
2.88k
      r00 *= 0.25f;
83
2.88k
      r01 *= 0.25f;
84
2.88k
      r10 *= 0.25f;
85
2.88k
      r11 *= 0.25f;
86
2.88k
      temp[y * kBlockDim + x] = r00;
87
2.88k
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
2.88k
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
2.88k
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
2.88k
    }
91
1.44k
  }
92
3.60k
  for (size_t y = 0; y < S; y++) {
93
14.4k
    for (size_t x = 0; x < S; x++) {
94
11.5k
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
11.5k
    }
96
2.88k
  }
97
720
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
720
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
720
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
720
  static_assert(S % 2 == 0, "S should be even");
70
720
  float temp[kDCTBlockSize];
71
720
  constexpr size_t num_2x2 = S / 2;
72
1.44k
  for (size_t y = 0; y < num_2x2; y++) {
73
1.44k
    for (size_t x = 0; x < num_2x2; x++) {
74
720
      float c00 = block[y * 2 * stride + x * 2];
75
720
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
720
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
720
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
720
      float r00 = c00 + c01 + c10 + c11;
79
720
      float r01 = c00 + c01 - c10 - c11;
80
720
      float r10 = c00 - c01 + c10 - c11;
81
720
      float r11 = c00 - c01 - c10 + c11;
82
720
      r00 *= 0.25f;
83
720
      r01 *= 0.25f;
84
720
      r10 *= 0.25f;
85
720
      r11 *= 0.25f;
86
720
      temp[y * kBlockDim + x] = r00;
87
720
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
720
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
720
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
720
    }
91
720
  }
92
2.16k
  for (size_t y = 0; y < S; y++) {
93
4.32k
    for (size_t x = 0; x < S; x++) {
94
2.88k
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
2.88k
    }
96
1.44k
  }
97
720
}
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Line
Count
Source
67
720
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
720
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
720
  static_assert(S % 2 == 0, "S should be even");
70
720
  float temp[kDCTBlockSize];
71
720
  constexpr size_t num_2x2 = S / 2;
72
3.60k
  for (size_t y = 0; y < num_2x2; y++) {
73
14.4k
    for (size_t x = 0; x < num_2x2; x++) {
74
11.5k
      float c00 = block[y * 2 * stride + x * 2];
75
11.5k
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
11.5k
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
11.5k
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
11.5k
      float r00 = c00 + c01 + c10 + c11;
79
11.5k
      float r01 = c00 + c01 - c10 - c11;
80
11.5k
      float r10 = c00 - c01 + c10 - c11;
81
11.5k
      float r11 = c00 - c01 - c10 + c11;
82
11.5k
      r00 *= 0.25f;
83
11.5k
      r01 *= 0.25f;
84
11.5k
      r10 *= 0.25f;
85
11.5k
      r11 *= 0.25f;
86
11.5k
      temp[y * kBlockDim + x] = r00;
87
11.5k
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
11.5k
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
11.5k
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
11.5k
    }
91
2.88k
  }
92
6.48k
  for (size_t y = 0; y < S; y++) {
93
51.8k
    for (size_t x = 0; x < S; x++) {
94
46.0k
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
46.0k
    }
96
5.76k
  }
97
720
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
720
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
720
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
720
  static_assert(S % 2 == 0, "S should be even");
70
720
  float temp[kDCTBlockSize];
71
720
  constexpr size_t num_2x2 = S / 2;
72
2.16k
  for (size_t y = 0; y < num_2x2; y++) {
73
4.32k
    for (size_t x = 0; x < num_2x2; x++) {
74
2.88k
      float c00 = block[y * 2 * stride + x * 2];
75
2.88k
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
2.88k
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
2.88k
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
2.88k
      float r00 = c00 + c01 + c10 + c11;
79
2.88k
      float r01 = c00 + c01 - c10 - c11;
80
2.88k
      float r10 = c00 - c01 + c10 - c11;
81
2.88k
      float r11 = c00 - c01 - c10 + c11;
82
2.88k
      r00 *= 0.25f;
83
2.88k
      r01 *= 0.25f;
84
2.88k
      r10 *= 0.25f;
85
2.88k
      r11 *= 0.25f;
86
2.88k
      temp[y * kBlockDim + x] = r00;
87
2.88k
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
2.88k
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
2.88k
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
2.88k
    }
91
1.44k
  }
92
3.60k
  for (size_t y = 0; y < S; y++) {
93
14.4k
    for (size_t x = 0; x < S; x++) {
94
11.5k
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
11.5k
    }
96
2.88k
  }
97
720
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
720
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
720
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
720
  static_assert(S % 2 == 0, "S should be even");
70
720
  float temp[kDCTBlockSize];
71
720
  constexpr size_t num_2x2 = S / 2;
72
1.44k
  for (size_t y = 0; y < num_2x2; y++) {
73
1.44k
    for (size_t x = 0; x < num_2x2; x++) {
74
720
      float c00 = block[y * 2 * stride + x * 2];
75
720
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
720
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
720
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
720
      float r00 = c00 + c01 + c10 + c11;
79
720
      float r01 = c00 + c01 - c10 - c11;
80
720
      float r10 = c00 - c01 + c10 - c11;
81
720
      float r11 = c00 - c01 - c10 + c11;
82
720
      r00 *= 0.25f;
83
720
      r01 *= 0.25f;
84
720
      r10 *= 0.25f;
85
720
      r11 *= 0.25f;
86
720
      temp[y * kBlockDim + x] = r00;
87
720
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
720
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
720
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
720
    }
91
720
  }
92
2.16k
  for (size_t y = 0; y < S; y++) {
93
4.32k
    for (size_t x = 0; x < S; x++) {
94
2.88k
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
2.88k
    }
96
1.44k
  }
97
720
}
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Line
Count
Source
67
720
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
720
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
720
  static_assert(S % 2 == 0, "S should be even");
70
720
  float temp[kDCTBlockSize];
71
720
  constexpr size_t num_2x2 = S / 2;
72
3.60k
  for (size_t y = 0; y < num_2x2; y++) {
73
14.4k
    for (size_t x = 0; x < num_2x2; x++) {
74
11.5k
      float c00 = block[y * 2 * stride + x * 2];
75
11.5k
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
11.5k
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
11.5k
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
11.5k
      float r00 = c00 + c01 + c10 + c11;
79
11.5k
      float r01 = c00 + c01 - c10 - c11;
80
11.5k
      float r10 = c00 - c01 + c10 - c11;
81
11.5k
      float r11 = c00 - c01 - c10 + c11;
82
11.5k
      r00 *= 0.25f;
83
11.5k
      r01 *= 0.25f;
84
11.5k
      r10 *= 0.25f;
85
11.5k
      r11 *= 0.25f;
86
11.5k
      temp[y * kBlockDim + x] = r00;
87
11.5k
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
11.5k
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
11.5k
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
11.5k
    }
91
2.88k
  }
92
6.48k
  for (size_t y = 0; y < S; y++) {
93
51.8k
    for (size_t x = 0; x < S; x++) {
94
46.0k
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
46.0k
    }
96
5.76k
  }
97
720
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
720
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
720
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
720
  static_assert(S % 2 == 0, "S should be even");
70
720
  float temp[kDCTBlockSize];
71
720
  constexpr size_t num_2x2 = S / 2;
72
2.16k
  for (size_t y = 0; y < num_2x2; y++) {
73
4.32k
    for (size_t x = 0; x < num_2x2; x++) {
74
2.88k
      float c00 = block[y * 2 * stride + x * 2];
75
2.88k
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
2.88k
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
2.88k
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
2.88k
      float r00 = c00 + c01 + c10 + c11;
79
2.88k
      float r01 = c00 + c01 - c10 - c11;
80
2.88k
      float r10 = c00 - c01 + c10 - c11;
81
2.88k
      float r11 = c00 - c01 - c10 + c11;
82
2.88k
      r00 *= 0.25f;
83
2.88k
      r01 *= 0.25f;
84
2.88k
      r10 *= 0.25f;
85
2.88k
      r11 *= 0.25f;
86
2.88k
      temp[y * kBlockDim + x] = r00;
87
2.88k
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
2.88k
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
2.88k
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
2.88k
    }
91
1.44k
  }
92
3.60k
  for (size_t y = 0; y < S; y++) {
93
14.4k
    for (size_t x = 0; x < S; x++) {
94
11.5k
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
11.5k
    }
96
2.88k
  }
97
720
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
720
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
720
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
720
  static_assert(S % 2 == 0, "S should be even");
70
720
  float temp[kDCTBlockSize];
71
720
  constexpr size_t num_2x2 = S / 2;
72
1.44k
  for (size_t y = 0; y < num_2x2; y++) {
73
1.44k
    for (size_t x = 0; x < num_2x2; x++) {
74
720
      float c00 = block[y * 2 * stride + x * 2];
75
720
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
720
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
720
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
720
      float r00 = c00 + c01 + c10 + c11;
79
720
      float r01 = c00 + c01 - c10 - c11;
80
720
      float r10 = c00 - c01 + c10 - c11;
81
720
      float r11 = c00 - c01 - c10 + c11;
82
720
      r00 *= 0.25f;
83
720
      r01 *= 0.25f;
84
720
      r10 *= 0.25f;
85
720
      r11 *= 0.25f;
86
720
      temp[y * kBlockDim + x] = r00;
87
720
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
720
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
720
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
720
    }
91
720
  }
92
2.16k
  for (size_t y = 0; y < S; y++) {
93
4.32k
    for (size_t x = 0; x < S; x++) {
94
2.88k
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
2.88k
    }
96
1.44k
  }
97
720
}
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<8ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
98
99
2.88k
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
2.88k
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
2.88k
      {
102
2.88k
          0.2500000000000000,
103
2.88k
          0.8769029297991420f,
104
2.88k
          0.0000000000000000,
105
2.88k
          0.0000000000000000,
106
2.88k
          0.0000000000000000,
107
2.88k
          -0.4105377591765233f,
108
2.88k
          0.0000000000000000,
109
2.88k
          0.0000000000000000,
110
2.88k
          0.0000000000000000,
111
2.88k
          0.0000000000000000,
112
2.88k
          0.0000000000000000,
113
2.88k
          0.0000000000000000,
114
2.88k
          0.0000000000000000,
115
2.88k
          0.0000000000000000,
116
2.88k
          0.0000000000000000,
117
2.88k
          0.0000000000000000,
118
2.88k
      },
119
2.88k
      {
120
2.88k
          0.2500000000000000,
121
2.88k
          0.2206518106944235f,
122
2.88k
          0.0000000000000000,
123
2.88k
          0.0000000000000000,
124
2.88k
          -0.7071067811865474f,
125
2.88k
          0.6235485373547691f,
126
2.88k
          0.0000000000000000,
127
2.88k
          0.0000000000000000,
128
2.88k
          0.0000000000000000,
129
2.88k
          0.0000000000000000,
130
2.88k
          0.0000000000000000,
131
2.88k
          0.0000000000000000,
132
2.88k
          0.0000000000000000,
133
2.88k
          0.0000000000000000,
134
2.88k
          0.0000000000000000,
135
2.88k
          0.0000000000000000,
136
2.88k
      },
137
2.88k
      {
138
2.88k
          0.2500000000000000,
139
2.88k
          -0.1014005039375376f,
140
2.88k
          0.4067007583026075f,
141
2.88k
          -0.2125574805828875f,
142
2.88k
          0.0000000000000000,
143
2.88k
          -0.0643507165794627f,
144
2.88k
          -0.4517556589999482f,
145
2.88k
          -0.3046847507248690f,
146
2.88k
          0.3017929516615495f,
147
2.88k
          0.4082482904638627f,
148
2.88k
          0.1747866975480809f,
149
2.88k
          -0.2110560104933578f,
150
2.88k
          -0.1426608480880726f,
151
2.88k
          -0.1381354035075859f,
152
2.88k
          -0.1743760259965107f,
153
2.88k
          0.1135498731499434f,
154
2.88k
      },
155
2.88k
      {
156
2.88k
          0.2500000000000000,
157
2.88k
          -0.1014005039375375f,
158
2.88k
          0.4444481661973445f,
159
2.88k
          0.3085497062849767f,
160
2.88k
          0.0000000000000000f,
161
2.88k
          -0.0643507165794627f,
162
2.88k
          0.1585450355184006f,
163
2.88k
          0.5112616136591823f,
164
2.88k
          0.2579236279634118f,
165
2.88k
          0.0000000000000000,
166
2.88k
          0.0812611176717539f,
167
2.88k
          0.1856718091610980f,
168
2.88k
          -0.3416446842253372f,
169
2.88k
          0.3302282550303788f,
170
2.88k
          0.0702790691196284f,
171
2.88k
          -0.0741750459581035f,
172
2.88k
      },
173
2.88k
      {
174
2.88k
          0.2500000000000000,
175
2.88k
          0.2206518106944236f,
176
2.88k
          0.0000000000000000,
177
2.88k
          0.0000000000000000,
178
2.88k
          0.7071067811865476f,
179
2.88k
          0.6235485373547694f,
180
2.88k
          0.0000000000000000,
181
2.88k
          0.0000000000000000,
182
2.88k
          0.0000000000000000,
183
2.88k
          0.0000000000000000,
184
2.88k
          0.0000000000000000,
185
2.88k
          0.0000000000000000,
186
2.88k
          0.0000000000000000,
187
2.88k
          0.0000000000000000,
188
2.88k
          0.0000000000000000,
189
2.88k
          0.0000000000000000,
190
2.88k
      },
191
2.88k
      {
192
2.88k
          0.2500000000000000,
193
2.88k
          -0.1014005039375378f,
194
2.88k
          0.0000000000000000,
195
2.88k
          0.4706702258572536f,
196
2.88k
          0.0000000000000000,
197
2.88k
          -0.0643507165794628f,
198
2.88k
          -0.0403851516082220f,
199
2.88k
          0.0000000000000000,
200
2.88k
          0.1627234014286620f,
201
2.88k
          0.0000000000000000,
202
2.88k
          0.0000000000000000,
203
2.88k
          0.0000000000000000,
204
2.88k
          0.7367497537172237f,
205
2.88k
          0.0875511500058708f,
206
2.88k
          -0.2921026642334881f,
207
2.88k
          0.1940289303259434f,
208
2.88k
      },
209
2.88k
      {
210
2.88k
          0.2500000000000000,
211
2.88k
          -0.1014005039375377f,
212
2.88k
          0.1957439937204294f,
213
2.88k
          -0.1621205195722993f,
214
2.88k
          0.0000000000000000,
215
2.88k
          -0.0643507165794628f,
216
2.88k
          0.0074182263792424f,
217
2.88k
          -0.2904801297289980f,
218
2.88k
          0.0952002265347504f,
219
2.88k
          0.0000000000000000,
220
2.88k
          -0.3675398009862027f,
221
2.88k
          0.4921585901373873f,
222
2.88k
          0.2462710772207515f,
223
2.88k
          -0.0794670660590957f,
224
2.88k
          0.3623817333531167f,
225
2.88k
          -0.4351904965232280f,
226
2.88k
      },
227
2.88k
      {
228
2.88k
          0.2500000000000000,
229
2.88k
          -0.1014005039375376f,
230
2.88k
          0.2929100136981264f,
231
2.88k
          0.0000000000000000,
232
2.88k
          0.0000000000000000,
233
2.88k
          -0.0643507165794627f,
234
2.88k
          0.3935103426921017f,
235
2.88k
          -0.0657870154914280f,
236
2.88k
          0.0000000000000000,
237
2.88k
          -0.4082482904638628f,
238
2.88k
          -0.3078822139579090f,
239
2.88k
          -0.3852501370925192f,
240
2.88k
          -0.0857401903551931f,
241
2.88k
          -0.4613374887461511f,
242
2.88k
          0.0000000000000000,
243
2.88k
          0.2191868483885747f,
244
2.88k
      },
245
2.88k
      {
246
2.88k
          0.2500000000000000,
247
2.88k
          -0.1014005039375376f,
248
2.88k
          -0.4067007583026072f,
249
2.88k
          -0.2125574805828705f,
250
2.88k
          0.0000000000000000,
251
2.88k
          -0.0643507165794627f,
252
2.88k
          -0.4517556589999464f,
253
2.88k
          0.3046847507248840f,
254
2.88k
          0.3017929516615503f,
255
2.88k
          -0.4082482904638635f,
256
2.88k
          -0.1747866975480813f,
257
2.88k
          0.2110560104933581f,
258
2.88k
          -0.1426608480880734f,
259
2.88k
          -0.1381354035075829f,
260
2.88k
          -0.1743760259965108f,
261
2.88k
          0.1135498731499426f,
262
2.88k
      },
263
2.88k
      {
264
2.88k
          0.2500000000000000,
265
2.88k
          -0.1014005039375377f,
266
2.88k
          -0.1957439937204287f,
267
2.88k
          -0.1621205195722833f,
268
2.88k
          0.0000000000000000,
269
2.88k
          -0.0643507165794628f,
270
2.88k
          0.0074182263792444f,
271
2.88k
          0.2904801297290076f,
272
2.88k
          0.0952002265347505f,
273
2.88k
          0.0000000000000000,
274
2.88k
          0.3675398009862011f,
275
2.88k
          -0.4921585901373891f,
276
2.88k
          0.2462710772207514f,
277
2.88k
          -0.0794670660591026f,
278
2.88k
          0.3623817333531165f,
279
2.88k
          -0.4351904965232251f,
280
2.88k
      },
281
2.88k
      {
282
2.88k
          0.2500000000000000,
283
2.88k
          -0.1014005039375375f,
284
2.88k
          0.0000000000000000,
285
2.88k
          -0.4706702258572528f,
286
2.88k
          0.0000000000000000,
287
2.88k
          -0.0643507165794627f,
288
2.88k
          0.1107416575309343f,
289
2.88k
          0.0000000000000000,
290
2.88k
          -0.1627234014286617f,
291
2.88k
          0.0000000000000000,
292
2.88k
          0.0000000000000000,
293
2.88k
          0.0000000000000000,
294
2.88k
          0.1488339922711357f,
295
2.88k
          0.4972464710953509f,
296
2.88k
          0.2921026642334879f,
297
2.88k
          0.5550443808910661f,
298
2.88k
      },
299
2.88k
      {
300
2.88k
          0.2500000000000000,
301
2.88k
          -0.1014005039375377f,
302
2.88k
          0.1137907446044809f,
303
2.88k
          -0.1464291867126764f,
304
2.88k
          0.0000000000000000,
305
2.88k
          -0.0643507165794628f,
306
2.88k
          0.0829816309488205f,
307
2.88k
          -0.2388977352334460f,
308
2.88k
          -0.3531238544981630f,
309
2.88k
          -0.4082482904638630f,
310
2.88k
          0.4826689115059883f,
311
2.88k
          0.1741941265991622f,
312
2.88k
          -0.0476868035022925f,
313
2.88k
          0.1253805944856366f,
314
2.88k
          -0.4326608024727445f,
315
2.88k
          -0.2546827712406646f,
316
2.88k
      },
317
2.88k
      {
318
2.88k
          0.2500000000000000,
319
2.88k
          -0.1014005039375377f,
320
2.88k
          -0.4444481661973438f,
321
2.88k
          0.3085497062849487f,
322
2.88k
          0.0000000000000000,
323
2.88k
          -0.0643507165794628f,
324
2.88k
          0.1585450355183970f,
325
2.88k
          -0.5112616136592012f,
326
2.88k
          0.2579236279634129f,
327
2.88k
          0.0000000000000000,
328
2.88k
          -0.0812611176717504f,
329
2.88k
          -0.1856718091610990f,
330
2.88k
          -0.3416446842253373f,
331
2.88k
          0.3302282550303805f,
332
2.88k
          0.0702790691196282f,
333
2.88k
          -0.0741750459581023f,
334
2.88k
      },
335
2.88k
      {
336
2.88k
          0.2500000000000000,
337
2.88k
          -0.1014005039375376f,
338
2.88k
          -0.2929100136981264f,
339
2.88k
          0.0000000000000000,
340
2.88k
          0.0000000000000000,
341
2.88k
          -0.0643507165794627f,
342
2.88k
          0.3935103426921022f,
343
2.88k
          0.0657870154914254f,
344
2.88k
          0.0000000000000000,
345
2.88k
          0.4082482904638634f,
346
2.88k
          0.3078822139579031f,
347
2.88k
          0.3852501370925211f,
348
2.88k
          -0.0857401903551927f,
349
2.88k
          -0.4613374887461554f,
350
2.88k
          0.0000000000000000,
351
2.88k
          0.2191868483885728f,
352
2.88k
      },
353
2.88k
      {
354
2.88k
          0.2500000000000000,
355
2.88k
          -0.1014005039375376f,
356
2.88k
          -0.1137907446044814f,
357
2.88k
          -0.1464291867126654f,
358
2.88k
          0.0000000000000000,
359
2.88k
          -0.0643507165794627f,
360
2.88k
          0.0829816309488214f,
361
2.88k
          0.2388977352334547f,
362
2.88k
          -0.3531238544981624f,
363
2.88k
          0.4082482904638630f,
364
2.88k
          -0.4826689115059858f,
365
2.88k
          -0.1741941265991621f,
366
2.88k
          -0.0476868035022928f,
367
2.88k
          0.1253805944856431f,
368
2.88k
          -0.4326608024727457f,
369
2.88k
          -0.2546827712406641f,
370
2.88k
      },
371
2.88k
      {
372
2.88k
          0.2500000000000000,
373
2.88k
          -0.1014005039375374f,
374
2.88k
          0.0000000000000000,
375
2.88k
          0.4251149611657548f,
376
2.88k
          0.0000000000000000,
377
2.88k
          -0.0643507165794626f,
378
2.88k
          -0.4517556589999480f,
379
2.88k
          0.0000000000000000,
380
2.88k
          -0.6035859033230976f,
381
2.88k
          0.0000000000000000,
382
2.88k
          0.0000000000000000,
383
2.88k
          0.0000000000000000,
384
2.88k
          -0.1426608480880724f,
385
2.88k
          -0.1381354035075845f,
386
2.88k
          0.3487520519930227f,
387
2.88k
          0.1135498731499429f,
388
2.88k
      },
389
2.88k
  };
390
391
2.88k
  const HWY_CAPPED(float, 16) d;
392
8.64k
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
5.76k
    auto scalar = Zero(d);
394
97.9k
    for (size_t j = 0; j < 16; j++) {
395
92.1k
      auto px = Set(d, pixels[j]);
396
92.1k
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
92.1k
      scalar = MulAdd(px, basis, scalar);
398
92.1k
    }
399
5.76k
    Store(scalar, d, coeffs + i);
400
5.76k
  }
401
2.88k
}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Unexecuted instantiation: enc_group.cc:jxl::N_AVX2::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::AFVDCT4x4(float const*, float*)
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Line
Count
Source
99
2.88k
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
2.88k
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
2.88k
      {
102
2.88k
          0.2500000000000000,
103
2.88k
          0.8769029297991420f,
104
2.88k
          0.0000000000000000,
105
2.88k
          0.0000000000000000,
106
2.88k
          0.0000000000000000,
107
2.88k
          -0.4105377591765233f,
108
2.88k
          0.0000000000000000,
109
2.88k
          0.0000000000000000,
110
2.88k
          0.0000000000000000,
111
2.88k
          0.0000000000000000,
112
2.88k
          0.0000000000000000,
113
2.88k
          0.0000000000000000,
114
2.88k
          0.0000000000000000,
115
2.88k
          0.0000000000000000,
116
2.88k
          0.0000000000000000,
117
2.88k
          0.0000000000000000,
118
2.88k
      },
119
2.88k
      {
120
2.88k
          0.2500000000000000,
121
2.88k
          0.2206518106944235f,
122
2.88k
          0.0000000000000000,
123
2.88k
          0.0000000000000000,
124
2.88k
          -0.7071067811865474f,
125
2.88k
          0.6235485373547691f,
126
2.88k
          0.0000000000000000,
127
2.88k
          0.0000000000000000,
128
2.88k
          0.0000000000000000,
129
2.88k
          0.0000000000000000,
130
2.88k
          0.0000000000000000,
131
2.88k
          0.0000000000000000,
132
2.88k
          0.0000000000000000,
133
2.88k
          0.0000000000000000,
134
2.88k
          0.0000000000000000,
135
2.88k
          0.0000000000000000,
136
2.88k
      },
137
2.88k
      {
138
2.88k
          0.2500000000000000,
139
2.88k
          -0.1014005039375376f,
140
2.88k
          0.4067007583026075f,
141
2.88k
          -0.2125574805828875f,
142
2.88k
          0.0000000000000000,
143
2.88k
          -0.0643507165794627f,
144
2.88k
          -0.4517556589999482f,
145
2.88k
          -0.3046847507248690f,
146
2.88k
          0.3017929516615495f,
147
2.88k
          0.4082482904638627f,
148
2.88k
          0.1747866975480809f,
149
2.88k
          -0.2110560104933578f,
150
2.88k
          -0.1426608480880726f,
151
2.88k
          -0.1381354035075859f,
152
2.88k
          -0.1743760259965107f,
153
2.88k
          0.1135498731499434f,
154
2.88k
      },
155
2.88k
      {
156
2.88k
          0.2500000000000000,
157
2.88k
          -0.1014005039375375f,
158
2.88k
          0.4444481661973445f,
159
2.88k
          0.3085497062849767f,
160
2.88k
          0.0000000000000000f,
161
2.88k
          -0.0643507165794627f,
162
2.88k
          0.1585450355184006f,
163
2.88k
          0.5112616136591823f,
164
2.88k
          0.2579236279634118f,
165
2.88k
          0.0000000000000000,
166
2.88k
          0.0812611176717539f,
167
2.88k
          0.1856718091610980f,
168
2.88k
          -0.3416446842253372f,
169
2.88k
          0.3302282550303788f,
170
2.88k
          0.0702790691196284f,
171
2.88k
          -0.0741750459581035f,
172
2.88k
      },
173
2.88k
      {
174
2.88k
          0.2500000000000000,
175
2.88k
          0.2206518106944236f,
176
2.88k
          0.0000000000000000,
177
2.88k
          0.0000000000000000,
178
2.88k
          0.7071067811865476f,
179
2.88k
          0.6235485373547694f,
180
2.88k
          0.0000000000000000,
181
2.88k
          0.0000000000000000,
182
2.88k
          0.0000000000000000,
183
2.88k
          0.0000000000000000,
184
2.88k
          0.0000000000000000,
185
2.88k
          0.0000000000000000,
186
2.88k
          0.0000000000000000,
187
2.88k
          0.0000000000000000,
188
2.88k
          0.0000000000000000,
189
2.88k
          0.0000000000000000,
190
2.88k
      },
191
2.88k
      {
192
2.88k
          0.2500000000000000,
193
2.88k
          -0.1014005039375378f,
194
2.88k
          0.0000000000000000,
195
2.88k
          0.4706702258572536f,
196
2.88k
          0.0000000000000000,
197
2.88k
          -0.0643507165794628f,
198
2.88k
          -0.0403851516082220f,
199
2.88k
          0.0000000000000000,
200
2.88k
          0.1627234014286620f,
201
2.88k
          0.0000000000000000,
202
2.88k
          0.0000000000000000,
203
2.88k
          0.0000000000000000,
204
2.88k
          0.7367497537172237f,
205
2.88k
          0.0875511500058708f,
206
2.88k
          -0.2921026642334881f,
207
2.88k
          0.1940289303259434f,
208
2.88k
      },
209
2.88k
      {
210
2.88k
          0.2500000000000000,
211
2.88k
          -0.1014005039375377f,
212
2.88k
          0.1957439937204294f,
213
2.88k
          -0.1621205195722993f,
214
2.88k
          0.0000000000000000,
215
2.88k
          -0.0643507165794628f,
216
2.88k
          0.0074182263792424f,
217
2.88k
          -0.2904801297289980f,
218
2.88k
          0.0952002265347504f,
219
2.88k
          0.0000000000000000,
220
2.88k
          -0.3675398009862027f,
221
2.88k
          0.4921585901373873f,
222
2.88k
          0.2462710772207515f,
223
2.88k
          -0.0794670660590957f,
224
2.88k
          0.3623817333531167f,
225
2.88k
          -0.4351904965232280f,
226
2.88k
      },
227
2.88k
      {
228
2.88k
          0.2500000000000000,
229
2.88k
          -0.1014005039375376f,
230
2.88k
          0.2929100136981264f,
231
2.88k
          0.0000000000000000,
232
2.88k
          0.0000000000000000,
233
2.88k
          -0.0643507165794627f,
234
2.88k
          0.3935103426921017f,
235
2.88k
          -0.0657870154914280f,
236
2.88k
          0.0000000000000000,
237
2.88k
          -0.4082482904638628f,
238
2.88k
          -0.3078822139579090f,
239
2.88k
          -0.3852501370925192f,
240
2.88k
          -0.0857401903551931f,
241
2.88k
          -0.4613374887461511f,
242
2.88k
          0.0000000000000000,
243
2.88k
          0.2191868483885747f,
244
2.88k
      },
245
2.88k
      {
246
2.88k
          0.2500000000000000,
247
2.88k
          -0.1014005039375376f,
248
2.88k
          -0.4067007583026072f,
249
2.88k
          -0.2125574805828705f,
250
2.88k
          0.0000000000000000,
251
2.88k
          -0.0643507165794627f,
252
2.88k
          -0.4517556589999464f,
253
2.88k
          0.3046847507248840f,
254
2.88k
          0.3017929516615503f,
255
2.88k
          -0.4082482904638635f,
256
2.88k
          -0.1747866975480813f,
257
2.88k
          0.2110560104933581f,
258
2.88k
          -0.1426608480880734f,
259
2.88k
          -0.1381354035075829f,
260
2.88k
          -0.1743760259965108f,
261
2.88k
          0.1135498731499426f,
262
2.88k
      },
263
2.88k
      {
264
2.88k
          0.2500000000000000,
265
2.88k
          -0.1014005039375377f,
266
2.88k
          -0.1957439937204287f,
267
2.88k
          -0.1621205195722833f,
268
2.88k
          0.0000000000000000,
269
2.88k
          -0.0643507165794628f,
270
2.88k
          0.0074182263792444f,
271
2.88k
          0.2904801297290076f,
272
2.88k
          0.0952002265347505f,
273
2.88k
          0.0000000000000000,
274
2.88k
          0.3675398009862011f,
275
2.88k
          -0.4921585901373891f,
276
2.88k
          0.2462710772207514f,
277
2.88k
          -0.0794670660591026f,
278
2.88k
          0.3623817333531165f,
279
2.88k
          -0.4351904965232251f,
280
2.88k
      },
281
2.88k
      {
282
2.88k
          0.2500000000000000,
283
2.88k
          -0.1014005039375375f,
284
2.88k
          0.0000000000000000,
285
2.88k
          -0.4706702258572528f,
286
2.88k
          0.0000000000000000,
287
2.88k
          -0.0643507165794627f,
288
2.88k
          0.1107416575309343f,
289
2.88k
          0.0000000000000000,
290
2.88k
          -0.1627234014286617f,
291
2.88k
          0.0000000000000000,
292
2.88k
          0.0000000000000000,
293
2.88k
          0.0000000000000000,
294
2.88k
          0.1488339922711357f,
295
2.88k
          0.4972464710953509f,
296
2.88k
          0.2921026642334879f,
297
2.88k
          0.5550443808910661f,
298
2.88k
      },
299
2.88k
      {
300
2.88k
          0.2500000000000000,
301
2.88k
          -0.1014005039375377f,
302
2.88k
          0.1137907446044809f,
303
2.88k
          -0.1464291867126764f,
304
2.88k
          0.0000000000000000,
305
2.88k
          -0.0643507165794628f,
306
2.88k
          0.0829816309488205f,
307
2.88k
          -0.2388977352334460f,
308
2.88k
          -0.3531238544981630f,
309
2.88k
          -0.4082482904638630f,
310
2.88k
          0.4826689115059883f,
311
2.88k
          0.1741941265991622f,
312
2.88k
          -0.0476868035022925f,
313
2.88k
          0.1253805944856366f,
314
2.88k
          -0.4326608024727445f,
315
2.88k
          -0.2546827712406646f,
316
2.88k
      },
317
2.88k
      {
318
2.88k
          0.2500000000000000,
319
2.88k
          -0.1014005039375377f,
320
2.88k
          -0.4444481661973438f,
321
2.88k
          0.3085497062849487f,
322
2.88k
          0.0000000000000000,
323
2.88k
          -0.0643507165794628f,
324
2.88k
          0.1585450355183970f,
325
2.88k
          -0.5112616136592012f,
326
2.88k
          0.2579236279634129f,
327
2.88k
          0.0000000000000000,
328
2.88k
          -0.0812611176717504f,
329
2.88k
          -0.1856718091610990f,
330
2.88k
          -0.3416446842253373f,
331
2.88k
          0.3302282550303805f,
332
2.88k
          0.0702790691196282f,
333
2.88k
          -0.0741750459581023f,
334
2.88k
      },
335
2.88k
      {
336
2.88k
          0.2500000000000000,
337
2.88k
          -0.1014005039375376f,
338
2.88k
          -0.2929100136981264f,
339
2.88k
          0.0000000000000000,
340
2.88k
          0.0000000000000000,
341
2.88k
          -0.0643507165794627f,
342
2.88k
          0.3935103426921022f,
343
2.88k
          0.0657870154914254f,
344
2.88k
          0.0000000000000000,
345
2.88k
          0.4082482904638634f,
346
2.88k
          0.3078822139579031f,
347
2.88k
          0.3852501370925211f,
348
2.88k
          -0.0857401903551927f,
349
2.88k
          -0.4613374887461554f,
350
2.88k
          0.0000000000000000,
351
2.88k
          0.2191868483885728f,
352
2.88k
      },
353
2.88k
      {
354
2.88k
          0.2500000000000000,
355
2.88k
          -0.1014005039375376f,
356
2.88k
          -0.1137907446044814f,
357
2.88k
          -0.1464291867126654f,
358
2.88k
          0.0000000000000000,
359
2.88k
          -0.0643507165794627f,
360
2.88k
          0.0829816309488214f,
361
2.88k
          0.2388977352334547f,
362
2.88k
          -0.3531238544981624f,
363
2.88k
          0.4082482904638630f,
364
2.88k
          -0.4826689115059858f,
365
2.88k
          -0.1741941265991621f,
366
2.88k
          -0.0476868035022928f,
367
2.88k
          0.1253805944856431f,
368
2.88k
          -0.4326608024727457f,
369
2.88k
          -0.2546827712406641f,
370
2.88k
      },
371
2.88k
      {
372
2.88k
          0.2500000000000000,
373
2.88k
          -0.1014005039375374f,
374
2.88k
          0.0000000000000000,
375
2.88k
          0.4251149611657548f,
376
2.88k
          0.0000000000000000,
377
2.88k
          -0.0643507165794626f,
378
2.88k
          -0.4517556589999480f,
379
2.88k
          0.0000000000000000,
380
2.88k
          -0.6035859033230976f,
381
2.88k
          0.0000000000000000,
382
2.88k
          0.0000000000000000,
383
2.88k
          0.0000000000000000,
384
2.88k
          -0.1426608480880724f,
385
2.88k
          -0.1381354035075845f,
386
2.88k
          0.3487520519930227f,
387
2.88k
          0.1135498731499429f,
388
2.88k
      },
389
2.88k
  };
390
391
2.88k
  const HWY_CAPPED(float, 16) d;
392
8.64k
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
5.76k
    auto scalar = Zero(d);
394
97.9k
    for (size_t j = 0; j < 16; j++) {
395
92.1k
      auto px = Set(d, pixels[j]);
396
92.1k
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
92.1k
      scalar = MulAdd(px, basis, scalar);
398
92.1k
    }
399
5.76k
    Store(scalar, d, coeffs + i);
400
5.76k
  }
401
2.88k
}
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::AFVDCT4x4(float const*, float*)
402
403
// Coefficient layout:
404
//  - (even, even) positions hold AFV coefficients
405
//  - (odd, even) positions hold DCT4x4 coefficients
406
//  - (any, odd) positions hold DCT4x8 coefficients
407
template <size_t afv_kind>
408
void AFVTransformFromPixels(const float* JXL_RESTRICT pixels,
409
                            size_t pixels_stride,
410
2.88k
                            float* JXL_RESTRICT coefficients) {
411
2.88k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
2.88k
  size_t afv_x = afv_kind & 1;
413
2.88k
  size_t afv_y = afv_kind / 2;
414
2.88k
  HWY_ALIGN float block[4 * 8] = {};
415
14.4k
  for (size_t iy = 0; iy < 4; iy++) {
416
57.6k
    for (size_t ix = 0; ix < 4; ix++) {
417
46.0k
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
46.0k
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
46.0k
    }
420
11.5k
  }
421
  // AFV coefficients in (even, even) positions.
422
2.88k
  HWY_ALIGN float coeff[4 * 4];
423
2.88k
  AFVDCT4x4(block, coeff);
424
14.4k
  for (size_t iy = 0; iy < 4; iy++) {
425
57.6k
    for (size_t ix = 0; ix < 4; ix++) {
426
46.0k
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
46.0k
    }
428
11.5k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
2.88k
  ComputeScaledDCT<4, 4>()(
431
2.88k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
2.88k
              pixels_stride),
433
2.88k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
14.4k
  for (size_t iy = 0; iy < 4; iy++) {
436
103k
    for (size_t ix = 0; ix < 8; ix++) {
437
92.1k
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
92.1k
    }
439
11.5k
  }
440
  // 4x8 DCT of the other half of the block.
441
2.88k
  ComputeScaledDCT<4, 8>()(
442
2.88k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
2.88k
      block, scratch_space);
444
14.4k
  for (size_t iy = 0; iy < 4; iy++) {
445
103k
    for (size_t ix = 0; ix < 8; ix++) {
446
92.1k
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
92.1k
    }
448
11.5k
  }
449
2.88k
  float block00 = coefficients[0] * 0.25f;
450
2.88k
  float block01 = coefficients[1];
451
2.88k
  float block10 = coefficients[8];
452
2.88k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
2.88k
  coefficients[1] = (block00 - block01) * 0.5f;
454
2.88k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
2.88k
}
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Line
Count
Source
410
720
                            float* JXL_RESTRICT coefficients) {
411
720
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
720
  size_t afv_x = afv_kind & 1;
413
720
  size_t afv_y = afv_kind / 2;
414
720
  HWY_ALIGN float block[4 * 8] = {};
415
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
416
14.4k
    for (size_t ix = 0; ix < 4; ix++) {
417
11.5k
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
11.5k
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
11.5k
    }
420
2.88k
  }
421
  // AFV coefficients in (even, even) positions.
422
720
  HWY_ALIGN float coeff[4 * 4];
423
720
  AFVDCT4x4(block, coeff);
424
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
425
14.4k
    for (size_t ix = 0; ix < 4; ix++) {
426
11.5k
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
11.5k
    }
428
2.88k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
720
  ComputeScaledDCT<4, 4>()(
431
720
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
720
              pixels_stride),
433
720
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
436
25.9k
    for (size_t ix = 0; ix < 8; ix++) {
437
23.0k
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
23.0k
    }
439
2.88k
  }
440
  // 4x8 DCT of the other half of the block.
441
720
  ComputeScaledDCT<4, 8>()(
442
720
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
720
      block, scratch_space);
444
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
445
25.9k
    for (size_t ix = 0; ix < 8; ix++) {
446
23.0k
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
23.0k
    }
448
2.88k
  }
449
720
  float block00 = coefficients[0] * 0.25f;
450
720
  float block01 = coefficients[1];
451
720
  float block10 = coefficients[8];
452
720
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
720
  coefficients[1] = (block00 - block01) * 0.5f;
454
720
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
720
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Line
Count
Source
410
720
                            float* JXL_RESTRICT coefficients) {
411
720
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
720
  size_t afv_x = afv_kind & 1;
413
720
  size_t afv_y = afv_kind / 2;
414
720
  HWY_ALIGN float block[4 * 8] = {};
415
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
416
14.4k
    for (size_t ix = 0; ix < 4; ix++) {
417
11.5k
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
11.5k
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
11.5k
    }
420
2.88k
  }
421
  // AFV coefficients in (even, even) positions.
422
720
  HWY_ALIGN float coeff[4 * 4];
423
720
  AFVDCT4x4(block, coeff);
424
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
425
14.4k
    for (size_t ix = 0; ix < 4; ix++) {
426
11.5k
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
11.5k
    }
428
2.88k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
720
  ComputeScaledDCT<4, 4>()(
431
720
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
720
              pixels_stride),
433
720
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
436
25.9k
    for (size_t ix = 0; ix < 8; ix++) {
437
23.0k
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
23.0k
    }
439
2.88k
  }
440
  // 4x8 DCT of the other half of the block.
441
720
  ComputeScaledDCT<4, 8>()(
442
720
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
720
      block, scratch_space);
444
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
445
25.9k
    for (size_t ix = 0; ix < 8; ix++) {
446
23.0k
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
23.0k
    }
448
2.88k
  }
449
720
  float block00 = coefficients[0] * 0.25f;
450
720
  float block01 = coefficients[1];
451
720
  float block10 = coefficients[8];
452
720
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
720
  coefficients[1] = (block00 - block01) * 0.5f;
454
720
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
720
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Line
Count
Source
410
720
                            float* JXL_RESTRICT coefficients) {
411
720
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
720
  size_t afv_x = afv_kind & 1;
413
720
  size_t afv_y = afv_kind / 2;
414
720
  HWY_ALIGN float block[4 * 8] = {};
415
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
416
14.4k
    for (size_t ix = 0; ix < 4; ix++) {
417
11.5k
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
11.5k
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
11.5k
    }
420
2.88k
  }
421
  // AFV coefficients in (even, even) positions.
422
720
  HWY_ALIGN float coeff[4 * 4];
423
720
  AFVDCT4x4(block, coeff);
424
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
425
14.4k
    for (size_t ix = 0; ix < 4; ix++) {
426
11.5k
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
11.5k
    }
428
2.88k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
720
  ComputeScaledDCT<4, 4>()(
431
720
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
720
              pixels_stride),
433
720
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
436
25.9k
    for (size_t ix = 0; ix < 8; ix++) {
437
23.0k
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
23.0k
    }
439
2.88k
  }
440
  // 4x8 DCT of the other half of the block.
441
720
  ComputeScaledDCT<4, 8>()(
442
720
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
720
      block, scratch_space);
444
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
445
25.9k
    for (size_t ix = 0; ix < 8; ix++) {
446
23.0k
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
23.0k
    }
448
2.88k
  }
449
720
  float block00 = coefficients[0] * 0.25f;
450
720
  float block01 = coefficients[1];
451
720
  float block10 = coefficients[8];
452
720
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
720
  coefficients[1] = (block00 - block01) * 0.5f;
454
720
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
720
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Line
Count
Source
410
720
                            float* JXL_RESTRICT coefficients) {
411
720
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
720
  size_t afv_x = afv_kind & 1;
413
720
  size_t afv_y = afv_kind / 2;
414
720
  HWY_ALIGN float block[4 * 8] = {};
415
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
416
14.4k
    for (size_t ix = 0; ix < 4; ix++) {
417
11.5k
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
11.5k
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
11.5k
    }
420
2.88k
  }
421
  // AFV coefficients in (even, even) positions.
422
720
  HWY_ALIGN float coeff[4 * 4];
423
720
  AFVDCT4x4(block, coeff);
424
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
425
14.4k
    for (size_t ix = 0; ix < 4; ix++) {
426
11.5k
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
11.5k
    }
428
2.88k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
720
  ComputeScaledDCT<4, 4>()(
431
720
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
720
              pixels_stride),
433
720
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
436
25.9k
    for (size_t ix = 0; ix < 8; ix++) {
437
23.0k
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
23.0k
    }
439
2.88k
  }
440
  // 4x8 DCT of the other half of the block.
441
720
  ComputeScaledDCT<4, 8>()(
442
720
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
720
      block, scratch_space);
444
3.60k
  for (size_t iy = 0; iy < 4; iy++) {
445
25.9k
    for (size_t ix = 0; ix < 8; ix++) {
446
23.0k
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
23.0k
    }
448
2.88k
  }
449
720
  float block00 = coefficients[0] * 0.25f;
450
720
  float block01 = coefficients[1];
451
720
  float block10 = coefficients[8];
452
720
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
720
  coefficients[1] = (block00 - block01) * 0.5f;
454
720
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
720
}
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE4::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:void jxl::N_SSE2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
456
457
HWY_MAYBE_UNUSED void TransformFromPixels(const AcStrategyType strategy,
458
                                          const float* JXL_RESTRICT pixels,
459
                                          size_t pixels_stride,
460
                                          float* JXL_RESTRICT coefficients,
461
9.36k
                                          float* JXL_RESTRICT scratch_space) {
462
9.36k
  using Type = AcStrategyType;
463
9.36k
  switch (strategy) {
464
720
    case Type::IDENTITY: {
465
2.16k
      for (size_t y = 0; y < 2; y++) {
466
4.32k
        for (size_t x = 0; x < 2; x++) {
467
2.88k
          float block_dc = 0;
468
14.4k
          for (size_t iy = 0; iy < 4; iy++) {
469
57.6k
            for (size_t ix = 0; ix < 4; ix++) {
470
46.0k
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
46.0k
            }
472
11.5k
          }
473
2.88k
          block_dc *= 1.0f / 16;
474
14.4k
          for (size_t iy = 0; iy < 4; iy++) {
475
57.6k
            for (size_t ix = 0; ix < 4; ix++) {
476
46.0k
              if (ix == 1 && iy == 1) continue;
477
43.2k
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
43.2k
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
43.2k
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
43.2k
            }
481
11.5k
          }
482
2.88k
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
2.88k
          coefficients[y * 8 + x] = block_dc;
484
2.88k
        }
485
1.44k
      }
486
720
      float block00 = coefficients[0];
487
720
      float block01 = coefficients[1];
488
720
      float block10 = coefficients[8];
489
720
      float block11 = coefficients[9];
490
720
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
720
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
720
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
720
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
720
      break;
495
0
    }
496
720
    case Type::DCT8X4: {
497
2.16k
      for (size_t x = 0; x < 2; x++) {
498
1.44k
        HWY_ALIGN float block[4 * 8];
499
1.44k
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
1.44k
                                 scratch_space);
501
7.20k
        for (size_t iy = 0; iy < 4; iy++) {
502
51.8k
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
46.0k
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
46.0k
          }
506
5.76k
        }
507
1.44k
      }
508
720
      float block0 = coefficients[0];
509
720
      float block1 = coefficients[8];
510
720
      coefficients[0] = (block0 + block1) * 0.5f;
511
720
      coefficients[8] = (block0 - block1) * 0.5f;
512
720
      break;
513
0
    }
514
720
    case Type::DCT4X8: {
515
2.16k
      for (size_t y = 0; y < 2; y++) {
516
1.44k
        HWY_ALIGN float block[4 * 8];
517
1.44k
        ComputeScaledDCT<4, 8>()(
518
1.44k
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
1.44k
            scratch_space);
520
7.20k
        for (size_t iy = 0; iy < 4; iy++) {
521
51.8k
          for (size_t ix = 0; ix < 8; ix++) {
522
46.0k
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
46.0k
          }
524
5.76k
        }
525
1.44k
      }
526
720
      float block0 = coefficients[0];
527
720
      float block1 = coefficients[8];
528
720
      coefficients[0] = (block0 + block1) * 0.5f;
529
720
      coefficients[8] = (block0 - block1) * 0.5f;
530
720
      break;
531
0
    }
532
720
    case Type::DCT4X4: {
533
2.16k
      for (size_t y = 0; y < 2; y++) {
534
4.32k
        for (size_t x = 0; x < 2; x++) {
535
2.88k
          HWY_ALIGN float block[4 * 4];
536
2.88k
          ComputeScaledDCT<4, 4>()(
537
2.88k
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
2.88k
              block, scratch_space);
539
14.4k
          for (size_t iy = 0; iy < 4; iy++) {
540
57.6k
            for (size_t ix = 0; ix < 4; ix++) {
541
46.0k
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
46.0k
            }
543
11.5k
          }
544
2.88k
        }
545
1.44k
      }
546
720
      float block00 = coefficients[0];
547
720
      float block01 = coefficients[1];
548
720
      float block10 = coefficients[8];
549
720
      float block11 = coefficients[9];
550
720
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
720
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
720
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
720
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
720
      break;
555
0
    }
556
2.16k
    case Type::DCT2X2: {
557
2.16k
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
2.16k
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
2.16k
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
2.16k
      break;
561
0
    }
562
0
    case Type::DCT16X16: {
563
0
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
0
                                 scratch_space);
565
0
      break;
566
0
    }
567
0
    case Type::DCT16X8: {
568
0
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
0
                                scratch_space);
570
0
      break;
571
0
    }
572
0
    case Type::DCT8X16: {
573
0
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
0
                                scratch_space);
575
0
      break;
576
0
    }
577
0
    case Type::DCT32X8: {
578
0
      ComputeScaledDCT<32, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
579
0
                                scratch_space);
580
0
      break;
581
0
    }
582
0
    case Type::DCT8X32: {
583
0
      ComputeScaledDCT<8, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
584
0
                                scratch_space);
585
0
      break;
586
0
    }
587
0
    case Type::DCT32X16: {
588
0
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
0
                                 scratch_space);
590
0
      break;
591
0
    }
592
0
    case Type::DCT16X32: {
593
0
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
0
                                 scratch_space);
595
0
      break;
596
0
    }
597
0
    case Type::DCT32X32: {
598
0
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
0
                                 scratch_space);
600
0
      break;
601
0
    }
602
1.44k
    case Type::DCT: {
603
1.44k
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
1.44k
                               scratch_space);
605
1.44k
      break;
606
0
    }
607
720
    case Type::AFV0: {
608
720
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
720
      break;
610
0
    }
611
720
    case Type::AFV1: {
612
720
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
720
      break;
614
0
    }
615
720
    case Type::AFV2: {
616
720
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
720
      break;
618
0
    }
619
720
    case Type::AFV3: {
620
720
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
720
      break;
622
0
    }
623
0
    case Type::DCT64X64: {
624
0
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
0
                                 scratch_space);
626
0
      break;
627
0
    }
628
0
    case Type::DCT64X32: {
629
0
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
0
                                 scratch_space);
631
0
      break;
632
0
    }
633
0
    case Type::DCT32X64: {
634
0
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
0
                                 scratch_space);
636
0
      break;
637
0
    }
638
0
    case Type::DCT128X128: {
639
0
      ComputeScaledDCT<128, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
640
0
                                   scratch_space);
641
0
      break;
642
0
    }
643
0
    case Type::DCT128X64: {
644
0
      ComputeScaledDCT<128, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
645
0
                                  scratch_space);
646
0
      break;
647
0
    }
648
0
    case Type::DCT64X128: {
649
0
      ComputeScaledDCT<64, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
650
0
                                  scratch_space);
651
0
      break;
652
0
    }
653
0
    case Type::DCT256X256: {
654
0
      ComputeScaledDCT<256, 256>()(DCTFrom(pixels, pixels_stride), coefficients,
655
0
                                   scratch_space);
656
0
      break;
657
0
    }
658
0
    case Type::DCT256X128: {
659
0
      ComputeScaledDCT<256, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
660
0
                                   scratch_space);
661
0
      break;
662
0
    }
663
0
    case Type::DCT128X256: {
664
0
      ComputeScaledDCT<128, 256>()(DCTFrom(pixels, pixels_stride), coefficients,
665
0
                                   scratch_space);
666
0
      break;
667
0
    }
668
9.36k
  }
669
9.36k
}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Line
Count
Source
461
720
                                          float* JXL_RESTRICT scratch_space) {
462
720
  using Type = AcStrategyType;
463
720
  switch (strategy) {
464
0
    case Type::IDENTITY: {
465
0
      for (size_t y = 0; y < 2; y++) {
466
0
        for (size_t x = 0; x < 2; x++) {
467
0
          float block_dc = 0;
468
0
          for (size_t iy = 0; iy < 4; iy++) {
469
0
            for (size_t ix = 0; ix < 4; ix++) {
470
0
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
0
            }
472
0
          }
473
0
          block_dc *= 1.0f / 16;
474
0
          for (size_t iy = 0; iy < 4; iy++) {
475
0
            for (size_t ix = 0; ix < 4; ix++) {
476
0
              if (ix == 1 && iy == 1) continue;
477
0
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
0
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
0
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
0
            }
481
0
          }
482
0
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
0
          coefficients[y * 8 + x] = block_dc;
484
0
        }
485
0
      }
486
0
      float block00 = coefficients[0];
487
0
      float block01 = coefficients[1];
488
0
      float block10 = coefficients[8];
489
0
      float block11 = coefficients[9];
490
0
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
0
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
0
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
0
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
0
      break;
495
0
    }
496
0
    case Type::DCT8X4: {
497
0
      for (size_t x = 0; x < 2; x++) {
498
0
        HWY_ALIGN float block[4 * 8];
499
0
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
0
                                 scratch_space);
501
0
        for (size_t iy = 0; iy < 4; iy++) {
502
0
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
0
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
0
          }
506
0
        }
507
0
      }
508
0
      float block0 = coefficients[0];
509
0
      float block1 = coefficients[8];
510
0
      coefficients[0] = (block0 + block1) * 0.5f;
511
0
      coefficients[8] = (block0 - block1) * 0.5f;
512
0
      break;
513
0
    }
514
0
    case Type::DCT4X8: {
515
0
      for (size_t y = 0; y < 2; y++) {
516
0
        HWY_ALIGN float block[4 * 8];
517
0
        ComputeScaledDCT<4, 8>()(
518
0
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
0
            scratch_space);
520
0
        for (size_t iy = 0; iy < 4; iy++) {
521
0
          for (size_t ix = 0; ix < 8; ix++) {
522
0
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
0
          }
524
0
        }
525
0
      }
526
0
      float block0 = coefficients[0];
527
0
      float block1 = coefficients[8];
528
0
      coefficients[0] = (block0 + block1) * 0.5f;
529
0
      coefficients[8] = (block0 - block1) * 0.5f;
530
0
      break;
531
0
    }
532
0
    case Type::DCT4X4: {
533
0
      for (size_t y = 0; y < 2; y++) {
534
0
        for (size_t x = 0; x < 2; x++) {
535
0
          HWY_ALIGN float block[4 * 4];
536
0
          ComputeScaledDCT<4, 4>()(
537
0
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
0
              block, scratch_space);
539
0
          for (size_t iy = 0; iy < 4; iy++) {
540
0
            for (size_t ix = 0; ix < 4; ix++) {
541
0
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
0
            }
543
0
          }
544
0
        }
545
0
      }
546
0
      float block00 = coefficients[0];
547
0
      float block01 = coefficients[1];
548
0
      float block10 = coefficients[8];
549
0
      float block11 = coefficients[9];
550
0
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
0
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
0
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
0
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
0
      break;
555
0
    }
556
720
    case Type::DCT2X2: {
557
720
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
720
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
720
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
720
      break;
561
0
    }
562
0
    case Type::DCT16X16: {
563
0
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
0
                                 scratch_space);
565
0
      break;
566
0
    }
567
0
    case Type::DCT16X8: {
568
0
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
0
                                scratch_space);
570
0
      break;
571
0
    }
572
0
    case Type::DCT8X16: {
573
0
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
0
                                scratch_space);
575
0
      break;
576
0
    }
577
0
    case Type::DCT32X8: {
578
0
      ComputeScaledDCT<32, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
579
0
                                scratch_space);
580
0
      break;
581
0
    }
582
0
    case Type::DCT8X32: {
583
0
      ComputeScaledDCT<8, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
584
0
                                scratch_space);
585
0
      break;
586
0
    }
587
0
    case Type::DCT32X16: {
588
0
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
0
                                 scratch_space);
590
0
      break;
591
0
    }
592
0
    case Type::DCT16X32: {
593
0
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
0
                                 scratch_space);
595
0
      break;
596
0
    }
597
0
    case Type::DCT32X32: {
598
0
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
0
                                 scratch_space);
600
0
      break;
601
0
    }
602
0
    case Type::DCT: {
603
0
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
0
                               scratch_space);
605
0
      break;
606
0
    }
607
0
    case Type::AFV0: {
608
0
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
0
      break;
610
0
    }
611
0
    case Type::AFV1: {
612
0
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
0
      break;
614
0
    }
615
0
    case Type::AFV2: {
616
0
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
0
      break;
618
0
    }
619
0
    case Type::AFV3: {
620
0
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
0
      break;
622
0
    }
623
0
    case Type::DCT64X64: {
624
0
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
0
                                 scratch_space);
626
0
      break;
627
0
    }
628
0
    case Type::DCT64X32: {
629
0
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
0
                                 scratch_space);
631
0
      break;
632
0
    }
633
0
    case Type::DCT32X64: {
634
0
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
0
                                 scratch_space);
636
0
      break;
637
0
    }
638
0
    case Type::DCT128X128: {
639
0
      ComputeScaledDCT<128, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
640
0
                                   scratch_space);
641
0
      break;
642
0
    }
643
0
    case Type::DCT128X64: {
644
0
      ComputeScaledDCT<128, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
645
0
                                  scratch_space);
646
0
      break;
647
0
    }
648
0
    case Type::DCT64X128: {
649
0
      ComputeScaledDCT<64, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
650
0
                                  scratch_space);
651
0
      break;
652
0
    }
653
0
    case Type::DCT256X256: {
654
0
      ComputeScaledDCT<256, 256>()(DCTFrom(pixels, pixels_stride), coefficients,
655
0
                                   scratch_space);
656
0
      break;
657
0
    }
658
0
    case Type::DCT256X128: {
659
0
      ComputeScaledDCT<256, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
660
0
                                   scratch_space);
661
0
      break;
662
0
    }
663
0
    case Type::DCT128X256: {
664
0
      ComputeScaledDCT<128, 256>()(DCTFrom(pixels, pixels_stride), coefficients,
665
0
                                   scratch_space);
666
0
      break;
667
0
    }
668
720
  }
669
720
}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Line
Count
Source
461
7.20k
                                          float* JXL_RESTRICT scratch_space) {
462
7.20k
  using Type = AcStrategyType;
463
7.20k
  switch (strategy) {
464
720
    case Type::IDENTITY: {
465
2.16k
      for (size_t y = 0; y < 2; y++) {
466
4.32k
        for (size_t x = 0; x < 2; x++) {
467
2.88k
          float block_dc = 0;
468
14.4k
          for (size_t iy = 0; iy < 4; iy++) {
469
57.6k
            for (size_t ix = 0; ix < 4; ix++) {
470
46.0k
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
46.0k
            }
472
11.5k
          }
473
2.88k
          block_dc *= 1.0f / 16;
474
14.4k
          for (size_t iy = 0; iy < 4; iy++) {
475
57.6k
            for (size_t ix = 0; ix < 4; ix++) {
476
46.0k
              if (ix == 1 && iy == 1) continue;
477
43.2k
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
43.2k
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
43.2k
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
43.2k
            }
481
11.5k
          }
482
2.88k
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
2.88k
          coefficients[y * 8 + x] = block_dc;
484
2.88k
        }
485
1.44k
      }
486
720
      float block00 = coefficients[0];
487
720
      float block01 = coefficients[1];
488
720
      float block10 = coefficients[8];
489
720
      float block11 = coefficients[9];
490
720
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
720
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
720
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
720
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
720
      break;
495
0
    }
496
720
    case Type::DCT8X4: {
497
2.16k
      for (size_t x = 0; x < 2; x++) {
498
1.44k
        HWY_ALIGN float block[4 * 8];
499
1.44k
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
1.44k
                                 scratch_space);
501
7.20k
        for (size_t iy = 0; iy < 4; iy++) {
502
51.8k
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
46.0k
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
46.0k
          }
506
5.76k
        }
507
1.44k
      }
508
720
      float block0 = coefficients[0];
509
720
      float block1 = coefficients[8];
510
720
      coefficients[0] = (block0 + block1) * 0.5f;
511
720
      coefficients[8] = (block0 - block1) * 0.5f;
512
720
      break;
513
0
    }
514
720
    case Type::DCT4X8: {
515
2.16k
      for (size_t y = 0; y < 2; y++) {
516
1.44k
        HWY_ALIGN float block[4 * 8];
517
1.44k
        ComputeScaledDCT<4, 8>()(
518
1.44k
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
1.44k
            scratch_space);
520
7.20k
        for (size_t iy = 0; iy < 4; iy++) {
521
51.8k
          for (size_t ix = 0; ix < 8; ix++) {
522
46.0k
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
46.0k
          }
524
5.76k
        }
525
1.44k
      }
526
720
      float block0 = coefficients[0];
527
720
      float block1 = coefficients[8];
528
720
      coefficients[0] = (block0 + block1) * 0.5f;
529
720
      coefficients[8] = (block0 - block1) * 0.5f;
530
720
      break;
531
0
    }
532
720
    case Type::DCT4X4: {
533
2.16k
      for (size_t y = 0; y < 2; y++) {
534
4.32k
        for (size_t x = 0; x < 2; x++) {
535
2.88k
          HWY_ALIGN float block[4 * 4];
536
2.88k
          ComputeScaledDCT<4, 4>()(
537
2.88k
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
2.88k
              block, scratch_space);
539
14.4k
          for (size_t iy = 0; iy < 4; iy++) {
540
57.6k
            for (size_t ix = 0; ix < 4; ix++) {
541
46.0k
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
46.0k
            }
543
11.5k
          }
544
2.88k
        }
545
1.44k
      }
546
720
      float block00 = coefficients[0];
547
720
      float block01 = coefficients[1];
548
720
      float block10 = coefficients[8];
549
720
      float block11 = coefficients[9];
550
720
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
720
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
720
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
720
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
720
      break;
555
0
    }
556
720
    case Type::DCT2X2: {
557
720
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
720
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
720
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
720
      break;
561
0
    }
562
0
    case Type::DCT16X16: {
563
0
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
0
                                 scratch_space);
565
0
      break;
566
0
    }
567
0
    case Type::DCT16X8: {
568
0
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
0
                                scratch_space);
570
0
      break;
571
0
    }
572
0
    case Type::DCT8X16: {
573
0
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
0
                                scratch_space);
575
0
      break;
576
0
    }
577
0
    case Type::DCT32X8: {
578
0
      ComputeScaledDCT<32, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
579
0
                                scratch_space);
580
0
      break;
581
0
    }
582
0
    case Type::DCT8X32: {
583
0
      ComputeScaledDCT<8, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
584
0
                                scratch_space);
585
0
      break;
586
0
    }
587
0
    case Type::DCT32X16: {
588
0
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
0
                                 scratch_space);
590
0
      break;
591
0
    }
592
0
    case Type::DCT16X32: {
593
0
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
0
                                 scratch_space);
595
0
      break;
596
0
    }
597
0
    case Type::DCT32X32: {
598
0
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
0
                                 scratch_space);
600
0
      break;
601
0
    }
602
720
    case Type::DCT: {
603
720
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
720
                               scratch_space);
605
720
      break;
606
0
    }
607
720
    case Type::AFV0: {
608
720
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
720
      break;
610
0
    }
611
720
    case Type::AFV1: {
612
720
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
720
      break;
614
0
    }
615
720
    case Type::AFV2: {
616
720
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
720
      break;
618
0
    }
619
720
    case Type::AFV3: {
620
720
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
720
      break;
622
0
    }
623
0
    case Type::DCT64X64: {
624
0
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
0
                                 scratch_space);
626
0
      break;
627
0
    }
628
0
    case Type::DCT64X32: {
629
0
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
0
                                 scratch_space);
631
0
      break;
632
0
    }
633
0
    case Type::DCT32X64: {
634
0
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
0
                                 scratch_space);
636
0
      break;
637
0
    }
638
0
    case Type::DCT128X128: {
639
0
      ComputeScaledDCT<128, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
640
0
                                   scratch_space);
641
0
      break;
642
0
    }
643
0
    case Type::DCT128X64: {
644
0
      ComputeScaledDCT<128, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
645
0
                                  scratch_space);
646
0
      break;
647
0
    }
648
0
    case Type::DCT64X128: {
649
0
      ComputeScaledDCT<64, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
650
0
                                  scratch_space);
651
0
      break;
652
0
    }
653
0
    case Type::DCT256X256: {
654
0
      ComputeScaledDCT<256, 256>()(DCTFrom(pixels, pixels_stride), coefficients,
655
0
                                   scratch_space);
656
0
      break;
657
0
    }
658
0
    case Type::DCT256X128: {
659
0
      ComputeScaledDCT<256, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
660
0
                                   scratch_space);
661
0
      break;
662
0
    }
663
0
    case Type::DCT128X256: {
664
0
      ComputeScaledDCT<128, 256>()(DCTFrom(pixels, pixels_stride), coefficients,
665
0
                                   scratch_space);
666
0
      break;
667
0
    }
668
7.20k
  }
669
7.20k
}
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Line
Count
Source
461
1.44k
                                          float* JXL_RESTRICT scratch_space) {
462
1.44k
  using Type = AcStrategyType;
463
1.44k
  switch (strategy) {
464
0
    case Type::IDENTITY: {
465
0
      for (size_t y = 0; y < 2; y++) {
466
0
        for (size_t x = 0; x < 2; x++) {
467
0
          float block_dc = 0;
468
0
          for (size_t iy = 0; iy < 4; iy++) {
469
0
            for (size_t ix = 0; ix < 4; ix++) {
470
0
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
0
            }
472
0
          }
473
0
          block_dc *= 1.0f / 16;
474
0
          for (size_t iy = 0; iy < 4; iy++) {
475
0
            for (size_t ix = 0; ix < 4; ix++) {
476
0
              if (ix == 1 && iy == 1) continue;
477
0
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
0
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
0
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
0
            }
481
0
          }
482
0
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
0
          coefficients[y * 8 + x] = block_dc;
484
0
        }
485
0
      }
486
0
      float block00 = coefficients[0];
487
0
      float block01 = coefficients[1];
488
0
      float block10 = coefficients[8];
489
0
      float block11 = coefficients[9];
490
0
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
0
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
0
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
0
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
0
      break;
495
0
    }
496
0
    case Type::DCT8X4: {
497
0
      for (size_t x = 0; x < 2; x++) {
498
0
        HWY_ALIGN float block[4 * 8];
499
0
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
0
                                 scratch_space);
501
0
        for (size_t iy = 0; iy < 4; iy++) {
502
0
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
0
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
0
          }
506
0
        }
507
0
      }
508
0
      float block0 = coefficients[0];
509
0
      float block1 = coefficients[8];
510
0
      coefficients[0] = (block0 + block1) * 0.5f;
511
0
      coefficients[8] = (block0 - block1) * 0.5f;
512
0
      break;
513
0
    }
514
0
    case Type::DCT4X8: {
515
0
      for (size_t y = 0; y < 2; y++) {
516
0
        HWY_ALIGN float block[4 * 8];
517
0
        ComputeScaledDCT<4, 8>()(
518
0
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
0
            scratch_space);
520
0
        for (size_t iy = 0; iy < 4; iy++) {
521
0
          for (size_t ix = 0; ix < 8; ix++) {
522
0
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
0
          }
524
0
        }
525
0
      }
526
0
      float block0 = coefficients[0];
527
0
      float block1 = coefficients[8];
528
0
      coefficients[0] = (block0 + block1) * 0.5f;
529
0
      coefficients[8] = (block0 - block1) * 0.5f;
530
0
      break;
531
0
    }
532
0
    case Type::DCT4X4: {
533
0
      for (size_t y = 0; y < 2; y++) {
534
0
        for (size_t x = 0; x < 2; x++) {
535
0
          HWY_ALIGN float block[4 * 4];
536
0
          ComputeScaledDCT<4, 4>()(
537
0
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
0
              block, scratch_space);
539
0
          for (size_t iy = 0; iy < 4; iy++) {
540
0
            for (size_t ix = 0; ix < 4; ix++) {
541
0
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
0
            }
543
0
          }
544
0
        }
545
0
      }
546
0
      float block00 = coefficients[0];
547
0
      float block01 = coefficients[1];
548
0
      float block10 = coefficients[8];
549
0
      float block11 = coefficients[9];
550
0
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
0
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
0
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
0
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
0
      break;
555
0
    }
556
720
    case Type::DCT2X2: {
557
720
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
720
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
720
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
720
      break;
561
0
    }
562
0
    case Type::DCT16X16: {
563
0
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
0
                                 scratch_space);
565
0
      break;
566
0
    }
567
0
    case Type::DCT16X8: {
568
0
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
0
                                scratch_space);
570
0
      break;
571
0
    }
572
0
    case Type::DCT8X16: {
573
0
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
0
                                scratch_space);
575
0
      break;
576
0
    }
577
0
    case Type::DCT32X8: {
578
0
      ComputeScaledDCT<32, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
579
0
                                scratch_space);
580
0
      break;
581
0
    }
582
0
    case Type::DCT8X32: {
583
0
      ComputeScaledDCT<8, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
584
0
                                scratch_space);
585
0
      break;
586
0
    }
587
0
    case Type::DCT32X16: {
588
0
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
0
                                 scratch_space);
590
0
      break;
591
0
    }
592
0
    case Type::DCT16X32: {
593
0
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
0
                                 scratch_space);
595
0
      break;
596
0
    }
597
0
    case Type::DCT32X32: {
598
0
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
0
                                 scratch_space);
600
0
      break;
601
0
    }
602
720
    case Type::DCT: {
603
720
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
720
                               scratch_space);
605
720
      break;
606
0
    }
607
0
    case Type::AFV0: {
608
0
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
0
      break;
610
0
    }
611
0
    case Type::AFV1: {
612
0
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
0
      break;
614
0
    }
615
0
    case Type::AFV2: {
616
0
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
0
      break;
618
0
    }
619
0
    case Type::AFV3: {
620
0
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
0
      break;
622
0
    }
623
0
    case Type::DCT64X64: {
624
0
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
0
                                 scratch_space);
626
0
      break;
627
0
    }
628
0
    case Type::DCT64X32: {
629
0
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
0
                                 scratch_space);
631
0
      break;
632
0
    }
633
0
    case Type::DCT32X64: {
634
0
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
0
                                 scratch_space);
636
0
      break;
637
0
    }
638
0
    case Type::DCT128X128: {
639
0
      ComputeScaledDCT<128, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
640
0
                                   scratch_space);
641
0
      break;
642
0
    }
643
0
    case Type::DCT128X64: {
644
0
      ComputeScaledDCT<128, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
645
0
                                  scratch_space);
646
0
      break;
647
0
    }
648
0
    case Type::DCT64X128: {
649
0
      ComputeScaledDCT<64, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
650
0
                                  scratch_space);
651
0
      break;
652
0
    }
653
0
    case Type::DCT256X256: {
654
0
      ComputeScaledDCT<256, 256>()(DCTFrom(pixels, pixels_stride), coefficients,
655
0
                                   scratch_space);
656
0
      break;
657
0
    }
658
0
    case Type::DCT256X128: {
659
0
      ComputeScaledDCT<256, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
660
0
                                   scratch_space);
661
0
      break;
662
0
    }
663
0
    case Type::DCT128X256: {
664
0
      ComputeScaledDCT<128, 256>()(DCTFrom(pixels, pixels_stride), coefficients,
665
0
                                   scratch_space);
666
0
      break;
667
0
    }
668
1.44k
  }
669
1.44k
}
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
670
671
// `scratch_space` should be at least 4 * kMaxBlocks * kMaxBlocks elements.
672
HWY_MAYBE_UNUSED void DCFromLowestFrequencies(const AcStrategyType strategy,
673
                                              const float* block, float* dc,
674
                                              size_t dc_stride,
675
2.16k
                                              float* scratch_space) {
676
2.16k
  using Type = AcStrategyType;
677
2.16k
  switch (strategy) {
678
0
    case Type::DCT16X8: {
679
0
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
0
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
0
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
0
      break;
683
0
    }
684
0
    case Type::DCT8X16: {
685
0
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
0
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
0
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
0
      break;
689
0
    }
690
0
    case Type::DCT16X16: {
691
0
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
0
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
0
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
0
      break;
695
0
    }
696
0
    case Type::DCT32X8: {
697
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/kBlockDim,
698
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/1, /*ROWS=*/4, /*COLS=*/1>(
699
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
700
0
      break;
701
0
    }
702
0
    case Type::DCT8X32: {
703
0
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
704
0
                         /*LF_ROWS=*/1, /*LF_COLS=*/4, /*ROWS=*/1, /*COLS=*/4>(
705
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
706
0
      break;
707
0
    }
708
0
    case Type::DCT32X16: {
709
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
0
      break;
713
0
    }
714
0
    case Type::DCT16X32: {
715
0
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
0
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
0
      break;
719
0
    }
720
0
    case Type::DCT32X32: {
721
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
0
      break;
725
0
    }
726
0
    case Type::DCT64X32: {
727
0
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
0
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
0
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
0
      break;
731
0
    }
732
0
    case Type::DCT32X64: {
733
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
0
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
0
      break;
737
0
    }
738
0
    case Type::DCT64X64: {
739
0
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
0
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
0
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
0
      break;
743
0
    }
744
0
    case Type::DCT128X64: {
745
0
      ReinterpretingIDCT<
746
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
747
0
          /*LF_ROWS=*/16, /*LF_COLS=*/8, /*ROWS=*/16, /*COLS=*/8>(
748
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
749
0
      break;
750
0
    }
751
0
    case Type::DCT64X128: {
752
0
      ReinterpretingIDCT<
753
0
          /*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
754
0
          /*LF_ROWS=*/8, /*LF_COLS=*/16, /*ROWS=*/8, /*COLS=*/16>(
755
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
756
0
      break;
757
0
    }
758
0
    case Type::DCT128X128: {
759
0
      ReinterpretingIDCT<
760
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
761
0
          /*LF_ROWS=*/16, /*LF_COLS=*/16, /*ROWS=*/16, /*COLS=*/16>(
762
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
763
0
      break;
764
0
    }
765
0
    case Type::DCT256X128: {
766
0
      ReinterpretingIDCT<
767
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
768
0
          /*LF_ROWS=*/32, /*LF_COLS=*/16, /*ROWS=*/32, /*COLS=*/16>(
769
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
770
0
      break;
771
0
    }
772
0
    case Type::DCT128X256: {
773
0
      ReinterpretingIDCT<
774
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
775
0
          /*LF_ROWS=*/16, /*LF_COLS=*/32, /*ROWS=*/16, /*COLS=*/32>(
776
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
777
0
      break;
778
0
    }
779
0
    case Type::DCT256X256: {
780
0
      ReinterpretingIDCT<
781
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
782
0
          /*LF_ROWS=*/32, /*LF_COLS=*/32, /*ROWS=*/32, /*COLS=*/32>(
783
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
784
0
      break;
785
0
    }
786
720
    case Type::DCT:
787
2.16k
    case Type::DCT2X2:
788
2.16k
    case Type::DCT4X4:
789
2.16k
    case Type::DCT4X8:
790
2.16k
    case Type::DCT8X4:
791
2.16k
    case Type::AFV0:
792
2.16k
    case Type::AFV1:
793
2.16k
    case Type::AFV2:
794
2.16k
    case Type::AFV3:
795
2.16k
    case Type::IDENTITY:
796
2.16k
      dc[0] = block[0];
797
2.16k
      break;
798
2.16k
  }
799
2.16k
}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Line
Count
Source
675
720
                                              float* scratch_space) {
676
720
  using Type = AcStrategyType;
677
720
  switch (strategy) {
678
0
    case Type::DCT16X8: {
679
0
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
0
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
0
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
0
      break;
683
0
    }
684
0
    case Type::DCT8X16: {
685
0
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
0
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
0
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
0
      break;
689
0
    }
690
0
    case Type::DCT16X16: {
691
0
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
0
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
0
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
0
      break;
695
0
    }
696
0
    case Type::DCT32X8: {
697
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/kBlockDim,
698
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/1, /*ROWS=*/4, /*COLS=*/1>(
699
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
700
0
      break;
701
0
    }
702
0
    case Type::DCT8X32: {
703
0
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
704
0
                         /*LF_ROWS=*/1, /*LF_COLS=*/4, /*ROWS=*/1, /*COLS=*/4>(
705
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
706
0
      break;
707
0
    }
708
0
    case Type::DCT32X16: {
709
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
0
      break;
713
0
    }
714
0
    case Type::DCT16X32: {
715
0
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
0
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
0
      break;
719
0
    }
720
0
    case Type::DCT32X32: {
721
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
0
      break;
725
0
    }
726
0
    case Type::DCT64X32: {
727
0
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
0
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
0
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
0
      break;
731
0
    }
732
0
    case Type::DCT32X64: {
733
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
0
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
0
      break;
737
0
    }
738
0
    case Type::DCT64X64: {
739
0
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
0
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
0
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
0
      break;
743
0
    }
744
0
    case Type::DCT128X64: {
745
0
      ReinterpretingIDCT<
746
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
747
0
          /*LF_ROWS=*/16, /*LF_COLS=*/8, /*ROWS=*/16, /*COLS=*/8>(
748
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
749
0
      break;
750
0
    }
751
0
    case Type::DCT64X128: {
752
0
      ReinterpretingIDCT<
753
0
          /*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
754
0
          /*LF_ROWS=*/8, /*LF_COLS=*/16, /*ROWS=*/8, /*COLS=*/16>(
755
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
756
0
      break;
757
0
    }
758
0
    case Type::DCT128X128: {
759
0
      ReinterpretingIDCT<
760
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
761
0
          /*LF_ROWS=*/16, /*LF_COLS=*/16, /*ROWS=*/16, /*COLS=*/16>(
762
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
763
0
      break;
764
0
    }
765
0
    case Type::DCT256X128: {
766
0
      ReinterpretingIDCT<
767
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
768
0
          /*LF_ROWS=*/32, /*LF_COLS=*/16, /*ROWS=*/32, /*COLS=*/16>(
769
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
770
0
      break;
771
0
    }
772
0
    case Type::DCT128X256: {
773
0
      ReinterpretingIDCT<
774
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
775
0
          /*LF_ROWS=*/16, /*LF_COLS=*/32, /*ROWS=*/16, /*COLS=*/32>(
776
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
777
0
      break;
778
0
    }
779
0
    case Type::DCT256X256: {
780
0
      ReinterpretingIDCT<
781
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
782
0
          /*LF_ROWS=*/32, /*LF_COLS=*/32, /*ROWS=*/32, /*COLS=*/32>(
783
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
784
0
      break;
785
0
    }
786
0
    case Type::DCT:
787
720
    case Type::DCT2X2:
788
720
    case Type::DCT4X4:
789
720
    case Type::DCT4X8:
790
720
    case Type::DCT8X4:
791
720
    case Type::AFV0:
792
720
    case Type::AFV1:
793
720
    case Type::AFV2:
794
720
    case Type::AFV3:
795
720
    case Type::IDENTITY:
796
720
      dc[0] = block[0];
797
720
      break;
798
720
  }
799
720
}
Unexecuted instantiation: enc_group.cc:jxl::N_SSE2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE4::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_AVX2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Unexecuted instantiation: enc_ac_strategy.cc:jxl::N_SSE2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE4::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Line
Count
Source
675
1.44k
                                              float* scratch_space) {
676
1.44k
  using Type = AcStrategyType;
677
1.44k
  switch (strategy) {
678
0
    case Type::DCT16X8: {
679
0
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
0
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
0
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
0
      break;
683
0
    }
684
0
    case Type::DCT8X16: {
685
0
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
0
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
0
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
0
      break;
689
0
    }
690
0
    case Type::DCT16X16: {
691
0
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
0
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
0
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
0
      break;
695
0
    }
696
0
    case Type::DCT32X8: {
697
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/kBlockDim,
698
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/1, /*ROWS=*/4, /*COLS=*/1>(
699
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
700
0
      break;
701
0
    }
702
0
    case Type::DCT8X32: {
703
0
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
704
0
                         /*LF_ROWS=*/1, /*LF_COLS=*/4, /*ROWS=*/1, /*COLS=*/4>(
705
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
706
0
      break;
707
0
    }
708
0
    case Type::DCT32X16: {
709
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
0
      break;
713
0
    }
714
0
    case Type::DCT16X32: {
715
0
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
0
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
0
      break;
719
0
    }
720
0
    case Type::DCT32X32: {
721
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
0
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
0
      break;
725
0
    }
726
0
    case Type::DCT64X32: {
727
0
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
0
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
0
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
0
      break;
731
0
    }
732
0
    case Type::DCT32X64: {
733
0
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
0
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
0
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
0
      break;
737
0
    }
738
0
    case Type::DCT64X64: {
739
0
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
0
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
0
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
0
      break;
743
0
    }
744
0
    case Type::DCT128X64: {
745
0
      ReinterpretingIDCT<
746
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
747
0
          /*LF_ROWS=*/16, /*LF_COLS=*/8, /*ROWS=*/16, /*COLS=*/8>(
748
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
749
0
      break;
750
0
    }
751
0
    case Type::DCT64X128: {
752
0
      ReinterpretingIDCT<
753
0
          /*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
754
0
          /*LF_ROWS=*/8, /*LF_COLS=*/16, /*ROWS=*/8, /*COLS=*/16>(
755
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
756
0
      break;
757
0
    }
758
0
    case Type::DCT128X128: {
759
0
      ReinterpretingIDCT<
760
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
761
0
          /*LF_ROWS=*/16, /*LF_COLS=*/16, /*ROWS=*/16, /*COLS=*/16>(
762
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
763
0
      break;
764
0
    }
765
0
    case Type::DCT256X128: {
766
0
      ReinterpretingIDCT<
767
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
768
0
          /*LF_ROWS=*/32, /*LF_COLS=*/16, /*ROWS=*/32, /*COLS=*/16>(
769
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
770
0
      break;
771
0
    }
772
0
    case Type::DCT128X256: {
773
0
      ReinterpretingIDCT<
774
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
775
0
          /*LF_ROWS=*/16, /*LF_COLS=*/32, /*ROWS=*/16, /*COLS=*/32>(
776
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
777
0
      break;
778
0
    }
779
0
    case Type::DCT256X256: {
780
0
      ReinterpretingIDCT<
781
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
782
0
          /*LF_ROWS=*/32, /*LF_COLS=*/32, /*ROWS=*/32, /*COLS=*/32>(
783
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
784
0
      break;
785
0
    }
786
720
    case Type::DCT:
787
1.44k
    case Type::DCT2X2:
788
1.44k
    case Type::DCT4X4:
789
1.44k
    case Type::DCT4X8:
790
1.44k
    case Type::DCT8X4:
791
1.44k
    case Type::AFV0:
792
1.44k
    case Type::AFV1:
793
1.44k
    case Type::AFV2:
794
1.44k
    case Type::AFV3:
795
1.44k
    case Type::IDENTITY:
796
1.44k
      dc[0] = block[0];
797
1.44k
      break;
798
1.44k
  }
799
1.44k
}
Unexecuted instantiation: enc_chroma_from_luma.cc:jxl::N_SSE2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
800
801
}  // namespace
802
// NOLINTNEXTLINE(google-readability-namespace-comments)
803
}  // namespace HWY_NAMESPACE
804
}  // namespace jxl
805
HWY_AFTER_NAMESPACE();
806
807
#endif  // LIB_JXL_ENC_TRANSFORMS_INL_H_