Coverage Report

Created: 2026-09-13 07:02

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libjxl/lib/jxl/enc_transforms-inl.h
Line
Count
Source
1
// Copyright (c) the JPEG XL Project Authors. All rights reserved.
2
//
3
// Use of this source code is governed by a BSD-style
4
// license that can be found in the LICENSE file.
5
6
#include "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
2.35M
                                   const size_t output_stride, float* scratch) {
40
2.35M
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
2.35M
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
2.35M
  float* block = scratch;
43
2.35M
  if (ROWS < COLS) {
44
1.74M
    for (size_t y = 0; y < LF_ROWS; y++) {
45
3.99M
      for (size_t x = 0; x < LF_COLS; x++) {
46
3.02M
        block[y * COLS + x] = input[y * input_stride + x] *
47
3.02M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
3.02M
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
3.02M
      }
50
976k
    }
51
1.59M
  } else {
52
5.77M
    for (size_t y = 0; y < LF_COLS; y++) {
53
23.5M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
19.3M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
19.3M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
19.3M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
19.3M
      }
58
4.18M
    }
59
1.59M
  }
60
61
2.35M
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
2.35M
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
2.35M
                                  scratch_space);
64
2.35M
}
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_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*)
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 8ul, 2ul, 1ul, 2ul, 1ul>(float const*, unsigned long, float*, unsigned long, float*)
Line
Count
Source
39
281k
                                   const size_t output_stride, float* scratch) {
40
281k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
281k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
281k
  float* block = scratch;
43
281k
  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
281k
  } else {
52
563k
    for (size_t y = 0; y < LF_COLS; y++) {
53
845k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
563k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
563k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
563k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
563k
      }
58
281k
    }
59
281k
  }
60
61
281k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
281k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
281k
                                  scratch_space);
64
281k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<8ul, 16ul, 1ul, 2ul, 1ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Line
Count
Source
39
298k
                                   const size_t output_stride, float* scratch) {
40
298k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
298k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
298k
  float* block = scratch;
43
298k
  if (ROWS < COLS) {
44
597k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
896k
      for (size_t x = 0; x < LF_COLS; x++) {
46
597k
        block[y * COLS + x] = input[y * input_stride + x] *
47
597k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
597k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
597k
      }
50
298k
    }
51
298k
  } 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
298k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
298k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
298k
                                  scratch_space);
64
298k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 16ul, 2ul, 2ul, 2ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Line
Count
Source
39
210k
                                   const size_t output_stride, float* scratch) {
40
210k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
210k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
210k
  float* block = scratch;
43
210k
  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
210k
  } else {
52
630k
    for (size_t y = 0; y < LF_COLS; y++) {
53
1.26M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
840k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
840k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
840k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
840k
      }
58
420k
    }
59
210k
  }
60
61
210k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
210k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
210k
                                  scratch_space);
64
210k
}
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*)
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 16ul, 4ul, 2ul, 4ul, 2ul>(float const*, unsigned long, float*, unsigned long, float*)
Line
Count
Source
39
68.8k
                                   const size_t output_stride, float* scratch) {
40
68.8k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
68.8k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
68.8k
  float* block = scratch;
43
68.8k
  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
68.8k
  } else {
52
206k
    for (size_t y = 0; y < LF_COLS; y++) {
53
688k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
550k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
550k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
550k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
550k
      }
58
137k
    }
59
68.8k
  }
60
61
68.8k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
68.8k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
68.8k
                                  scratch_space);
64
68.8k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<16ul, 32ul, 2ul, 4ul, 2ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Line
Count
Source
39
75.2k
                                   const size_t output_stride, float* scratch) {
40
75.2k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
75.2k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
75.2k
  float* block = scratch;
43
75.2k
  if (ROWS < COLS) {
44
225k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
752k
      for (size_t x = 0; x < LF_COLS; x++) {
46
601k
        block[y * COLS + x] = input[y * input_stride + x] *
47
601k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
601k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
601k
      }
50
150k
    }
51
75.2k
  } 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
75.2k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
75.2k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
75.2k
                                  scratch_space);
64
75.2k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 32ul, 4ul, 4ul, 4ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Line
Count
Source
39
142k
                                   const size_t output_stride, float* scratch) {
40
142k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
142k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
142k
  float* block = scratch;
43
142k
  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
142k
  } else {
52
710k
    for (size_t y = 0; y < LF_COLS; y++) {
53
2.84M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
2.27M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
2.27M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
2.27M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
2.27M
      }
58
568k
    }
59
142k
  }
60
61
142k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
142k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
142k
                                  scratch_space);
64
142k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 32ul, 8ul, 4ul, 8ul, 4ul>(float const*, unsigned long, float*, unsigned long, float*)
Line
Count
Source
39
14.8k
                                   const size_t output_stride, float* scratch) {
40
14.8k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
14.8k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
14.8k
  float* block = scratch;
43
14.8k
  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
14.8k
  } else {
52
74.2k
    for (size_t y = 0; y < LF_COLS; y++) {
53
534k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
475k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
475k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
475k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
475k
      }
58
59.4k
    }
59
14.8k
  }
60
61
14.8k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
14.8k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
14.8k
                                  scratch_space);
64
14.8k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<32ul, 64ul, 4ul, 8ul, 4ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Line
Count
Source
39
9.72k
                                   const size_t output_stride, float* scratch) {
40
9.72k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
9.72k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
9.72k
  float* block = scratch;
43
9.72k
  if (ROWS < COLS) {
44
48.6k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
350k
      for (size_t x = 0; x < LF_COLS; x++) {
46
311k
        block[y * COLS + x] = input[y * input_stride + x] *
47
311k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
311k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
311k
      }
50
38.9k
    }
51
9.72k
  } 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
9.72k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
9.72k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
9.72k
                                  scratch_space);
64
9.72k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::ReinterpretingIDCT<64ul, 64ul, 8ul, 8ul, 8ul, 8ul>(float const*, unsigned long, float*, unsigned long, float*)
Line
Count
Source
39
77.8k
                                   const size_t output_stride, float* scratch) {
40
77.8k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
77.8k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
77.8k
  float* block = scratch;
43
77.8k
  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
77.8k
  } else {
52
700k
    for (size_t y = 0; y < LF_COLS; y++) {
53
5.60M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
4.98M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
4.98M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
4.98M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
4.98M
      }
58
622k
    }
59
77.8k
  }
60
61
77.8k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
77.8k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
77.8k
                                  scratch_space);
64
77.8k
}
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_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*)
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*)
Line
Count
Source
39
281k
                                   const size_t output_stride, float* scratch) {
40
281k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
281k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
281k
  float* block = scratch;
43
281k
  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
281k
  } else {
52
563k
    for (size_t y = 0; y < LF_COLS; y++) {
53
845k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
563k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
563k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
563k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
563k
      }
58
281k
    }
59
281k
  }
60
61
281k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
281k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
281k
                                  scratch_space);
64
281k
}
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*)
Line
Count
Source
39
298k
                                   const size_t output_stride, float* scratch) {
40
298k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
298k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
298k
  float* block = scratch;
43
298k
  if (ROWS < COLS) {
44
597k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
896k
      for (size_t x = 0; x < LF_COLS; x++) {
46
597k
        block[y * COLS + x] = input[y * input_stride + x] *
47
597k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
597k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
597k
      }
50
298k
    }
51
298k
  } 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
298k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
298k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
298k
                                  scratch_space);
64
298k
}
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*)
Line
Count
Source
39
210k
                                   const size_t output_stride, float* scratch) {
40
210k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
210k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
210k
  float* block = scratch;
43
210k
  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
210k
  } else {
52
630k
    for (size_t y = 0; y < LF_COLS; y++) {
53
1.26M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
840k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
840k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
840k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
840k
      }
58
420k
    }
59
210k
  }
60
61
210k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
210k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
210k
                                  scratch_space);
64
210k
}
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*)
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*)
Line
Count
Source
39
68.8k
                                   const size_t output_stride, float* scratch) {
40
68.8k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
68.8k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
68.8k
  float* block = scratch;
43
68.8k
  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
68.8k
  } else {
52
206k
    for (size_t y = 0; y < LF_COLS; y++) {
53
688k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
550k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
550k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
550k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
550k
      }
58
137k
    }
59
68.8k
  }
60
61
68.8k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
68.8k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
68.8k
                                  scratch_space);
64
68.8k
}
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*)
Line
Count
Source
39
75.2k
                                   const size_t output_stride, float* scratch) {
40
75.2k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
75.2k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
75.2k
  float* block = scratch;
43
75.2k
  if (ROWS < COLS) {
44
225k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
752k
      for (size_t x = 0; x < LF_COLS; x++) {
46
601k
        block[y * COLS + x] = input[y * input_stride + x] *
47
601k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
601k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
601k
      }
50
150k
    }
51
75.2k
  } 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
75.2k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
75.2k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
75.2k
                                  scratch_space);
64
75.2k
}
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*)
Line
Count
Source
39
142k
                                   const size_t output_stride, float* scratch) {
40
142k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
142k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
142k
  float* block = scratch;
43
142k
  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
142k
  } else {
52
710k
    for (size_t y = 0; y < LF_COLS; y++) {
53
2.84M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
2.27M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
2.27M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
2.27M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
2.27M
      }
58
568k
    }
59
142k
  }
60
61
142k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
142k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
142k
                                  scratch_space);
64
142k
}
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*)
Line
Count
Source
39
14.8k
                                   const size_t output_stride, float* scratch) {
40
14.8k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
14.8k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
14.8k
  float* block = scratch;
43
14.8k
  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
14.8k
  } else {
52
74.2k
    for (size_t y = 0; y < LF_COLS; y++) {
53
534k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
475k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
475k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
475k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
475k
      }
58
59.4k
    }
59
14.8k
  }
60
61
14.8k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
14.8k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
14.8k
                                  scratch_space);
64
14.8k
}
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*)
Line
Count
Source
39
9.72k
                                   const size_t output_stride, float* scratch) {
40
9.72k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
9.72k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
9.72k
  float* block = scratch;
43
9.72k
  if (ROWS < COLS) {
44
48.6k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
350k
      for (size_t x = 0; x < LF_COLS; x++) {
46
311k
        block[y * COLS + x] = input[y * input_stride + x] *
47
311k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
311k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
311k
      }
50
38.9k
    }
51
9.72k
  } 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
9.72k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
9.72k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
9.72k
                                  scratch_space);
64
9.72k
}
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*)
Line
Count
Source
39
77.8k
                                   const size_t output_stride, float* scratch) {
40
77.8k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
77.8k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
77.8k
  float* block = scratch;
43
77.8k
  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
77.8k
  } else {
52
700k
    for (size_t y = 0; y < LF_COLS; y++) {
53
5.60M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
4.98M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
4.98M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
4.98M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
4.98M
      }
58
622k
    }
59
77.8k
  }
60
61
77.8k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
77.8k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
77.8k
                                  scratch_space);
64
77.8k
}
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*)
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*)
65
66
template <size_t S>
67
68.7M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
68.7M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
68.7M
  static_assert(S % 2 == 0, "S should be even");
70
68.7M
  float temp[kDCTBlockSize];
71
68.7M
  constexpr size_t num_2x2 = S / 2;
72
229M
  for (size_t y = 0; y < num_2x2; y++) {
73
641M
    for (size_t x = 0; x < num_2x2; x++) {
74
481M
      float c00 = block[y * 2 * stride + x * 2];
75
481M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
481M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
481M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
481M
      float r00 = c00 + c01 + c10 + c11;
79
481M
      float r01 = c00 + c01 - c10 - c11;
80
481M
      float r10 = c00 - c01 + c10 - c11;
81
481M
      float r11 = c00 - c01 - c10 + c11;
82
481M
      r00 *= 0.25f;
83
481M
      r01 *= 0.25f;
84
481M
      r10 *= 0.25f;
85
481M
      r11 *= 0.25f;
86
481M
      temp[y * kBlockDim + x] = r00;
87
481M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
481M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
481M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
481M
    }
91
160M
  }
92
389M
  for (size_t y = 0; y < S; y++) {
93
2.24G
    for (size_t x = 0; x < S; x++) {
94
1.92G
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
1.92G
    }
96
320M
  }
97
68.7M
}
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_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
2.67M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.67M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.67M
  static_assert(S % 2 == 0, "S should be even");
70
2.67M
  float temp[kDCTBlockSize];
71
2.67M
  constexpr size_t num_2x2 = S / 2;
72
13.3M
  for (size_t y = 0; y < num_2x2; y++) {
73
53.5M
    for (size_t x = 0; x < num_2x2; x++) {
74
42.8M
      float c00 = block[y * 2 * stride + x * 2];
75
42.8M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
42.8M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
42.8M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
42.8M
      float r00 = c00 + c01 + c10 + c11;
79
42.8M
      float r01 = c00 + c01 - c10 - c11;
80
42.8M
      float r10 = c00 - c01 + c10 - c11;
81
42.8M
      float r11 = c00 - c01 - c10 + c11;
82
42.8M
      r00 *= 0.25f;
83
42.8M
      r01 *= 0.25f;
84
42.8M
      r10 *= 0.25f;
85
42.8M
      r11 *= 0.25f;
86
42.8M
      temp[y * kBlockDim + x] = r00;
87
42.8M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
42.8M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
42.8M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
42.8M
    }
91
10.7M
  }
92
24.0M
  for (size_t y = 0; y < S; y++) {
93
192M
    for (size_t x = 0; x < S; x++) {
94
171M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
171M
    }
96
21.4M
  }
97
2.67M
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.67M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.67M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.67M
  static_assert(S % 2 == 0, "S should be even");
70
2.67M
  float temp[kDCTBlockSize];
71
2.67M
  constexpr size_t num_2x2 = S / 2;
72
8.02M
  for (size_t y = 0; y < num_2x2; y++) {
73
16.0M
    for (size_t x = 0; x < num_2x2; x++) {
74
10.7M
      float c00 = block[y * 2 * stride + x * 2];
75
10.7M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
10.7M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
10.7M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
10.7M
      float r00 = c00 + c01 + c10 + c11;
79
10.7M
      float r01 = c00 + c01 - c10 - c11;
80
10.7M
      float r10 = c00 - c01 + c10 - c11;
81
10.7M
      float r11 = c00 - c01 - c10 + c11;
82
10.7M
      r00 *= 0.25f;
83
10.7M
      r01 *= 0.25f;
84
10.7M
      r10 *= 0.25f;
85
10.7M
      r11 *= 0.25f;
86
10.7M
      temp[y * kBlockDim + x] = r00;
87
10.7M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
10.7M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
10.7M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
10.7M
    }
91
5.35M
  }
92
13.3M
  for (size_t y = 0; y < S; y++) {
93
53.5M
    for (size_t x = 0; x < S; x++) {
94
42.8M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
42.8M
    }
96
10.7M
  }
97
2.67M
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.67M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.67M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.67M
  static_assert(S % 2 == 0, "S should be even");
70
2.67M
  float temp[kDCTBlockSize];
71
2.67M
  constexpr size_t num_2x2 = S / 2;
72
5.35M
  for (size_t y = 0; y < num_2x2; y++) {
73
5.35M
    for (size_t x = 0; x < num_2x2; x++) {
74
2.67M
      float c00 = block[y * 2 * stride + x * 2];
75
2.67M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
2.67M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
2.67M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
2.67M
      float r00 = c00 + c01 + c10 + c11;
79
2.67M
      float r01 = c00 + c01 - c10 - c11;
80
2.67M
      float r10 = c00 - c01 + c10 - c11;
81
2.67M
      float r11 = c00 - c01 - c10 + c11;
82
2.67M
      r00 *= 0.25f;
83
2.67M
      r01 *= 0.25f;
84
2.67M
      r10 *= 0.25f;
85
2.67M
      r11 *= 0.25f;
86
2.67M
      temp[y * kBlockDim + x] = r00;
87
2.67M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
2.67M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
2.67M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
2.67M
    }
91
2.67M
  }
92
8.02M
  for (size_t y = 0; y < S; y++) {
93
16.0M
    for (size_t x = 0; x < S; x++) {
94
10.7M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
10.7M
    }
96
5.35M
  }
97
2.67M
}
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_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
2.67M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.67M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.67M
  static_assert(S % 2 == 0, "S should be even");
70
2.67M
  float temp[kDCTBlockSize];
71
2.67M
  constexpr size_t num_2x2 = S / 2;
72
13.3M
  for (size_t y = 0; y < num_2x2; y++) {
73
53.5M
    for (size_t x = 0; x < num_2x2; x++) {
74
42.8M
      float c00 = block[y * 2 * stride + x * 2];
75
42.8M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
42.8M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
42.8M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
42.8M
      float r00 = c00 + c01 + c10 + c11;
79
42.8M
      float r01 = c00 + c01 - c10 - c11;
80
42.8M
      float r10 = c00 - c01 + c10 - c11;
81
42.8M
      float r11 = c00 - c01 - c10 + c11;
82
42.8M
      r00 *= 0.25f;
83
42.8M
      r01 *= 0.25f;
84
42.8M
      r10 *= 0.25f;
85
42.8M
      r11 *= 0.25f;
86
42.8M
      temp[y * kBlockDim + x] = r00;
87
42.8M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
42.8M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
42.8M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
42.8M
    }
91
10.7M
  }
92
24.0M
  for (size_t y = 0; y < S; y++) {
93
192M
    for (size_t x = 0; x < S; x++) {
94
171M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
171M
    }
96
21.4M
  }
97
2.67M
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.67M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.67M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.67M
  static_assert(S % 2 == 0, "S should be even");
70
2.67M
  float temp[kDCTBlockSize];
71
2.67M
  constexpr size_t num_2x2 = S / 2;
72
8.02M
  for (size_t y = 0; y < num_2x2; y++) {
73
16.0M
    for (size_t x = 0; x < num_2x2; x++) {
74
10.7M
      float c00 = block[y * 2 * stride + x * 2];
75
10.7M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
10.7M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
10.7M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
10.7M
      float r00 = c00 + c01 + c10 + c11;
79
10.7M
      float r01 = c00 + c01 - c10 - c11;
80
10.7M
      float r10 = c00 - c01 + c10 - c11;
81
10.7M
      float r11 = c00 - c01 - c10 + c11;
82
10.7M
      r00 *= 0.25f;
83
10.7M
      r01 *= 0.25f;
84
10.7M
      r10 *= 0.25f;
85
10.7M
      r11 *= 0.25f;
86
10.7M
      temp[y * kBlockDim + x] = r00;
87
10.7M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
10.7M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
10.7M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
10.7M
    }
91
5.35M
  }
92
13.3M
  for (size_t y = 0; y < S; y++) {
93
53.5M
    for (size_t x = 0; x < S; x++) {
94
42.8M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
42.8M
    }
96
10.7M
  }
97
2.67M
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.67M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.67M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.67M
  static_assert(S % 2 == 0, "S should be even");
70
2.67M
  float temp[kDCTBlockSize];
71
2.67M
  constexpr size_t num_2x2 = S / 2;
72
5.35M
  for (size_t y = 0; y < num_2x2; y++) {
73
5.35M
    for (size_t x = 0; x < num_2x2; x++) {
74
2.67M
      float c00 = block[y * 2 * stride + x * 2];
75
2.67M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
2.67M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
2.67M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
2.67M
      float r00 = c00 + c01 + c10 + c11;
79
2.67M
      float r01 = c00 + c01 - c10 - c11;
80
2.67M
      float r10 = c00 - c01 + c10 - c11;
81
2.67M
      float r11 = c00 - c01 - c10 + c11;
82
2.67M
      r00 *= 0.25f;
83
2.67M
      r01 *= 0.25f;
84
2.67M
      r10 *= 0.25f;
85
2.67M
      r11 *= 0.25f;
86
2.67M
      temp[y * kBlockDim + x] = r00;
87
2.67M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
2.67M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
2.67M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
2.67M
    }
91
2.67M
  }
92
8.02M
  for (size_t y = 0; y < S; y++) {
93
16.0M
    for (size_t x = 0; x < S; x++) {
94
10.7M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
10.7M
    }
96
5.35M
  }
97
2.67M
}
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*)
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
17.5M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
17.5M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
17.5M
  static_assert(S % 2 == 0, "S should be even");
70
17.5M
  float temp[kDCTBlockSize];
71
17.5M
  constexpr size_t num_2x2 = S / 2;
72
87.8M
  for (size_t y = 0; y < num_2x2; y++) {
73
351M
    for (size_t x = 0; x < num_2x2; x++) {
74
281M
      float c00 = block[y * 2 * stride + x * 2];
75
281M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
281M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
281M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
281M
      float r00 = c00 + c01 + c10 + c11;
79
281M
      float r01 = c00 + c01 - c10 - c11;
80
281M
      float r10 = c00 - c01 + c10 - c11;
81
281M
      float r11 = c00 - c01 - c10 + c11;
82
281M
      r00 *= 0.25f;
83
281M
      r01 *= 0.25f;
84
281M
      r10 *= 0.25f;
85
281M
      r11 *= 0.25f;
86
281M
      temp[y * kBlockDim + x] = r00;
87
281M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
281M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
281M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
281M
    }
91
70.2M
  }
92
158M
  for (size_t y = 0; y < S; y++) {
93
1.26G
    for (size_t x = 0; x < S; x++) {
94
1.12G
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
1.12G
    }
96
140M
  }
97
17.5M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
17.5M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
17.5M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
17.5M
  static_assert(S % 2 == 0, "S should be even");
70
17.5M
  float temp[kDCTBlockSize];
71
17.5M
  constexpr size_t num_2x2 = S / 2;
72
52.6M
  for (size_t y = 0; y < num_2x2; y++) {
73
105M
    for (size_t x = 0; x < num_2x2; x++) {
74
70.2M
      float c00 = block[y * 2 * stride + x * 2];
75
70.2M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
70.2M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
70.2M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
70.2M
      float r00 = c00 + c01 + c10 + c11;
79
70.2M
      float r01 = c00 + c01 - c10 - c11;
80
70.2M
      float r10 = c00 - c01 + c10 - c11;
81
70.2M
      float r11 = c00 - c01 - c10 + c11;
82
70.2M
      r00 *= 0.25f;
83
70.2M
      r01 *= 0.25f;
84
70.2M
      r10 *= 0.25f;
85
70.2M
      r11 *= 0.25f;
86
70.2M
      temp[y * kBlockDim + x] = r00;
87
70.2M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
70.2M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
70.2M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
70.2M
    }
91
35.1M
  }
92
87.8M
  for (size_t y = 0; y < S; y++) {
93
351M
    for (size_t x = 0; x < S; x++) {
94
281M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
281M
    }
96
70.2M
  }
97
17.5M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
17.5M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
17.5M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
17.5M
  static_assert(S % 2 == 0, "S should be even");
70
17.5M
  float temp[kDCTBlockSize];
71
17.5M
  constexpr size_t num_2x2 = S / 2;
72
35.1M
  for (size_t y = 0; y < num_2x2; y++) {
73
35.1M
    for (size_t x = 0; x < num_2x2; x++) {
74
17.5M
      float c00 = block[y * 2 * stride + x * 2];
75
17.5M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
17.5M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
17.5M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
17.5M
      float r00 = c00 + c01 + c10 + c11;
79
17.5M
      float r01 = c00 + c01 - c10 - c11;
80
17.5M
      float r10 = c00 - c01 + c10 - c11;
81
17.5M
      float r11 = c00 - c01 - c10 + c11;
82
17.5M
      r00 *= 0.25f;
83
17.5M
      r01 *= 0.25f;
84
17.5M
      r10 *= 0.25f;
85
17.5M
      r11 *= 0.25f;
86
17.5M
      temp[y * kBlockDim + x] = r00;
87
17.5M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
17.5M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
17.5M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
17.5M
    }
91
17.5M
  }
92
52.6M
  for (size_t y = 0; y < S; y++) {
93
105M
    for (size_t x = 0; x < S; x++) {
94
70.2M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
70.2M
    }
96
35.1M
  }
97
17.5M
}
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*)
98
99
71.0M
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
71.0M
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
71.0M
      {
102
71.0M
          0.2500000000000000,
103
71.0M
          0.8769029297991420f,
104
71.0M
          0.0000000000000000,
105
71.0M
          0.0000000000000000,
106
71.0M
          0.0000000000000000,
107
71.0M
          -0.4105377591765233f,
108
71.0M
          0.0000000000000000,
109
71.0M
          0.0000000000000000,
110
71.0M
          0.0000000000000000,
111
71.0M
          0.0000000000000000,
112
71.0M
          0.0000000000000000,
113
71.0M
          0.0000000000000000,
114
71.0M
          0.0000000000000000,
115
71.0M
          0.0000000000000000,
116
71.0M
          0.0000000000000000,
117
71.0M
          0.0000000000000000,
118
71.0M
      },
119
71.0M
      {
120
71.0M
          0.2500000000000000,
121
71.0M
          0.2206518106944235f,
122
71.0M
          0.0000000000000000,
123
71.0M
          0.0000000000000000,
124
71.0M
          -0.7071067811865474f,
125
71.0M
          0.6235485373547691f,
126
71.0M
          0.0000000000000000,
127
71.0M
          0.0000000000000000,
128
71.0M
          0.0000000000000000,
129
71.0M
          0.0000000000000000,
130
71.0M
          0.0000000000000000,
131
71.0M
          0.0000000000000000,
132
71.0M
          0.0000000000000000,
133
71.0M
          0.0000000000000000,
134
71.0M
          0.0000000000000000,
135
71.0M
          0.0000000000000000,
136
71.0M
      },
137
71.0M
      {
138
71.0M
          0.2500000000000000,
139
71.0M
          -0.1014005039375376f,
140
71.0M
          0.4067007583026075f,
141
71.0M
          -0.2125574805828875f,
142
71.0M
          0.0000000000000000,
143
71.0M
          -0.0643507165794627f,
144
71.0M
          -0.4517556589999482f,
145
71.0M
          -0.3046847507248690f,
146
71.0M
          0.3017929516615495f,
147
71.0M
          0.4082482904638627f,
148
71.0M
          0.1747866975480809f,
149
71.0M
          -0.2110560104933578f,
150
71.0M
          -0.1426608480880726f,
151
71.0M
          -0.1381354035075859f,
152
71.0M
          -0.1743760259965107f,
153
71.0M
          0.1135498731499434f,
154
71.0M
      },
155
71.0M
      {
156
71.0M
          0.2500000000000000,
157
71.0M
          -0.1014005039375375f,
158
71.0M
          0.4444481661973445f,
159
71.0M
          0.3085497062849767f,
160
71.0M
          0.0000000000000000f,
161
71.0M
          -0.0643507165794627f,
162
71.0M
          0.1585450355184006f,
163
71.0M
          0.5112616136591823f,
164
71.0M
          0.2579236279634118f,
165
71.0M
          0.0000000000000000,
166
71.0M
          0.0812611176717539f,
167
71.0M
          0.1856718091610980f,
168
71.0M
          -0.3416446842253372f,
169
71.0M
          0.3302282550303788f,
170
71.0M
          0.0702790691196284f,
171
71.0M
          -0.0741750459581035f,
172
71.0M
      },
173
71.0M
      {
174
71.0M
          0.2500000000000000,
175
71.0M
          0.2206518106944236f,
176
71.0M
          0.0000000000000000,
177
71.0M
          0.0000000000000000,
178
71.0M
          0.7071067811865476f,
179
71.0M
          0.6235485373547694f,
180
71.0M
          0.0000000000000000,
181
71.0M
          0.0000000000000000,
182
71.0M
          0.0000000000000000,
183
71.0M
          0.0000000000000000,
184
71.0M
          0.0000000000000000,
185
71.0M
          0.0000000000000000,
186
71.0M
          0.0000000000000000,
187
71.0M
          0.0000000000000000,
188
71.0M
          0.0000000000000000,
189
71.0M
          0.0000000000000000,
190
71.0M
      },
191
71.0M
      {
192
71.0M
          0.2500000000000000,
193
71.0M
          -0.1014005039375378f,
194
71.0M
          0.0000000000000000,
195
71.0M
          0.4706702258572536f,
196
71.0M
          0.0000000000000000,
197
71.0M
          -0.0643507165794628f,
198
71.0M
          -0.0403851516082220f,
199
71.0M
          0.0000000000000000,
200
71.0M
          0.1627234014286620f,
201
71.0M
          0.0000000000000000,
202
71.0M
          0.0000000000000000,
203
71.0M
          0.0000000000000000,
204
71.0M
          0.7367497537172237f,
205
71.0M
          0.0875511500058708f,
206
71.0M
          -0.2921026642334881f,
207
71.0M
          0.1940289303259434f,
208
71.0M
      },
209
71.0M
      {
210
71.0M
          0.2500000000000000,
211
71.0M
          -0.1014005039375377f,
212
71.0M
          0.1957439937204294f,
213
71.0M
          -0.1621205195722993f,
214
71.0M
          0.0000000000000000,
215
71.0M
          -0.0643507165794628f,
216
71.0M
          0.0074182263792424f,
217
71.0M
          -0.2904801297289980f,
218
71.0M
          0.0952002265347504f,
219
71.0M
          0.0000000000000000,
220
71.0M
          -0.3675398009862027f,
221
71.0M
          0.4921585901373873f,
222
71.0M
          0.2462710772207515f,
223
71.0M
          -0.0794670660590957f,
224
71.0M
          0.3623817333531167f,
225
71.0M
          -0.4351904965232280f,
226
71.0M
      },
227
71.0M
      {
228
71.0M
          0.2500000000000000,
229
71.0M
          -0.1014005039375376f,
230
71.0M
          0.2929100136981264f,
231
71.0M
          0.0000000000000000,
232
71.0M
          0.0000000000000000,
233
71.0M
          -0.0643507165794627f,
234
71.0M
          0.3935103426921017f,
235
71.0M
          -0.0657870154914280f,
236
71.0M
          0.0000000000000000,
237
71.0M
          -0.4082482904638628f,
238
71.0M
          -0.3078822139579090f,
239
71.0M
          -0.3852501370925192f,
240
71.0M
          -0.0857401903551931f,
241
71.0M
          -0.4613374887461511f,
242
71.0M
          0.0000000000000000,
243
71.0M
          0.2191868483885747f,
244
71.0M
      },
245
71.0M
      {
246
71.0M
          0.2500000000000000,
247
71.0M
          -0.1014005039375376f,
248
71.0M
          -0.4067007583026072f,
249
71.0M
          -0.2125574805828705f,
250
71.0M
          0.0000000000000000,
251
71.0M
          -0.0643507165794627f,
252
71.0M
          -0.4517556589999464f,
253
71.0M
          0.3046847507248840f,
254
71.0M
          0.3017929516615503f,
255
71.0M
          -0.4082482904638635f,
256
71.0M
          -0.1747866975480813f,
257
71.0M
          0.2110560104933581f,
258
71.0M
          -0.1426608480880734f,
259
71.0M
          -0.1381354035075829f,
260
71.0M
          -0.1743760259965108f,
261
71.0M
          0.1135498731499426f,
262
71.0M
      },
263
71.0M
      {
264
71.0M
          0.2500000000000000,
265
71.0M
          -0.1014005039375377f,
266
71.0M
          -0.1957439937204287f,
267
71.0M
          -0.1621205195722833f,
268
71.0M
          0.0000000000000000,
269
71.0M
          -0.0643507165794628f,
270
71.0M
          0.0074182263792444f,
271
71.0M
          0.2904801297290076f,
272
71.0M
          0.0952002265347505f,
273
71.0M
          0.0000000000000000,
274
71.0M
          0.3675398009862011f,
275
71.0M
          -0.4921585901373891f,
276
71.0M
          0.2462710772207514f,
277
71.0M
          -0.0794670660591026f,
278
71.0M
          0.3623817333531165f,
279
71.0M
          -0.4351904965232251f,
280
71.0M
      },
281
71.0M
      {
282
71.0M
          0.2500000000000000,
283
71.0M
          -0.1014005039375375f,
284
71.0M
          0.0000000000000000,
285
71.0M
          -0.4706702258572528f,
286
71.0M
          0.0000000000000000,
287
71.0M
          -0.0643507165794627f,
288
71.0M
          0.1107416575309343f,
289
71.0M
          0.0000000000000000,
290
71.0M
          -0.1627234014286617f,
291
71.0M
          0.0000000000000000,
292
71.0M
          0.0000000000000000,
293
71.0M
          0.0000000000000000,
294
71.0M
          0.1488339922711357f,
295
71.0M
          0.4972464710953509f,
296
71.0M
          0.2921026642334879f,
297
71.0M
          0.5550443808910661f,
298
71.0M
      },
299
71.0M
      {
300
71.0M
          0.2500000000000000,
301
71.0M
          -0.1014005039375377f,
302
71.0M
          0.1137907446044809f,
303
71.0M
          -0.1464291867126764f,
304
71.0M
          0.0000000000000000,
305
71.0M
          -0.0643507165794628f,
306
71.0M
          0.0829816309488205f,
307
71.0M
          -0.2388977352334460f,
308
71.0M
          -0.3531238544981630f,
309
71.0M
          -0.4082482904638630f,
310
71.0M
          0.4826689115059883f,
311
71.0M
          0.1741941265991622f,
312
71.0M
          -0.0476868035022925f,
313
71.0M
          0.1253805944856366f,
314
71.0M
          -0.4326608024727445f,
315
71.0M
          -0.2546827712406646f,
316
71.0M
      },
317
71.0M
      {
318
71.0M
          0.2500000000000000,
319
71.0M
          -0.1014005039375377f,
320
71.0M
          -0.4444481661973438f,
321
71.0M
          0.3085497062849487f,
322
71.0M
          0.0000000000000000,
323
71.0M
          -0.0643507165794628f,
324
71.0M
          0.1585450355183970f,
325
71.0M
          -0.5112616136592012f,
326
71.0M
          0.2579236279634129f,
327
71.0M
          0.0000000000000000,
328
71.0M
          -0.0812611176717504f,
329
71.0M
          -0.1856718091610990f,
330
71.0M
          -0.3416446842253373f,
331
71.0M
          0.3302282550303805f,
332
71.0M
          0.0702790691196282f,
333
71.0M
          -0.0741750459581023f,
334
71.0M
      },
335
71.0M
      {
336
71.0M
          0.2500000000000000,
337
71.0M
          -0.1014005039375376f,
338
71.0M
          -0.2929100136981264f,
339
71.0M
          0.0000000000000000,
340
71.0M
          0.0000000000000000,
341
71.0M
          -0.0643507165794627f,
342
71.0M
          0.3935103426921022f,
343
71.0M
          0.0657870154914254f,
344
71.0M
          0.0000000000000000,
345
71.0M
          0.4082482904638634f,
346
71.0M
          0.3078822139579031f,
347
71.0M
          0.3852501370925211f,
348
71.0M
          -0.0857401903551927f,
349
71.0M
          -0.4613374887461554f,
350
71.0M
          0.0000000000000000,
351
71.0M
          0.2191868483885728f,
352
71.0M
      },
353
71.0M
      {
354
71.0M
          0.2500000000000000,
355
71.0M
          -0.1014005039375376f,
356
71.0M
          -0.1137907446044814f,
357
71.0M
          -0.1464291867126654f,
358
71.0M
          0.0000000000000000,
359
71.0M
          -0.0643507165794627f,
360
71.0M
          0.0829816309488214f,
361
71.0M
          0.2388977352334547f,
362
71.0M
          -0.3531238544981624f,
363
71.0M
          0.4082482904638630f,
364
71.0M
          -0.4826689115059858f,
365
71.0M
          -0.1741941265991621f,
366
71.0M
          -0.0476868035022928f,
367
71.0M
          0.1253805944856431f,
368
71.0M
          -0.4326608024727457f,
369
71.0M
          -0.2546827712406641f,
370
71.0M
      },
371
71.0M
      {
372
71.0M
          0.2500000000000000,
373
71.0M
          -0.1014005039375374f,
374
71.0M
          0.0000000000000000,
375
71.0M
          0.4251149611657548f,
376
71.0M
          0.0000000000000000,
377
71.0M
          -0.0643507165794626f,
378
71.0M
          -0.4517556589999480f,
379
71.0M
          0.0000000000000000,
380
71.0M
          -0.6035859033230976f,
381
71.0M
          0.0000000000000000,
382
71.0M
          0.0000000000000000,
383
71.0M
          0.0000000000000000,
384
71.0M
          -0.1426608480880724f,
385
71.0M
          -0.1381354035075845f,
386
71.0M
          0.3487520519930227f,
387
71.0M
          0.1135498731499429f,
388
71.0M
      },
389
71.0M
  };
390
391
71.0M
  const HWY_CAPPED(float, 16) d;
392
213M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
142M
    auto scalar = Zero(d);
394
2.41G
    for (size_t j = 0; j < 16; j++) {
395
2.27G
      auto px = Set(d, pixels[j]);
396
2.27G
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
2.27G
      scalar = MulAdd(px, basis, scalar);
398
2.27G
    }
399
142M
    Store(scalar, d, coeffs + i);
400
142M
  }
401
71.0M
}
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_group.cc:jxl::N_SSE4::(anonymous namespace)::AFVDCT4x4(float const*, float*)
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Line
Count
Source
99
380k
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
380k
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
380k
      {
102
380k
          0.2500000000000000,
103
380k
          0.8769029297991420f,
104
380k
          0.0000000000000000,
105
380k
          0.0000000000000000,
106
380k
          0.0000000000000000,
107
380k
          -0.4105377591765233f,
108
380k
          0.0000000000000000,
109
380k
          0.0000000000000000,
110
380k
          0.0000000000000000,
111
380k
          0.0000000000000000,
112
380k
          0.0000000000000000,
113
380k
          0.0000000000000000,
114
380k
          0.0000000000000000,
115
380k
          0.0000000000000000,
116
380k
          0.0000000000000000,
117
380k
          0.0000000000000000,
118
380k
      },
119
380k
      {
120
380k
          0.2500000000000000,
121
380k
          0.2206518106944235f,
122
380k
          0.0000000000000000,
123
380k
          0.0000000000000000,
124
380k
          -0.7071067811865474f,
125
380k
          0.6235485373547691f,
126
380k
          0.0000000000000000,
127
380k
          0.0000000000000000,
128
380k
          0.0000000000000000,
129
380k
          0.0000000000000000,
130
380k
          0.0000000000000000,
131
380k
          0.0000000000000000,
132
380k
          0.0000000000000000,
133
380k
          0.0000000000000000,
134
380k
          0.0000000000000000,
135
380k
          0.0000000000000000,
136
380k
      },
137
380k
      {
138
380k
          0.2500000000000000,
139
380k
          -0.1014005039375376f,
140
380k
          0.4067007583026075f,
141
380k
          -0.2125574805828875f,
142
380k
          0.0000000000000000,
143
380k
          -0.0643507165794627f,
144
380k
          -0.4517556589999482f,
145
380k
          -0.3046847507248690f,
146
380k
          0.3017929516615495f,
147
380k
          0.4082482904638627f,
148
380k
          0.1747866975480809f,
149
380k
          -0.2110560104933578f,
150
380k
          -0.1426608480880726f,
151
380k
          -0.1381354035075859f,
152
380k
          -0.1743760259965107f,
153
380k
          0.1135498731499434f,
154
380k
      },
155
380k
      {
156
380k
          0.2500000000000000,
157
380k
          -0.1014005039375375f,
158
380k
          0.4444481661973445f,
159
380k
          0.3085497062849767f,
160
380k
          0.0000000000000000f,
161
380k
          -0.0643507165794627f,
162
380k
          0.1585450355184006f,
163
380k
          0.5112616136591823f,
164
380k
          0.2579236279634118f,
165
380k
          0.0000000000000000,
166
380k
          0.0812611176717539f,
167
380k
          0.1856718091610980f,
168
380k
          -0.3416446842253372f,
169
380k
          0.3302282550303788f,
170
380k
          0.0702790691196284f,
171
380k
          -0.0741750459581035f,
172
380k
      },
173
380k
      {
174
380k
          0.2500000000000000,
175
380k
          0.2206518106944236f,
176
380k
          0.0000000000000000,
177
380k
          0.0000000000000000,
178
380k
          0.7071067811865476f,
179
380k
          0.6235485373547694f,
180
380k
          0.0000000000000000,
181
380k
          0.0000000000000000,
182
380k
          0.0000000000000000,
183
380k
          0.0000000000000000,
184
380k
          0.0000000000000000,
185
380k
          0.0000000000000000,
186
380k
          0.0000000000000000,
187
380k
          0.0000000000000000,
188
380k
          0.0000000000000000,
189
380k
          0.0000000000000000,
190
380k
      },
191
380k
      {
192
380k
          0.2500000000000000,
193
380k
          -0.1014005039375378f,
194
380k
          0.0000000000000000,
195
380k
          0.4706702258572536f,
196
380k
          0.0000000000000000,
197
380k
          -0.0643507165794628f,
198
380k
          -0.0403851516082220f,
199
380k
          0.0000000000000000,
200
380k
          0.1627234014286620f,
201
380k
          0.0000000000000000,
202
380k
          0.0000000000000000,
203
380k
          0.0000000000000000,
204
380k
          0.7367497537172237f,
205
380k
          0.0875511500058708f,
206
380k
          -0.2921026642334881f,
207
380k
          0.1940289303259434f,
208
380k
      },
209
380k
      {
210
380k
          0.2500000000000000,
211
380k
          -0.1014005039375377f,
212
380k
          0.1957439937204294f,
213
380k
          -0.1621205195722993f,
214
380k
          0.0000000000000000,
215
380k
          -0.0643507165794628f,
216
380k
          0.0074182263792424f,
217
380k
          -0.2904801297289980f,
218
380k
          0.0952002265347504f,
219
380k
          0.0000000000000000,
220
380k
          -0.3675398009862027f,
221
380k
          0.4921585901373873f,
222
380k
          0.2462710772207515f,
223
380k
          -0.0794670660590957f,
224
380k
          0.3623817333531167f,
225
380k
          -0.4351904965232280f,
226
380k
      },
227
380k
      {
228
380k
          0.2500000000000000,
229
380k
          -0.1014005039375376f,
230
380k
          0.2929100136981264f,
231
380k
          0.0000000000000000,
232
380k
          0.0000000000000000,
233
380k
          -0.0643507165794627f,
234
380k
          0.3935103426921017f,
235
380k
          -0.0657870154914280f,
236
380k
          0.0000000000000000,
237
380k
          -0.4082482904638628f,
238
380k
          -0.3078822139579090f,
239
380k
          -0.3852501370925192f,
240
380k
          -0.0857401903551931f,
241
380k
          -0.4613374887461511f,
242
380k
          0.0000000000000000,
243
380k
          0.2191868483885747f,
244
380k
      },
245
380k
      {
246
380k
          0.2500000000000000,
247
380k
          -0.1014005039375376f,
248
380k
          -0.4067007583026072f,
249
380k
          -0.2125574805828705f,
250
380k
          0.0000000000000000,
251
380k
          -0.0643507165794627f,
252
380k
          -0.4517556589999464f,
253
380k
          0.3046847507248840f,
254
380k
          0.3017929516615503f,
255
380k
          -0.4082482904638635f,
256
380k
          -0.1747866975480813f,
257
380k
          0.2110560104933581f,
258
380k
          -0.1426608480880734f,
259
380k
          -0.1381354035075829f,
260
380k
          -0.1743760259965108f,
261
380k
          0.1135498731499426f,
262
380k
      },
263
380k
      {
264
380k
          0.2500000000000000,
265
380k
          -0.1014005039375377f,
266
380k
          -0.1957439937204287f,
267
380k
          -0.1621205195722833f,
268
380k
          0.0000000000000000,
269
380k
          -0.0643507165794628f,
270
380k
          0.0074182263792444f,
271
380k
          0.2904801297290076f,
272
380k
          0.0952002265347505f,
273
380k
          0.0000000000000000,
274
380k
          0.3675398009862011f,
275
380k
          -0.4921585901373891f,
276
380k
          0.2462710772207514f,
277
380k
          -0.0794670660591026f,
278
380k
          0.3623817333531165f,
279
380k
          -0.4351904965232251f,
280
380k
      },
281
380k
      {
282
380k
          0.2500000000000000,
283
380k
          -0.1014005039375375f,
284
380k
          0.0000000000000000,
285
380k
          -0.4706702258572528f,
286
380k
          0.0000000000000000,
287
380k
          -0.0643507165794627f,
288
380k
          0.1107416575309343f,
289
380k
          0.0000000000000000,
290
380k
          -0.1627234014286617f,
291
380k
          0.0000000000000000,
292
380k
          0.0000000000000000,
293
380k
          0.0000000000000000,
294
380k
          0.1488339922711357f,
295
380k
          0.4972464710953509f,
296
380k
          0.2921026642334879f,
297
380k
          0.5550443808910661f,
298
380k
      },
299
380k
      {
300
380k
          0.2500000000000000,
301
380k
          -0.1014005039375377f,
302
380k
          0.1137907446044809f,
303
380k
          -0.1464291867126764f,
304
380k
          0.0000000000000000,
305
380k
          -0.0643507165794628f,
306
380k
          0.0829816309488205f,
307
380k
          -0.2388977352334460f,
308
380k
          -0.3531238544981630f,
309
380k
          -0.4082482904638630f,
310
380k
          0.4826689115059883f,
311
380k
          0.1741941265991622f,
312
380k
          -0.0476868035022925f,
313
380k
          0.1253805944856366f,
314
380k
          -0.4326608024727445f,
315
380k
          -0.2546827712406646f,
316
380k
      },
317
380k
      {
318
380k
          0.2500000000000000,
319
380k
          -0.1014005039375377f,
320
380k
          -0.4444481661973438f,
321
380k
          0.3085497062849487f,
322
380k
          0.0000000000000000,
323
380k
          -0.0643507165794628f,
324
380k
          0.1585450355183970f,
325
380k
          -0.5112616136592012f,
326
380k
          0.2579236279634129f,
327
380k
          0.0000000000000000,
328
380k
          -0.0812611176717504f,
329
380k
          -0.1856718091610990f,
330
380k
          -0.3416446842253373f,
331
380k
          0.3302282550303805f,
332
380k
          0.0702790691196282f,
333
380k
          -0.0741750459581023f,
334
380k
      },
335
380k
      {
336
380k
          0.2500000000000000,
337
380k
          -0.1014005039375376f,
338
380k
          -0.2929100136981264f,
339
380k
          0.0000000000000000,
340
380k
          0.0000000000000000,
341
380k
          -0.0643507165794627f,
342
380k
          0.3935103426921022f,
343
380k
          0.0657870154914254f,
344
380k
          0.0000000000000000,
345
380k
          0.4082482904638634f,
346
380k
          0.3078822139579031f,
347
380k
          0.3852501370925211f,
348
380k
          -0.0857401903551927f,
349
380k
          -0.4613374887461554f,
350
380k
          0.0000000000000000,
351
380k
          0.2191868483885728f,
352
380k
      },
353
380k
      {
354
380k
          0.2500000000000000,
355
380k
          -0.1014005039375376f,
356
380k
          -0.1137907446044814f,
357
380k
          -0.1464291867126654f,
358
380k
          0.0000000000000000,
359
380k
          -0.0643507165794627f,
360
380k
          0.0829816309488214f,
361
380k
          0.2388977352334547f,
362
380k
          -0.3531238544981624f,
363
380k
          0.4082482904638630f,
364
380k
          -0.4826689115059858f,
365
380k
          -0.1741941265991621f,
366
380k
          -0.0476868035022928f,
367
380k
          0.1253805944856431f,
368
380k
          -0.4326608024727457f,
369
380k
          -0.2546827712406641f,
370
380k
      },
371
380k
      {
372
380k
          0.2500000000000000,
373
380k
          -0.1014005039375374f,
374
380k
          0.0000000000000000,
375
380k
          0.4251149611657548f,
376
380k
          0.0000000000000000,
377
380k
          -0.0643507165794626f,
378
380k
          -0.4517556589999480f,
379
380k
          0.0000000000000000,
380
380k
          -0.6035859033230976f,
381
380k
          0.0000000000000000,
382
380k
          0.0000000000000000,
383
380k
          0.0000000000000000,
384
380k
          -0.1426608480880724f,
385
380k
          -0.1381354035075845f,
386
380k
          0.3487520519930227f,
387
380k
          0.1135498731499429f,
388
380k
      },
389
380k
  };
390
391
380k
  const HWY_CAPPED(float, 16) d;
392
1.14M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
760k
    auto scalar = Zero(d);
394
12.9M
    for (size_t j = 0; j < 16; j++) {
395
12.1M
      auto px = Set(d, pixels[j]);
396
12.1M
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
12.1M
      scalar = MulAdd(px, basis, scalar);
398
12.1M
    }
399
760k
    Store(scalar, d, coeffs + i);
400
760k
  }
401
380k
}
Unexecuted instantiation: enc_group.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*)
enc_chroma_from_luma.cc:jxl::N_AVX2::(anonymous namespace)::AFVDCT4x4(float const*, float*)
Line
Count
Source
99
380k
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
380k
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
380k
      {
102
380k
          0.2500000000000000,
103
380k
          0.8769029297991420f,
104
380k
          0.0000000000000000,
105
380k
          0.0000000000000000,
106
380k
          0.0000000000000000,
107
380k
          -0.4105377591765233f,
108
380k
          0.0000000000000000,
109
380k
          0.0000000000000000,
110
380k
          0.0000000000000000,
111
380k
          0.0000000000000000,
112
380k
          0.0000000000000000,
113
380k
          0.0000000000000000,
114
380k
          0.0000000000000000,
115
380k
          0.0000000000000000,
116
380k
          0.0000000000000000,
117
380k
          0.0000000000000000,
118
380k
      },
119
380k
      {
120
380k
          0.2500000000000000,
121
380k
          0.2206518106944235f,
122
380k
          0.0000000000000000,
123
380k
          0.0000000000000000,
124
380k
          -0.7071067811865474f,
125
380k
          0.6235485373547691f,
126
380k
          0.0000000000000000,
127
380k
          0.0000000000000000,
128
380k
          0.0000000000000000,
129
380k
          0.0000000000000000,
130
380k
          0.0000000000000000,
131
380k
          0.0000000000000000,
132
380k
          0.0000000000000000,
133
380k
          0.0000000000000000,
134
380k
          0.0000000000000000,
135
380k
          0.0000000000000000,
136
380k
      },
137
380k
      {
138
380k
          0.2500000000000000,
139
380k
          -0.1014005039375376f,
140
380k
          0.4067007583026075f,
141
380k
          -0.2125574805828875f,
142
380k
          0.0000000000000000,
143
380k
          -0.0643507165794627f,
144
380k
          -0.4517556589999482f,
145
380k
          -0.3046847507248690f,
146
380k
          0.3017929516615495f,
147
380k
          0.4082482904638627f,
148
380k
          0.1747866975480809f,
149
380k
          -0.2110560104933578f,
150
380k
          -0.1426608480880726f,
151
380k
          -0.1381354035075859f,
152
380k
          -0.1743760259965107f,
153
380k
          0.1135498731499434f,
154
380k
      },
155
380k
      {
156
380k
          0.2500000000000000,
157
380k
          -0.1014005039375375f,
158
380k
          0.4444481661973445f,
159
380k
          0.3085497062849767f,
160
380k
          0.0000000000000000f,
161
380k
          -0.0643507165794627f,
162
380k
          0.1585450355184006f,
163
380k
          0.5112616136591823f,
164
380k
          0.2579236279634118f,
165
380k
          0.0000000000000000,
166
380k
          0.0812611176717539f,
167
380k
          0.1856718091610980f,
168
380k
          -0.3416446842253372f,
169
380k
          0.3302282550303788f,
170
380k
          0.0702790691196284f,
171
380k
          -0.0741750459581035f,
172
380k
      },
173
380k
      {
174
380k
          0.2500000000000000,
175
380k
          0.2206518106944236f,
176
380k
          0.0000000000000000,
177
380k
          0.0000000000000000,
178
380k
          0.7071067811865476f,
179
380k
          0.6235485373547694f,
180
380k
          0.0000000000000000,
181
380k
          0.0000000000000000,
182
380k
          0.0000000000000000,
183
380k
          0.0000000000000000,
184
380k
          0.0000000000000000,
185
380k
          0.0000000000000000,
186
380k
          0.0000000000000000,
187
380k
          0.0000000000000000,
188
380k
          0.0000000000000000,
189
380k
          0.0000000000000000,
190
380k
      },
191
380k
      {
192
380k
          0.2500000000000000,
193
380k
          -0.1014005039375378f,
194
380k
          0.0000000000000000,
195
380k
          0.4706702258572536f,
196
380k
          0.0000000000000000,
197
380k
          -0.0643507165794628f,
198
380k
          -0.0403851516082220f,
199
380k
          0.0000000000000000,
200
380k
          0.1627234014286620f,
201
380k
          0.0000000000000000,
202
380k
          0.0000000000000000,
203
380k
          0.0000000000000000,
204
380k
          0.7367497537172237f,
205
380k
          0.0875511500058708f,
206
380k
          -0.2921026642334881f,
207
380k
          0.1940289303259434f,
208
380k
      },
209
380k
      {
210
380k
          0.2500000000000000,
211
380k
          -0.1014005039375377f,
212
380k
          0.1957439937204294f,
213
380k
          -0.1621205195722993f,
214
380k
          0.0000000000000000,
215
380k
          -0.0643507165794628f,
216
380k
          0.0074182263792424f,
217
380k
          -0.2904801297289980f,
218
380k
          0.0952002265347504f,
219
380k
          0.0000000000000000,
220
380k
          -0.3675398009862027f,
221
380k
          0.4921585901373873f,
222
380k
          0.2462710772207515f,
223
380k
          -0.0794670660590957f,
224
380k
          0.3623817333531167f,
225
380k
          -0.4351904965232280f,
226
380k
      },
227
380k
      {
228
380k
          0.2500000000000000,
229
380k
          -0.1014005039375376f,
230
380k
          0.2929100136981264f,
231
380k
          0.0000000000000000,
232
380k
          0.0000000000000000,
233
380k
          -0.0643507165794627f,
234
380k
          0.3935103426921017f,
235
380k
          -0.0657870154914280f,
236
380k
          0.0000000000000000,
237
380k
          -0.4082482904638628f,
238
380k
          -0.3078822139579090f,
239
380k
          -0.3852501370925192f,
240
380k
          -0.0857401903551931f,
241
380k
          -0.4613374887461511f,
242
380k
          0.0000000000000000,
243
380k
          0.2191868483885747f,
244
380k
      },
245
380k
      {
246
380k
          0.2500000000000000,
247
380k
          -0.1014005039375376f,
248
380k
          -0.4067007583026072f,
249
380k
          -0.2125574805828705f,
250
380k
          0.0000000000000000,
251
380k
          -0.0643507165794627f,
252
380k
          -0.4517556589999464f,
253
380k
          0.3046847507248840f,
254
380k
          0.3017929516615503f,
255
380k
          -0.4082482904638635f,
256
380k
          -0.1747866975480813f,
257
380k
          0.2110560104933581f,
258
380k
          -0.1426608480880734f,
259
380k
          -0.1381354035075829f,
260
380k
          -0.1743760259965108f,
261
380k
          0.1135498731499426f,
262
380k
      },
263
380k
      {
264
380k
          0.2500000000000000,
265
380k
          -0.1014005039375377f,
266
380k
          -0.1957439937204287f,
267
380k
          -0.1621205195722833f,
268
380k
          0.0000000000000000,
269
380k
          -0.0643507165794628f,
270
380k
          0.0074182263792444f,
271
380k
          0.2904801297290076f,
272
380k
          0.0952002265347505f,
273
380k
          0.0000000000000000,
274
380k
          0.3675398009862011f,
275
380k
          -0.4921585901373891f,
276
380k
          0.2462710772207514f,
277
380k
          -0.0794670660591026f,
278
380k
          0.3623817333531165f,
279
380k
          -0.4351904965232251f,
280
380k
      },
281
380k
      {
282
380k
          0.2500000000000000,
283
380k
          -0.1014005039375375f,
284
380k
          0.0000000000000000,
285
380k
          -0.4706702258572528f,
286
380k
          0.0000000000000000,
287
380k
          -0.0643507165794627f,
288
380k
          0.1107416575309343f,
289
380k
          0.0000000000000000,
290
380k
          -0.1627234014286617f,
291
380k
          0.0000000000000000,
292
380k
          0.0000000000000000,
293
380k
          0.0000000000000000,
294
380k
          0.1488339922711357f,
295
380k
          0.4972464710953509f,
296
380k
          0.2921026642334879f,
297
380k
          0.5550443808910661f,
298
380k
      },
299
380k
      {
300
380k
          0.2500000000000000,
301
380k
          -0.1014005039375377f,
302
380k
          0.1137907446044809f,
303
380k
          -0.1464291867126764f,
304
380k
          0.0000000000000000,
305
380k
          -0.0643507165794628f,
306
380k
          0.0829816309488205f,
307
380k
          -0.2388977352334460f,
308
380k
          -0.3531238544981630f,
309
380k
          -0.4082482904638630f,
310
380k
          0.4826689115059883f,
311
380k
          0.1741941265991622f,
312
380k
          -0.0476868035022925f,
313
380k
          0.1253805944856366f,
314
380k
          -0.4326608024727445f,
315
380k
          -0.2546827712406646f,
316
380k
      },
317
380k
      {
318
380k
          0.2500000000000000,
319
380k
          -0.1014005039375377f,
320
380k
          -0.4444481661973438f,
321
380k
          0.3085497062849487f,
322
380k
          0.0000000000000000,
323
380k
          -0.0643507165794628f,
324
380k
          0.1585450355183970f,
325
380k
          -0.5112616136592012f,
326
380k
          0.2579236279634129f,
327
380k
          0.0000000000000000,
328
380k
          -0.0812611176717504f,
329
380k
          -0.1856718091610990f,
330
380k
          -0.3416446842253373f,
331
380k
          0.3302282550303805f,
332
380k
          0.0702790691196282f,
333
380k
          -0.0741750459581023f,
334
380k
      },
335
380k
      {
336
380k
          0.2500000000000000,
337
380k
          -0.1014005039375376f,
338
380k
          -0.2929100136981264f,
339
380k
          0.0000000000000000,
340
380k
          0.0000000000000000,
341
380k
          -0.0643507165794627f,
342
380k
          0.3935103426921022f,
343
380k
          0.0657870154914254f,
344
380k
          0.0000000000000000,
345
380k
          0.4082482904638634f,
346
380k
          0.3078822139579031f,
347
380k
          0.3852501370925211f,
348
380k
          -0.0857401903551927f,
349
380k
          -0.4613374887461554f,
350
380k
          0.0000000000000000,
351
380k
          0.2191868483885728f,
352
380k
      },
353
380k
      {
354
380k
          0.2500000000000000,
355
380k
          -0.1014005039375376f,
356
380k
          -0.1137907446044814f,
357
380k
          -0.1464291867126654f,
358
380k
          0.0000000000000000,
359
380k
          -0.0643507165794627f,
360
380k
          0.0829816309488214f,
361
380k
          0.2388977352334547f,
362
380k
          -0.3531238544981624f,
363
380k
          0.4082482904638630f,
364
380k
          -0.4826689115059858f,
365
380k
          -0.1741941265991621f,
366
380k
          -0.0476868035022928f,
367
380k
          0.1253805944856431f,
368
380k
          -0.4326608024727457f,
369
380k
          -0.2546827712406641f,
370
380k
      },
371
380k
      {
372
380k
          0.2500000000000000,
373
380k
          -0.1014005039375374f,
374
380k
          0.0000000000000000,
375
380k
          0.4251149611657548f,
376
380k
          0.0000000000000000,
377
380k
          -0.0643507165794626f,
378
380k
          -0.4517556589999480f,
379
380k
          0.0000000000000000,
380
380k
          -0.6035859033230976f,
381
380k
          0.0000000000000000,
382
380k
          0.0000000000000000,
383
380k
          0.0000000000000000,
384
380k
          -0.1426608480880724f,
385
380k
          -0.1381354035075845f,
386
380k
          0.3487520519930227f,
387
380k
          0.1135498731499429f,
388
380k
      },
389
380k
  };
390
391
380k
  const HWY_CAPPED(float, 16) d;
392
1.14M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
760k
    auto scalar = Zero(d);
394
12.9M
    for (size_t j = 0; j < 16; j++) {
395
12.1M
      auto px = Set(d, pixels[j]);
396
12.1M
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
12.1M
      scalar = MulAdd(px, basis, scalar);
398
12.1M
    }
399
760k
    Store(scalar, d, coeffs + i);
400
760k
  }
401
380k
}
Unexecuted instantiation: enc_chroma_from_luma.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
70.2M
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
70.2M
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
70.2M
      {
102
70.2M
          0.2500000000000000,
103
70.2M
          0.8769029297991420f,
104
70.2M
          0.0000000000000000,
105
70.2M
          0.0000000000000000,
106
70.2M
          0.0000000000000000,
107
70.2M
          -0.4105377591765233f,
108
70.2M
          0.0000000000000000,
109
70.2M
          0.0000000000000000,
110
70.2M
          0.0000000000000000,
111
70.2M
          0.0000000000000000,
112
70.2M
          0.0000000000000000,
113
70.2M
          0.0000000000000000,
114
70.2M
          0.0000000000000000,
115
70.2M
          0.0000000000000000,
116
70.2M
          0.0000000000000000,
117
70.2M
          0.0000000000000000,
118
70.2M
      },
119
70.2M
      {
120
70.2M
          0.2500000000000000,
121
70.2M
          0.2206518106944235f,
122
70.2M
          0.0000000000000000,
123
70.2M
          0.0000000000000000,
124
70.2M
          -0.7071067811865474f,
125
70.2M
          0.6235485373547691f,
126
70.2M
          0.0000000000000000,
127
70.2M
          0.0000000000000000,
128
70.2M
          0.0000000000000000,
129
70.2M
          0.0000000000000000,
130
70.2M
          0.0000000000000000,
131
70.2M
          0.0000000000000000,
132
70.2M
          0.0000000000000000,
133
70.2M
          0.0000000000000000,
134
70.2M
          0.0000000000000000,
135
70.2M
          0.0000000000000000,
136
70.2M
      },
137
70.2M
      {
138
70.2M
          0.2500000000000000,
139
70.2M
          -0.1014005039375376f,
140
70.2M
          0.4067007583026075f,
141
70.2M
          -0.2125574805828875f,
142
70.2M
          0.0000000000000000,
143
70.2M
          -0.0643507165794627f,
144
70.2M
          -0.4517556589999482f,
145
70.2M
          -0.3046847507248690f,
146
70.2M
          0.3017929516615495f,
147
70.2M
          0.4082482904638627f,
148
70.2M
          0.1747866975480809f,
149
70.2M
          -0.2110560104933578f,
150
70.2M
          -0.1426608480880726f,
151
70.2M
          -0.1381354035075859f,
152
70.2M
          -0.1743760259965107f,
153
70.2M
          0.1135498731499434f,
154
70.2M
      },
155
70.2M
      {
156
70.2M
          0.2500000000000000,
157
70.2M
          -0.1014005039375375f,
158
70.2M
          0.4444481661973445f,
159
70.2M
          0.3085497062849767f,
160
70.2M
          0.0000000000000000f,
161
70.2M
          -0.0643507165794627f,
162
70.2M
          0.1585450355184006f,
163
70.2M
          0.5112616136591823f,
164
70.2M
          0.2579236279634118f,
165
70.2M
          0.0000000000000000,
166
70.2M
          0.0812611176717539f,
167
70.2M
          0.1856718091610980f,
168
70.2M
          -0.3416446842253372f,
169
70.2M
          0.3302282550303788f,
170
70.2M
          0.0702790691196284f,
171
70.2M
          -0.0741750459581035f,
172
70.2M
      },
173
70.2M
      {
174
70.2M
          0.2500000000000000,
175
70.2M
          0.2206518106944236f,
176
70.2M
          0.0000000000000000,
177
70.2M
          0.0000000000000000,
178
70.2M
          0.7071067811865476f,
179
70.2M
          0.6235485373547694f,
180
70.2M
          0.0000000000000000,
181
70.2M
          0.0000000000000000,
182
70.2M
          0.0000000000000000,
183
70.2M
          0.0000000000000000,
184
70.2M
          0.0000000000000000,
185
70.2M
          0.0000000000000000,
186
70.2M
          0.0000000000000000,
187
70.2M
          0.0000000000000000,
188
70.2M
          0.0000000000000000,
189
70.2M
          0.0000000000000000,
190
70.2M
      },
191
70.2M
      {
192
70.2M
          0.2500000000000000,
193
70.2M
          -0.1014005039375378f,
194
70.2M
          0.0000000000000000,
195
70.2M
          0.4706702258572536f,
196
70.2M
          0.0000000000000000,
197
70.2M
          -0.0643507165794628f,
198
70.2M
          -0.0403851516082220f,
199
70.2M
          0.0000000000000000,
200
70.2M
          0.1627234014286620f,
201
70.2M
          0.0000000000000000,
202
70.2M
          0.0000000000000000,
203
70.2M
          0.0000000000000000,
204
70.2M
          0.7367497537172237f,
205
70.2M
          0.0875511500058708f,
206
70.2M
          -0.2921026642334881f,
207
70.2M
          0.1940289303259434f,
208
70.2M
      },
209
70.2M
      {
210
70.2M
          0.2500000000000000,
211
70.2M
          -0.1014005039375377f,
212
70.2M
          0.1957439937204294f,
213
70.2M
          -0.1621205195722993f,
214
70.2M
          0.0000000000000000,
215
70.2M
          -0.0643507165794628f,
216
70.2M
          0.0074182263792424f,
217
70.2M
          -0.2904801297289980f,
218
70.2M
          0.0952002265347504f,
219
70.2M
          0.0000000000000000,
220
70.2M
          -0.3675398009862027f,
221
70.2M
          0.4921585901373873f,
222
70.2M
          0.2462710772207515f,
223
70.2M
          -0.0794670660590957f,
224
70.2M
          0.3623817333531167f,
225
70.2M
          -0.4351904965232280f,
226
70.2M
      },
227
70.2M
      {
228
70.2M
          0.2500000000000000,
229
70.2M
          -0.1014005039375376f,
230
70.2M
          0.2929100136981264f,
231
70.2M
          0.0000000000000000,
232
70.2M
          0.0000000000000000,
233
70.2M
          -0.0643507165794627f,
234
70.2M
          0.3935103426921017f,
235
70.2M
          -0.0657870154914280f,
236
70.2M
          0.0000000000000000,
237
70.2M
          -0.4082482904638628f,
238
70.2M
          -0.3078822139579090f,
239
70.2M
          -0.3852501370925192f,
240
70.2M
          -0.0857401903551931f,
241
70.2M
          -0.4613374887461511f,
242
70.2M
          0.0000000000000000,
243
70.2M
          0.2191868483885747f,
244
70.2M
      },
245
70.2M
      {
246
70.2M
          0.2500000000000000,
247
70.2M
          -0.1014005039375376f,
248
70.2M
          -0.4067007583026072f,
249
70.2M
          -0.2125574805828705f,
250
70.2M
          0.0000000000000000,
251
70.2M
          -0.0643507165794627f,
252
70.2M
          -0.4517556589999464f,
253
70.2M
          0.3046847507248840f,
254
70.2M
          0.3017929516615503f,
255
70.2M
          -0.4082482904638635f,
256
70.2M
          -0.1747866975480813f,
257
70.2M
          0.2110560104933581f,
258
70.2M
          -0.1426608480880734f,
259
70.2M
          -0.1381354035075829f,
260
70.2M
          -0.1743760259965108f,
261
70.2M
          0.1135498731499426f,
262
70.2M
      },
263
70.2M
      {
264
70.2M
          0.2500000000000000,
265
70.2M
          -0.1014005039375377f,
266
70.2M
          -0.1957439937204287f,
267
70.2M
          -0.1621205195722833f,
268
70.2M
          0.0000000000000000,
269
70.2M
          -0.0643507165794628f,
270
70.2M
          0.0074182263792444f,
271
70.2M
          0.2904801297290076f,
272
70.2M
          0.0952002265347505f,
273
70.2M
          0.0000000000000000,
274
70.2M
          0.3675398009862011f,
275
70.2M
          -0.4921585901373891f,
276
70.2M
          0.2462710772207514f,
277
70.2M
          -0.0794670660591026f,
278
70.2M
          0.3623817333531165f,
279
70.2M
          -0.4351904965232251f,
280
70.2M
      },
281
70.2M
      {
282
70.2M
          0.2500000000000000,
283
70.2M
          -0.1014005039375375f,
284
70.2M
          0.0000000000000000,
285
70.2M
          -0.4706702258572528f,
286
70.2M
          0.0000000000000000,
287
70.2M
          -0.0643507165794627f,
288
70.2M
          0.1107416575309343f,
289
70.2M
          0.0000000000000000,
290
70.2M
          -0.1627234014286617f,
291
70.2M
          0.0000000000000000,
292
70.2M
          0.0000000000000000,
293
70.2M
          0.0000000000000000,
294
70.2M
          0.1488339922711357f,
295
70.2M
          0.4972464710953509f,
296
70.2M
          0.2921026642334879f,
297
70.2M
          0.5550443808910661f,
298
70.2M
      },
299
70.2M
      {
300
70.2M
          0.2500000000000000,
301
70.2M
          -0.1014005039375377f,
302
70.2M
          0.1137907446044809f,
303
70.2M
          -0.1464291867126764f,
304
70.2M
          0.0000000000000000,
305
70.2M
          -0.0643507165794628f,
306
70.2M
          0.0829816309488205f,
307
70.2M
          -0.2388977352334460f,
308
70.2M
          -0.3531238544981630f,
309
70.2M
          -0.4082482904638630f,
310
70.2M
          0.4826689115059883f,
311
70.2M
          0.1741941265991622f,
312
70.2M
          -0.0476868035022925f,
313
70.2M
          0.1253805944856366f,
314
70.2M
          -0.4326608024727445f,
315
70.2M
          -0.2546827712406646f,
316
70.2M
      },
317
70.2M
      {
318
70.2M
          0.2500000000000000,
319
70.2M
          -0.1014005039375377f,
320
70.2M
          -0.4444481661973438f,
321
70.2M
          0.3085497062849487f,
322
70.2M
          0.0000000000000000,
323
70.2M
          -0.0643507165794628f,
324
70.2M
          0.1585450355183970f,
325
70.2M
          -0.5112616136592012f,
326
70.2M
          0.2579236279634129f,
327
70.2M
          0.0000000000000000,
328
70.2M
          -0.0812611176717504f,
329
70.2M
          -0.1856718091610990f,
330
70.2M
          -0.3416446842253373f,
331
70.2M
          0.3302282550303805f,
332
70.2M
          0.0702790691196282f,
333
70.2M
          -0.0741750459581023f,
334
70.2M
      },
335
70.2M
      {
336
70.2M
          0.2500000000000000,
337
70.2M
          -0.1014005039375376f,
338
70.2M
          -0.2929100136981264f,
339
70.2M
          0.0000000000000000,
340
70.2M
          0.0000000000000000,
341
70.2M
          -0.0643507165794627f,
342
70.2M
          0.3935103426921022f,
343
70.2M
          0.0657870154914254f,
344
70.2M
          0.0000000000000000,
345
70.2M
          0.4082482904638634f,
346
70.2M
          0.3078822139579031f,
347
70.2M
          0.3852501370925211f,
348
70.2M
          -0.0857401903551927f,
349
70.2M
          -0.4613374887461554f,
350
70.2M
          0.0000000000000000,
351
70.2M
          0.2191868483885728f,
352
70.2M
      },
353
70.2M
      {
354
70.2M
          0.2500000000000000,
355
70.2M
          -0.1014005039375376f,
356
70.2M
          -0.1137907446044814f,
357
70.2M
          -0.1464291867126654f,
358
70.2M
          0.0000000000000000,
359
70.2M
          -0.0643507165794627f,
360
70.2M
          0.0829816309488214f,
361
70.2M
          0.2388977352334547f,
362
70.2M
          -0.3531238544981624f,
363
70.2M
          0.4082482904638630f,
364
70.2M
          -0.4826689115059858f,
365
70.2M
          -0.1741941265991621f,
366
70.2M
          -0.0476868035022928f,
367
70.2M
          0.1253805944856431f,
368
70.2M
          -0.4326608024727457f,
369
70.2M
          -0.2546827712406641f,
370
70.2M
      },
371
70.2M
      {
372
70.2M
          0.2500000000000000,
373
70.2M
          -0.1014005039375374f,
374
70.2M
          0.0000000000000000,
375
70.2M
          0.4251149611657548f,
376
70.2M
          0.0000000000000000,
377
70.2M
          -0.0643507165794626f,
378
70.2M
          -0.4517556589999480f,
379
70.2M
          0.0000000000000000,
380
70.2M
          -0.6035859033230976f,
381
70.2M
          0.0000000000000000,
382
70.2M
          0.0000000000000000,
383
70.2M
          0.0000000000000000,
384
70.2M
          -0.1426608480880724f,
385
70.2M
          -0.1381354035075845f,
386
70.2M
          0.3487520519930227f,
387
70.2M
          0.1135498731499429f,
388
70.2M
      },
389
70.2M
  };
390
391
70.2M
  const HWY_CAPPED(float, 16) d;
392
210M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
140M
    auto scalar = Zero(d);
394
2.38G
    for (size_t j = 0; j < 16; j++) {
395
2.24G
      auto px = Set(d, pixels[j]);
396
2.24G
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
2.24G
      scalar = MulAdd(px, basis, scalar);
398
2.24G
    }
399
140M
    Store(scalar, d, coeffs + i);
400
140M
  }
401
70.2M
}
Unexecuted instantiation: enc_ac_strategy.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
71.0M
                            float* JXL_RESTRICT coefficients) {
411
71.0M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
71.0M
  size_t afv_x = afv_kind & 1;
413
71.0M
  size_t afv_y = afv_kind / 2;
414
71.0M
  HWY_ALIGN float block[4 * 8] = {};
415
355M
  for (size_t iy = 0; iy < 4; iy++) {
416
1.42G
    for (size_t ix = 0; ix < 4; ix++) {
417
1.13G
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.13G
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.13G
    }
420
284M
  }
421
  // AFV coefficients in (even, even) positions.
422
71.0M
  HWY_ALIGN float coeff[4 * 4];
423
71.0M
  AFVDCT4x4(block, coeff);
424
355M
  for (size_t iy = 0; iy < 4; iy++) {
425
1.42G
    for (size_t ix = 0; ix < 4; ix++) {
426
1.13G
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.13G
    }
428
284M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
71.0M
  ComputeScaledDCT<4, 4>()(
431
71.0M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
71.0M
              pixels_stride),
433
71.0M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
355M
  for (size_t iy = 0; iy < 4; iy++) {
436
2.55G
    for (size_t ix = 0; ix < 8; ix++) {
437
2.27G
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.27G
    }
439
284M
  }
440
  // 4x8 DCT of the other half of the block.
441
71.0M
  ComputeScaledDCT<4, 8>()(
442
71.0M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
71.0M
      block, scratch_space);
444
355M
  for (size_t iy = 0; iy < 4; iy++) {
445
2.55G
    for (size_t ix = 0; ix < 8; ix++) {
446
2.27G
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.27G
    }
448
284M
  }
449
71.0M
  float block00 = coefficients[0] * 0.25f;
450
71.0M
  float block01 = coefficients[1];
451
71.0M
  float block10 = coefficients[8];
452
71.0M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
71.0M
  coefficients[1] = (block00 - block01) * 0.5f;
454
71.0M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
71.0M
}
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_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*)
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Line
Count
Source
410
118k
                            float* JXL_RESTRICT coefficients) {
411
118k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
118k
  size_t afv_x = afv_kind & 1;
413
118k
  size_t afv_y = afv_kind / 2;
414
118k
  HWY_ALIGN float block[4 * 8] = {};
415
594k
  for (size_t iy = 0; iy < 4; iy++) {
416
2.37M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.90M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.90M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.90M
    }
420
475k
  }
421
  // AFV coefficients in (even, even) positions.
422
118k
  HWY_ALIGN float coeff[4 * 4];
423
118k
  AFVDCT4x4(block, coeff);
424
594k
  for (size_t iy = 0; iy < 4; iy++) {
425
2.37M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.90M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.90M
    }
428
475k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
118k
  ComputeScaledDCT<4, 4>()(
431
118k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
118k
              pixels_stride),
433
118k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
594k
  for (size_t iy = 0; iy < 4; iy++) {
436
4.28M
    for (size_t ix = 0; ix < 8; ix++) {
437
3.80M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
3.80M
    }
439
475k
  }
440
  // 4x8 DCT of the other half of the block.
441
118k
  ComputeScaledDCT<4, 8>()(
442
118k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
118k
      block, scratch_space);
444
594k
  for (size_t iy = 0; iy < 4; iy++) {
445
4.28M
    for (size_t ix = 0; ix < 8; ix++) {
446
3.80M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
3.80M
    }
448
475k
  }
449
118k
  float block00 = coefficients[0] * 0.25f;
450
118k
  float block01 = coefficients[1];
451
118k
  float block10 = coefficients[8];
452
118k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
118k
  coefficients[1] = (block00 - block01) * 0.5f;
454
118k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
118k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Line
Count
Source
410
73.6k
                            float* JXL_RESTRICT coefficients) {
411
73.6k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
73.6k
  size_t afv_x = afv_kind & 1;
413
73.6k
  size_t afv_y = afv_kind / 2;
414
73.6k
  HWY_ALIGN float block[4 * 8] = {};
415
368k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.47M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.17M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.17M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.17M
    }
420
294k
  }
421
  // AFV coefficients in (even, even) positions.
422
73.6k
  HWY_ALIGN float coeff[4 * 4];
423
73.6k
  AFVDCT4x4(block, coeff);
424
368k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.47M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.17M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.17M
    }
428
294k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
73.6k
  ComputeScaledDCT<4, 4>()(
431
73.6k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
73.6k
              pixels_stride),
433
73.6k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
368k
  for (size_t iy = 0; iy < 4; iy++) {
436
2.65M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.35M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.35M
    }
439
294k
  }
440
  // 4x8 DCT of the other half of the block.
441
73.6k
  ComputeScaledDCT<4, 8>()(
442
73.6k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
73.6k
      block, scratch_space);
444
368k
  for (size_t iy = 0; iy < 4; iy++) {
445
2.65M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.35M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.35M
    }
448
294k
  }
449
73.6k
  float block00 = coefficients[0] * 0.25f;
450
73.6k
  float block01 = coefficients[1];
451
73.6k
  float block10 = coefficients[8];
452
73.6k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
73.6k
  coefficients[1] = (block00 - block01) * 0.5f;
454
73.6k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
73.6k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Line
Count
Source
410
89.3k
                            float* JXL_RESTRICT coefficients) {
411
89.3k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
89.3k
  size_t afv_x = afv_kind & 1;
413
89.3k
  size_t afv_y = afv_kind / 2;
414
89.3k
  HWY_ALIGN float block[4 * 8] = {};
415
446k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.78M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.42M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.42M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.42M
    }
420
357k
  }
421
  // AFV coefficients in (even, even) positions.
422
89.3k
  HWY_ALIGN float coeff[4 * 4];
423
89.3k
  AFVDCT4x4(block, coeff);
424
446k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.78M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.42M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.42M
    }
428
357k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
89.3k
  ComputeScaledDCT<4, 4>()(
431
89.3k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
89.3k
              pixels_stride),
433
89.3k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
446k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.21M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.85M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.85M
    }
439
357k
  }
440
  // 4x8 DCT of the other half of the block.
441
89.3k
  ComputeScaledDCT<4, 8>()(
442
89.3k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
89.3k
      block, scratch_space);
444
446k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.21M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.85M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.85M
    }
448
357k
  }
449
89.3k
  float block00 = coefficients[0] * 0.25f;
450
89.3k
  float block01 = coefficients[1];
451
89.3k
  float block10 = coefficients[8];
452
89.3k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
89.3k
  coefficients[1] = (block00 - block01) * 0.5f;
454
89.3k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
89.3k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Line
Count
Source
410
98.5k
                            float* JXL_RESTRICT coefficients) {
411
98.5k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
98.5k
  size_t afv_x = afv_kind & 1;
413
98.5k
  size_t afv_y = afv_kind / 2;
414
98.5k
  HWY_ALIGN float block[4 * 8] = {};
415
492k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.97M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.57M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.57M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.57M
    }
420
394k
  }
421
  // AFV coefficients in (even, even) positions.
422
98.5k
  HWY_ALIGN float coeff[4 * 4];
423
98.5k
  AFVDCT4x4(block, coeff);
424
492k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.97M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.57M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.57M
    }
428
394k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
98.5k
  ComputeScaledDCT<4, 4>()(
431
98.5k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
98.5k
              pixels_stride),
433
98.5k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
492k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.54M
    for (size_t ix = 0; ix < 8; ix++) {
437
3.15M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
3.15M
    }
439
394k
  }
440
  // 4x8 DCT of the other half of the block.
441
98.5k
  ComputeScaledDCT<4, 8>()(
442
98.5k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
98.5k
      block, scratch_space);
444
492k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.54M
    for (size_t ix = 0; ix < 8; ix++) {
446
3.15M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
3.15M
    }
448
394k
  }
449
98.5k
  float block00 = coefficients[0] * 0.25f;
450
98.5k
  float block01 = coefficients[1];
451
98.5k
  float block10 = coefficients[8];
452
98.5k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
98.5k
  coefficients[1] = (block00 - block01) * 0.5f;
454
98.5k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
98.5k
}
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_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*)
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<0ul>(float const*, unsigned long, float*)
Line
Count
Source
410
118k
                            float* JXL_RESTRICT coefficients) {
411
118k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
118k
  size_t afv_x = afv_kind & 1;
413
118k
  size_t afv_y = afv_kind / 2;
414
118k
  HWY_ALIGN float block[4 * 8] = {};
415
594k
  for (size_t iy = 0; iy < 4; iy++) {
416
2.37M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.90M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.90M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.90M
    }
420
475k
  }
421
  // AFV coefficients in (even, even) positions.
422
118k
  HWY_ALIGN float coeff[4 * 4];
423
118k
  AFVDCT4x4(block, coeff);
424
594k
  for (size_t iy = 0; iy < 4; iy++) {
425
2.37M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.90M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.90M
    }
428
475k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
118k
  ComputeScaledDCT<4, 4>()(
431
118k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
118k
              pixels_stride),
433
118k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
594k
  for (size_t iy = 0; iy < 4; iy++) {
436
4.28M
    for (size_t ix = 0; ix < 8; ix++) {
437
3.80M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
3.80M
    }
439
475k
  }
440
  // 4x8 DCT of the other half of the block.
441
118k
  ComputeScaledDCT<4, 8>()(
442
118k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
118k
      block, scratch_space);
444
594k
  for (size_t iy = 0; iy < 4; iy++) {
445
4.28M
    for (size_t ix = 0; ix < 8; ix++) {
446
3.80M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
3.80M
    }
448
475k
  }
449
118k
  float block00 = coefficients[0] * 0.25f;
450
118k
  float block01 = coefficients[1];
451
118k
  float block10 = coefficients[8];
452
118k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
118k
  coefficients[1] = (block00 - block01) * 0.5f;
454
118k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
118k
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Line
Count
Source
410
73.6k
                            float* JXL_RESTRICT coefficients) {
411
73.6k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
73.6k
  size_t afv_x = afv_kind & 1;
413
73.6k
  size_t afv_y = afv_kind / 2;
414
73.6k
  HWY_ALIGN float block[4 * 8] = {};
415
368k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.47M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.17M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.17M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.17M
    }
420
294k
  }
421
  // AFV coefficients in (even, even) positions.
422
73.6k
  HWY_ALIGN float coeff[4 * 4];
423
73.6k
  AFVDCT4x4(block, coeff);
424
368k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.47M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.17M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.17M
    }
428
294k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
73.6k
  ComputeScaledDCT<4, 4>()(
431
73.6k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
73.6k
              pixels_stride),
433
73.6k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
368k
  for (size_t iy = 0; iy < 4; iy++) {
436
2.65M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.35M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.35M
    }
439
294k
  }
440
  // 4x8 DCT of the other half of the block.
441
73.6k
  ComputeScaledDCT<4, 8>()(
442
73.6k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
73.6k
      block, scratch_space);
444
368k
  for (size_t iy = 0; iy < 4; iy++) {
445
2.65M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.35M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.35M
    }
448
294k
  }
449
73.6k
  float block00 = coefficients[0] * 0.25f;
450
73.6k
  float block01 = coefficients[1];
451
73.6k
  float block10 = coefficients[8];
452
73.6k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
73.6k
  coefficients[1] = (block00 - block01) * 0.5f;
454
73.6k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
73.6k
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Line
Count
Source
410
89.3k
                            float* JXL_RESTRICT coefficients) {
411
89.3k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
89.3k
  size_t afv_x = afv_kind & 1;
413
89.3k
  size_t afv_y = afv_kind / 2;
414
89.3k
  HWY_ALIGN float block[4 * 8] = {};
415
446k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.78M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.42M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.42M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.42M
    }
420
357k
  }
421
  // AFV coefficients in (even, even) positions.
422
89.3k
  HWY_ALIGN float coeff[4 * 4];
423
89.3k
  AFVDCT4x4(block, coeff);
424
446k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.78M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.42M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.42M
    }
428
357k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
89.3k
  ComputeScaledDCT<4, 4>()(
431
89.3k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
89.3k
              pixels_stride),
433
89.3k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
446k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.21M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.85M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.85M
    }
439
357k
  }
440
  // 4x8 DCT of the other half of the block.
441
89.3k
  ComputeScaledDCT<4, 8>()(
442
89.3k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
89.3k
      block, scratch_space);
444
446k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.21M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.85M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.85M
    }
448
357k
  }
449
89.3k
  float block00 = coefficients[0] * 0.25f;
450
89.3k
  float block01 = coefficients[1];
451
89.3k
  float block10 = coefficients[8];
452
89.3k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
89.3k
  coefficients[1] = (block00 - block01) * 0.5f;
454
89.3k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
89.3k
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Line
Count
Source
410
98.5k
                            float* JXL_RESTRICT coefficients) {
411
98.5k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
98.5k
  size_t afv_x = afv_kind & 1;
413
98.5k
  size_t afv_y = afv_kind / 2;
414
98.5k
  HWY_ALIGN float block[4 * 8] = {};
415
492k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.97M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.57M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.57M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.57M
    }
420
394k
  }
421
  // AFV coefficients in (even, even) positions.
422
98.5k
  HWY_ALIGN float coeff[4 * 4];
423
98.5k
  AFVDCT4x4(block, coeff);
424
492k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.97M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.57M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.57M
    }
428
394k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
98.5k
  ComputeScaledDCT<4, 4>()(
431
98.5k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
98.5k
              pixels_stride),
433
98.5k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
492k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.54M
    for (size_t ix = 0; ix < 8; ix++) {
437
3.15M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
3.15M
    }
439
394k
  }
440
  // 4x8 DCT of the other half of the block.
441
98.5k
  ComputeScaledDCT<4, 8>()(
442
98.5k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
98.5k
      block, scratch_space);
444
492k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.54M
    for (size_t ix = 0; ix < 8; ix++) {
446
3.15M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
3.15M
    }
448
394k
  }
449
98.5k
  float block00 = coefficients[0] * 0.25f;
450
98.5k
  float block01 = coefficients[1];
451
98.5k
  float block10 = coefficients[8];
452
98.5k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
98.5k
  coefficients[1] = (block00 - block01) * 0.5f;
454
98.5k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
98.5k
}
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*)
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
17.5M
                            float* JXL_RESTRICT coefficients) {
411
17.5M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
17.5M
  size_t afv_x = afv_kind & 1;
413
17.5M
  size_t afv_y = afv_kind / 2;
414
17.5M
  HWY_ALIGN float block[4 * 8] = {};
415
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
416
351M
    for (size_t ix = 0; ix < 4; ix++) {
417
281M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
281M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
281M
    }
420
70.2M
  }
421
  // AFV coefficients in (even, even) positions.
422
17.5M
  HWY_ALIGN float coeff[4 * 4];
423
17.5M
  AFVDCT4x4(block, coeff);
424
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
425
351M
    for (size_t ix = 0; ix < 4; ix++) {
426
281M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
281M
    }
428
70.2M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
17.5M
  ComputeScaledDCT<4, 4>()(
431
17.5M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
17.5M
              pixels_stride),
433
17.5M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
436
632M
    for (size_t ix = 0; ix < 8; ix++) {
437
562M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
562M
    }
439
70.2M
  }
440
  // 4x8 DCT of the other half of the block.
441
17.5M
  ComputeScaledDCT<4, 8>()(
442
17.5M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
17.5M
      block, scratch_space);
444
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
445
632M
    for (size_t ix = 0; ix < 8; ix++) {
446
562M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
562M
    }
448
70.2M
  }
449
17.5M
  float block00 = coefficients[0] * 0.25f;
450
17.5M
  float block01 = coefficients[1];
451
17.5M
  float block10 = coefficients[8];
452
17.5M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
17.5M
  coefficients[1] = (block00 - block01) * 0.5f;
454
17.5M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
17.5M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Line
Count
Source
410
17.5M
                            float* JXL_RESTRICT coefficients) {
411
17.5M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
17.5M
  size_t afv_x = afv_kind & 1;
413
17.5M
  size_t afv_y = afv_kind / 2;
414
17.5M
  HWY_ALIGN float block[4 * 8] = {};
415
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
416
351M
    for (size_t ix = 0; ix < 4; ix++) {
417
281M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
281M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
281M
    }
420
70.2M
  }
421
  // AFV coefficients in (even, even) positions.
422
17.5M
  HWY_ALIGN float coeff[4 * 4];
423
17.5M
  AFVDCT4x4(block, coeff);
424
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
425
351M
    for (size_t ix = 0; ix < 4; ix++) {
426
281M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
281M
    }
428
70.2M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
17.5M
  ComputeScaledDCT<4, 4>()(
431
17.5M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
17.5M
              pixels_stride),
433
17.5M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
436
632M
    for (size_t ix = 0; ix < 8; ix++) {
437
562M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
562M
    }
439
70.2M
  }
440
  // 4x8 DCT of the other half of the block.
441
17.5M
  ComputeScaledDCT<4, 8>()(
442
17.5M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
17.5M
      block, scratch_space);
444
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
445
632M
    for (size_t ix = 0; ix < 8; ix++) {
446
562M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
562M
    }
448
70.2M
  }
449
17.5M
  float block00 = coefficients[0] * 0.25f;
450
17.5M
  float block01 = coefficients[1];
451
17.5M
  float block10 = coefficients[8];
452
17.5M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
17.5M
  coefficients[1] = (block00 - block01) * 0.5f;
454
17.5M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
17.5M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Line
Count
Source
410
17.5M
                            float* JXL_RESTRICT coefficients) {
411
17.5M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
17.5M
  size_t afv_x = afv_kind & 1;
413
17.5M
  size_t afv_y = afv_kind / 2;
414
17.5M
  HWY_ALIGN float block[4 * 8] = {};
415
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
416
351M
    for (size_t ix = 0; ix < 4; ix++) {
417
281M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
281M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
281M
    }
420
70.2M
  }
421
  // AFV coefficients in (even, even) positions.
422
17.5M
  HWY_ALIGN float coeff[4 * 4];
423
17.5M
  AFVDCT4x4(block, coeff);
424
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
425
351M
    for (size_t ix = 0; ix < 4; ix++) {
426
281M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
281M
    }
428
70.2M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
17.5M
  ComputeScaledDCT<4, 4>()(
431
17.5M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
17.5M
              pixels_stride),
433
17.5M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
436
632M
    for (size_t ix = 0; ix < 8; ix++) {
437
562M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
562M
    }
439
70.2M
  }
440
  // 4x8 DCT of the other half of the block.
441
17.5M
  ComputeScaledDCT<4, 8>()(
442
17.5M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
17.5M
      block, scratch_space);
444
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
445
632M
    for (size_t ix = 0; ix < 8; ix++) {
446
562M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
562M
    }
448
70.2M
  }
449
17.5M
  float block00 = coefficients[0] * 0.25f;
450
17.5M
  float block01 = coefficients[1];
451
17.5M
  float block10 = coefficients[8];
452
17.5M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
17.5M
  coefficients[1] = (block00 - block01) * 0.5f;
454
17.5M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
17.5M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Line
Count
Source
410
17.5M
                            float* JXL_RESTRICT coefficients) {
411
17.5M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
17.5M
  size_t afv_x = afv_kind & 1;
413
17.5M
  size_t afv_y = afv_kind / 2;
414
17.5M
  HWY_ALIGN float block[4 * 8] = {};
415
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
416
351M
    for (size_t ix = 0; ix < 4; ix++) {
417
281M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
281M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
281M
    }
420
70.2M
  }
421
  // AFV coefficients in (even, even) positions.
422
17.5M
  HWY_ALIGN float coeff[4 * 4];
423
17.5M
  AFVDCT4x4(block, coeff);
424
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
425
351M
    for (size_t ix = 0; ix < 4; ix++) {
426
281M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
281M
    }
428
70.2M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
17.5M
  ComputeScaledDCT<4, 4>()(
431
17.5M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
17.5M
              pixels_stride),
433
17.5M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
436
632M
    for (size_t ix = 0; ix < 8; ix++) {
437
562M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
562M
    }
439
70.2M
  }
440
  // 4x8 DCT of the other half of the block.
441
17.5M
  ComputeScaledDCT<4, 8>()(
442
17.5M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
17.5M
      block, scratch_space);
444
87.8M
  for (size_t iy = 0; iy < 4; iy++) {
445
632M
    for (size_t ix = 0; ix < 8; ix++) {
446
562M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
562M
    }
448
70.2M
  }
449
17.5M
  float block00 = coefficients[0] * 0.25f;
450
17.5M
  float block01 = coefficients[1];
451
17.5M
  float block10 = coefficients[8];
452
17.5M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
17.5M
  coefficients[1] = (block00 - block01) * 0.5f;
454
17.5M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
17.5M
}
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*)
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
251M
                                          float* JXL_RESTRICT scratch_space) {
462
251M
  using Type = AcStrategyType;
463
251M
  switch (strategy) {
464
19.2M
    case Type::IDENTITY: {
465
57.7M
      for (size_t y = 0; y < 2; y++) {
466
115M
        for (size_t x = 0; x < 2; x++) {
467
77.0M
          float block_dc = 0;
468
385M
          for (size_t iy = 0; iy < 4; iy++) {
469
1.54G
            for (size_t ix = 0; ix < 4; ix++) {
470
1.23G
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
1.23G
            }
472
308M
          }
473
77.0M
          block_dc *= 1.0f / 16;
474
385M
          for (size_t iy = 0; iy < 4; iy++) {
475
1.54G
            for (size_t ix = 0; ix < 4; ix++) {
476
1.23G
              if (ix == 1 && iy == 1) continue;
477
1.15G
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
1.15G
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
1.15G
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
1.15G
            }
481
308M
          }
482
77.0M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
77.0M
          coefficients[y * 8 + x] = block_dc;
484
77.0M
        }
485
38.5M
      }
486
19.2M
      float block00 = coefficients[0];
487
19.2M
      float block01 = coefficients[1];
488
19.2M
      float block10 = coefficients[8];
489
19.2M
      float block11 = coefficients[9];
490
19.2M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
19.2M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
19.2M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
19.2M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
19.2M
      break;
495
0
    }
496
17.9M
    case Type::DCT8X4: {
497
53.8M
      for (size_t x = 0; x < 2; x++) {
498
35.9M
        HWY_ALIGN float block[4 * 8];
499
35.9M
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
35.9M
                                 scratch_space);
501
179M
        for (size_t iy = 0; iy < 4; iy++) {
502
1.29G
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
1.14G
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
1.14G
          }
506
143M
        }
507
35.9M
      }
508
17.9M
      float block0 = coefficients[0];
509
17.9M
      float block1 = coefficients[8];
510
17.9M
      coefficients[0] = (block0 + block1) * 0.5f;
511
17.9M
      coefficients[8] = (block0 - block1) * 0.5f;
512
17.9M
      break;
513
0
    }
514
17.7M
    case Type::DCT4X8: {
515
53.2M
      for (size_t y = 0; y < 2; y++) {
516
35.4M
        HWY_ALIGN float block[4 * 8];
517
35.4M
        ComputeScaledDCT<4, 8>()(
518
35.4M
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
35.4M
            scratch_space);
520
177M
        for (size_t iy = 0; iy < 4; iy++) {
521
1.27G
          for (size_t ix = 0; ix < 8; ix++) {
522
1.13G
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
1.13G
          }
524
141M
        }
525
35.4M
      }
526
17.7M
      float block0 = coefficients[0];
527
17.7M
      float block1 = coefficients[8];
528
17.7M
      coefficients[0] = (block0 + block1) * 0.5f;
529
17.7M
      coefficients[8] = (block0 - block1) * 0.5f;
530
17.7M
      break;
531
0
    }
532
17.5M
    case Type::DCT4X4: {
533
52.6M
      for (size_t y = 0; y < 2; y++) {
534
105M
        for (size_t x = 0; x < 2; x++) {
535
70.2M
          HWY_ALIGN float block[4 * 4];
536
70.2M
          ComputeScaledDCT<4, 4>()(
537
70.2M
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
70.2M
              block, scratch_space);
539
351M
          for (size_t iy = 0; iy < 4; iy++) {
540
1.40G
            for (size_t ix = 0; ix < 4; ix++) {
541
1.12G
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
1.12G
            }
543
281M
          }
544
70.2M
        }
545
35.1M
      }
546
17.5M
      float block00 = coefficients[0];
547
17.5M
      float block01 = coefficients[1];
548
17.5M
      float block10 = coefficients[8];
549
17.5M
      float block11 = coefficients[9];
550
17.5M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
17.5M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
17.5M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
17.5M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
17.5M
      break;
555
0
    }
556
22.9M
    case Type::DCT2X2: {
557
22.9M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
22.9M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
22.9M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
22.9M
      break;
561
0
    }
562
7.40M
    case Type::DCT16X16: {
563
7.40M
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
7.40M
                                 scratch_space);
565
7.40M
      break;
566
0
    }
567
14.3M
    case Type::DCT16X8: {
568
14.3M
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
14.3M
                                scratch_space);
570
14.3M
      break;
571
0
    }
572
14.3M
    case Type::DCT8X16: {
573
14.3M
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
14.3M
                                scratch_space);
575
14.3M
      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
2.89M
    case Type::DCT32X16: {
588
2.89M
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
2.89M
                                 scratch_space);
590
2.89M
      break;
591
0
    }
592
2.88M
    case Type::DCT16X32: {
593
2.88M
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
2.88M
                                 scratch_space);
595
2.88M
      break;
596
0
    }
597
1.67M
    case Type::DCT32X32: {
598
1.67M
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
1.67M
                                 scratch_space);
600
1.67M
      break;
601
0
    }
602
39.4M
    case Type::DCT: {
603
39.4M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
39.4M
                               scratch_space);
605
39.4M
      break;
606
0
    }
607
17.8M
    case Type::AFV0: {
608
17.8M
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
17.8M
      break;
610
0
    }
611
17.7M
    case Type::AFV1: {
612
17.7M
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
17.7M
      break;
614
0
    }
615
17.7M
    case Type::AFV2: {
616
17.7M
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
17.7M
      break;
618
0
    }
619
17.7M
    case Type::AFV3: {
620
17.7M
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
17.7M
      break;
622
0
    }
623
402k
    case Type::DCT64X64: {
624
402k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
402k
                                 scratch_space);
626
402k
      break;
627
0
    }
628
877k
    case Type::DCT64X32: {
629
877k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
877k
                                 scratch_space);
631
877k
      break;
632
0
    }
633
528k
    case Type::DCT32X64: {
634
528k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
528k
                                 scratch_space);
636
528k
      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
251M
  }
669
251M
}
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_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
7.54M
                                          float* JXL_RESTRICT scratch_space) {
462
7.54M
  using Type = AcStrategyType;
463
7.54M
  switch (strategy) {
464
843k
    case Type::IDENTITY: {
465
2.53M
      for (size_t y = 0; y < 2; y++) {
466
5.06M
        for (size_t x = 0; x < 2; x++) {
467
3.37M
          float block_dc = 0;
468
16.8M
          for (size_t iy = 0; iy < 4; iy++) {
469
67.4M
            for (size_t ix = 0; ix < 4; ix++) {
470
53.9M
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
53.9M
            }
472
13.4M
          }
473
3.37M
          block_dc *= 1.0f / 16;
474
16.8M
          for (size_t iy = 0; iy < 4; iy++) {
475
67.4M
            for (size_t ix = 0; ix < 4; ix++) {
476
53.9M
              if (ix == 1 && iy == 1) continue;
477
50.6M
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
50.6M
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
50.6M
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
50.6M
            }
481
13.4M
          }
482
3.37M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
3.37M
          coefficients[y * 8 + x] = block_dc;
484
3.37M
        }
485
1.68M
      }
486
843k
      float block00 = coefficients[0];
487
843k
      float block01 = coefficients[1];
488
843k
      float block10 = coefficients[8];
489
843k
      float block11 = coefficients[9];
490
843k
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
843k
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
843k
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
843k
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
843k
      break;
495
0
    }
496
196k
    case Type::DCT8X4: {
497
589k
      for (size_t x = 0; x < 2; x++) {
498
393k
        HWY_ALIGN float block[4 * 8];
499
393k
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
393k
                                 scratch_space);
501
1.96M
        for (size_t iy = 0; iy < 4; iy++) {
502
14.1M
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
12.5M
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
12.5M
          }
506
1.57M
        }
507
393k
      }
508
196k
      float block0 = coefficients[0];
509
196k
      float block1 = coefficients[8];
510
196k
      coefficients[0] = (block0 + block1) * 0.5f;
511
196k
      coefficients[8] = (block0 - block1) * 0.5f;
512
196k
      break;
513
0
    }
514
87.1k
    case Type::DCT4X8: {
515
261k
      for (size_t y = 0; y < 2; y++) {
516
174k
        HWY_ALIGN float block[4 * 8];
517
174k
        ComputeScaledDCT<4, 8>()(
518
174k
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
174k
            scratch_space);
520
871k
        for (size_t iy = 0; iy < 4; iy++) {
521
6.27M
          for (size_t ix = 0; ix < 8; ix++) {
522
5.57M
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
5.57M
          }
524
697k
        }
525
174k
      }
526
87.1k
      float block0 = coefficients[0];
527
87.1k
      float block1 = coefficients[8];
528
87.1k
      coefficients[0] = (block0 + block1) * 0.5f;
529
87.1k
      coefficients[8] = (block0 - block1) * 0.5f;
530
87.1k
      break;
531
0
    }
532
276
    case Type::DCT4X4: {
533
828
      for (size_t y = 0; y < 2; y++) {
534
1.65k
        for (size_t x = 0; x < 2; x++) {
535
1.10k
          HWY_ALIGN float block[4 * 4];
536
1.10k
          ComputeScaledDCT<4, 4>()(
537
1.10k
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
1.10k
              block, scratch_space);
539
5.52k
          for (size_t iy = 0; iy < 4; iy++) {
540
22.0k
            for (size_t ix = 0; ix < 4; ix++) {
541
17.6k
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
17.6k
            }
543
4.41k
          }
544
1.10k
        }
545
552
      }
546
276
      float block00 = coefficients[0];
547
276
      float block01 = coefficients[1];
548
276
      float block10 = coefficients[8];
549
276
      float block11 = coefficients[9];
550
276
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
276
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
276
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
276
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
276
      break;
555
0
    }
556
2.67M
    case Type::DCT2X2: {
557
2.67M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
2.67M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
2.67M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
2.67M
      break;
561
0
    }
562
210k
    case Type::DCT16X16: {
563
210k
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
210k
                                 scratch_space);
565
210k
      break;
566
0
    }
567
281k
    case Type::DCT16X8: {
568
281k
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
281k
                                scratch_space);
570
281k
      break;
571
0
    }
572
298k
    case Type::DCT8X16: {
573
298k
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
298k
                                scratch_space);
575
298k
      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
68.8k
    case Type::DCT32X16: {
588
68.8k
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
68.8k
                                 scratch_space);
590
68.8k
      break;
591
0
    }
592
75.2k
    case Type::DCT16X32: {
593
75.2k
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
75.2k
                                 scratch_space);
595
75.2k
      break;
596
0
    }
597
142k
    case Type::DCT32X32: {
598
142k
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
142k
                                 scratch_space);
600
142k
      break;
601
0
    }
602
2.17M
    case Type::DCT: {
603
2.17M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
2.17M
                               scratch_space);
605
2.17M
      break;
606
0
    }
607
118k
    case Type::AFV0: {
608
118k
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
118k
      break;
610
0
    }
611
73.6k
    case Type::AFV1: {
612
73.6k
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
73.6k
      break;
614
0
    }
615
89.3k
    case Type::AFV2: {
616
89.3k
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
89.3k
      break;
618
0
    }
619
98.5k
    case Type::AFV3: {
620
98.5k
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
98.5k
      break;
622
0
    }
623
77.8k
    case Type::DCT64X64: {
624
77.8k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
77.8k
                                 scratch_space);
626
77.8k
      break;
627
0
    }
628
14.8k
    case Type::DCT64X32: {
629
14.8k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
14.8k
                                 scratch_space);
631
14.8k
      break;
632
0
    }
633
9.72k
    case Type::DCT32X64: {
634
9.72k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
9.72k
                                 scratch_space);
636
9.72k
      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.54M
  }
669
7.54M
}
Unexecuted instantiation: enc_group.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
25.1M
                                          float* JXL_RESTRICT scratch_space) {
462
25.1M
  using Type = AcStrategyType;
463
25.1M
  switch (strategy) {
464
843k
    case Type::IDENTITY: {
465
2.53M
      for (size_t y = 0; y < 2; y++) {
466
5.06M
        for (size_t x = 0; x < 2; x++) {
467
3.37M
          float block_dc = 0;
468
16.8M
          for (size_t iy = 0; iy < 4; iy++) {
469
67.4M
            for (size_t ix = 0; ix < 4; ix++) {
470
53.9M
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
53.9M
            }
472
13.4M
          }
473
3.37M
          block_dc *= 1.0f / 16;
474
16.8M
          for (size_t iy = 0; iy < 4; iy++) {
475
67.4M
            for (size_t ix = 0; ix < 4; ix++) {
476
53.9M
              if (ix == 1 && iy == 1) continue;
477
50.6M
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
50.6M
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
50.6M
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
50.6M
            }
481
13.4M
          }
482
3.37M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
3.37M
          coefficients[y * 8 + x] = block_dc;
484
3.37M
        }
485
1.68M
      }
486
843k
      float block00 = coefficients[0];
487
843k
      float block01 = coefficients[1];
488
843k
      float block10 = coefficients[8];
489
843k
      float block11 = coefficients[9];
490
843k
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
843k
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
843k
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
843k
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
843k
      break;
495
0
    }
496
196k
    case Type::DCT8X4: {
497
589k
      for (size_t x = 0; x < 2; x++) {
498
393k
        HWY_ALIGN float block[4 * 8];
499
393k
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
393k
                                 scratch_space);
501
1.96M
        for (size_t iy = 0; iy < 4; iy++) {
502
14.1M
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
12.5M
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
12.5M
          }
506
1.57M
        }
507
393k
      }
508
196k
      float block0 = coefficients[0];
509
196k
      float block1 = coefficients[8];
510
196k
      coefficients[0] = (block0 + block1) * 0.5f;
511
196k
      coefficients[8] = (block0 - block1) * 0.5f;
512
196k
      break;
513
0
    }
514
87.1k
    case Type::DCT4X8: {
515
261k
      for (size_t y = 0; y < 2; y++) {
516
174k
        HWY_ALIGN float block[4 * 8];
517
174k
        ComputeScaledDCT<4, 8>()(
518
174k
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
174k
            scratch_space);
520
871k
        for (size_t iy = 0; iy < 4; iy++) {
521
6.27M
          for (size_t ix = 0; ix < 8; ix++) {
522
5.57M
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
5.57M
          }
524
697k
        }
525
174k
      }
526
87.1k
      float block0 = coefficients[0];
527
87.1k
      float block1 = coefficients[8];
528
87.1k
      coefficients[0] = (block0 + block1) * 0.5f;
529
87.1k
      coefficients[8] = (block0 - block1) * 0.5f;
530
87.1k
      break;
531
0
    }
532
276
    case Type::DCT4X4: {
533
828
      for (size_t y = 0; y < 2; y++) {
534
1.65k
        for (size_t x = 0; x < 2; x++) {
535
1.10k
          HWY_ALIGN float block[4 * 4];
536
1.10k
          ComputeScaledDCT<4, 4>()(
537
1.10k
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
1.10k
              block, scratch_space);
539
5.52k
          for (size_t iy = 0; iy < 4; iy++) {
540
22.0k
            for (size_t ix = 0; ix < 4; ix++) {
541
17.6k
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
17.6k
            }
543
4.41k
          }
544
1.10k
        }
545
552
      }
546
276
      float block00 = coefficients[0];
547
276
      float block01 = coefficients[1];
548
276
      float block10 = coefficients[8];
549
276
      float block11 = coefficients[9];
550
276
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
276
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
276
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
276
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
276
      break;
555
0
    }
556
2.67M
    case Type::DCT2X2: {
557
2.67M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
2.67M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
2.67M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
2.67M
      break;
561
0
    }
562
210k
    case Type::DCT16X16: {
563
210k
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
210k
                                 scratch_space);
565
210k
      break;
566
0
    }
567
281k
    case Type::DCT16X8: {
568
281k
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
281k
                                scratch_space);
570
281k
      break;
571
0
    }
572
298k
    case Type::DCT8X16: {
573
298k
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
298k
                                scratch_space);
575
298k
      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
68.8k
    case Type::DCT32X16: {
588
68.8k
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
68.8k
                                 scratch_space);
590
68.8k
      break;
591
0
    }
592
75.2k
    case Type::DCT16X32: {
593
75.2k
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
75.2k
                                 scratch_space);
595
75.2k
      break;
596
0
    }
597
142k
    case Type::DCT32X32: {
598
142k
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
142k
                                 scratch_space);
600
142k
      break;
601
0
    }
602
19.7M
    case Type::DCT: {
603
19.7M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
19.7M
                               scratch_space);
605
19.7M
      break;
606
0
    }
607
118k
    case Type::AFV0: {
608
118k
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
118k
      break;
610
0
    }
611
73.6k
    case Type::AFV1: {
612
73.6k
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
73.6k
      break;
614
0
    }
615
89.3k
    case Type::AFV2: {
616
89.3k
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
89.3k
      break;
618
0
    }
619
98.5k
    case Type::AFV3: {
620
98.5k
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
98.5k
      break;
622
0
    }
623
77.8k
    case Type::DCT64X64: {
624
77.8k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
77.8k
                                 scratch_space);
626
77.8k
      break;
627
0
    }
628
14.8k
    case Type::DCT64X32: {
629
14.8k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
14.8k
                                 scratch_space);
631
14.8k
      break;
632
0
    }
633
9.72k
    case Type::DCT32X64: {
634
9.72k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
9.72k
                                 scratch_space);
636
9.72k
      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
25.1M
  }
669
25.1M
}
Unexecuted instantiation: enc_chroma_from_luma.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
218M
                                          float* JXL_RESTRICT scratch_space) {
462
218M
  using Type = AcStrategyType;
463
218M
  switch (strategy) {
464
17.5M
    case Type::IDENTITY: {
465
52.6M
      for (size_t y = 0; y < 2; y++) {
466
105M
        for (size_t x = 0; x < 2; x++) {
467
70.2M
          float block_dc = 0;
468
351M
          for (size_t iy = 0; iy < 4; iy++) {
469
1.40G
            for (size_t ix = 0; ix < 4; ix++) {
470
1.12G
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
1.12G
            }
472
281M
          }
473
70.2M
          block_dc *= 1.0f / 16;
474
351M
          for (size_t iy = 0; iy < 4; iy++) {
475
1.40G
            for (size_t ix = 0; ix < 4; ix++) {
476
1.12G
              if (ix == 1 && iy == 1) continue;
477
1.05G
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
1.05G
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
1.05G
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
1.05G
            }
481
281M
          }
482
70.2M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
70.2M
          coefficients[y * 8 + x] = block_dc;
484
70.2M
        }
485
35.1M
      }
486
17.5M
      float block00 = coefficients[0];
487
17.5M
      float block01 = coefficients[1];
488
17.5M
      float block10 = coefficients[8];
489
17.5M
      float block11 = coefficients[9];
490
17.5M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
17.5M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
17.5M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
17.5M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
17.5M
      break;
495
0
    }
496
17.5M
    case Type::DCT8X4: {
497
52.6M
      for (size_t x = 0; x < 2; x++) {
498
35.1M
        HWY_ALIGN float block[4 * 8];
499
35.1M
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
35.1M
                                 scratch_space);
501
175M
        for (size_t iy = 0; iy < 4; iy++) {
502
1.26G
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
1.12G
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
1.12G
          }
506
140M
        }
507
35.1M
      }
508
17.5M
      float block0 = coefficients[0];
509
17.5M
      float block1 = coefficients[8];
510
17.5M
      coefficients[0] = (block0 + block1) * 0.5f;
511
17.5M
      coefficients[8] = (block0 - block1) * 0.5f;
512
17.5M
      break;
513
0
    }
514
17.5M
    case Type::DCT4X8: {
515
52.6M
      for (size_t y = 0; y < 2; y++) {
516
35.1M
        HWY_ALIGN float block[4 * 8];
517
35.1M
        ComputeScaledDCT<4, 8>()(
518
35.1M
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
35.1M
            scratch_space);
520
175M
        for (size_t iy = 0; iy < 4; iy++) {
521
1.26G
          for (size_t ix = 0; ix < 8; ix++) {
522
1.12G
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
1.12G
          }
524
140M
        }
525
35.1M
      }
526
17.5M
      float block0 = coefficients[0];
527
17.5M
      float block1 = coefficients[8];
528
17.5M
      coefficients[0] = (block0 + block1) * 0.5f;
529
17.5M
      coefficients[8] = (block0 - block1) * 0.5f;
530
17.5M
      break;
531
0
    }
532
17.5M
    case Type::DCT4X4: {
533
52.6M
      for (size_t y = 0; y < 2; y++) {
534
105M
        for (size_t x = 0; x < 2; x++) {
535
70.2M
          HWY_ALIGN float block[4 * 4];
536
70.2M
          ComputeScaledDCT<4, 4>()(
537
70.2M
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
70.2M
              block, scratch_space);
539
351M
          for (size_t iy = 0; iy < 4; iy++) {
540
1.40G
            for (size_t ix = 0; ix < 4; ix++) {
541
1.12G
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
1.12G
            }
543
281M
          }
544
70.2M
        }
545
35.1M
      }
546
17.5M
      float block00 = coefficients[0];
547
17.5M
      float block01 = coefficients[1];
548
17.5M
      float block10 = coefficients[8];
549
17.5M
      float block11 = coefficients[9];
550
17.5M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
17.5M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
17.5M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
17.5M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
17.5M
      break;
555
0
    }
556
17.5M
    case Type::DCT2X2: {
557
17.5M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
17.5M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
17.5M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
17.5M
      break;
561
0
    }
562
6.98M
    case Type::DCT16X16: {
563
6.98M
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
6.98M
                                 scratch_space);
565
6.98M
      break;
566
0
    }
567
13.8M
    case Type::DCT16X8: {
568
13.8M
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
13.8M
                                scratch_space);
570
13.8M
      break;
571
0
    }
572
13.7M
    case Type::DCT8X16: {
573
13.7M
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
13.7M
                                scratch_space);
575
13.7M
      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
2.75M
    case Type::DCT32X16: {
588
2.75M
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
2.75M
                                 scratch_space);
590
2.75M
      break;
591
0
    }
592
2.73M
    case Type::DCT16X32: {
593
2.73M
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
2.73M
                                 scratch_space);
595
2.73M
      break;
596
0
    }
597
1.39M
    case Type::DCT32X32: {
598
1.39M
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
1.39M
                                 scratch_space);
600
1.39M
      break;
601
0
    }
602
17.5M
    case Type::DCT: {
603
17.5M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
17.5M
                               scratch_space);
605
17.5M
      break;
606
0
    }
607
17.5M
    case Type::AFV0: {
608
17.5M
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
17.5M
      break;
610
0
    }
611
17.5M
    case Type::AFV1: {
612
17.5M
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
17.5M
      break;
614
0
    }
615
17.5M
    case Type::AFV2: {
616
17.5M
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
17.5M
      break;
618
0
    }
619
17.5M
    case Type::AFV3: {
620
17.5M
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
17.5M
      break;
622
0
    }
623
246k
    case Type::DCT64X64: {
624
246k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
246k
                                 scratch_space);
626
246k
      break;
627
0
    }
628
847k
    case Type::DCT64X32: {
629
847k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
847k
                                 scratch_space);
631
847k
      break;
632
0
    }
633
508k
    case Type::DCT32X64: {
634
508k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
508k
                                 scratch_space);
636
508k
      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
218M
  }
669
218M
}
Unexecuted instantiation: enc_ac_strategy.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
32.6M
                                              float* scratch_space) {
676
32.6M
  using Type = AcStrategyType;
677
32.6M
  switch (strategy) {
678
563k
    case Type::DCT16X8: {
679
563k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
563k
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
563k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
563k
      break;
683
0
    }
684
597k
    case Type::DCT8X16: {
685
597k
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
597k
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
597k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
597k
      break;
689
0
    }
690
420k
    case Type::DCT16X16: {
691
420k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
420k
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
420k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
420k
      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
137k
    case Type::DCT32X16: {
709
137k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
137k
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
137k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
137k
      break;
713
0
    }
714
150k
    case Type::DCT16X32: {
715
150k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
150k
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
150k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
150k
      break;
719
0
    }
720
284k
    case Type::DCT32X32: {
721
284k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
284k
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
284k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
284k
      break;
725
0
    }
726
29.7k
    case Type::DCT64X32: {
727
29.7k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
29.7k
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
29.7k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
29.7k
      break;
731
0
    }
732
19.4k
    case Type::DCT32X64: {
733
19.4k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
19.4k
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
19.4k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
19.4k
      break;
737
0
    }
738
155k
    case Type::DCT64X64: {
739
155k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
155k
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
155k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
155k
      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
21.9M
    case Type::DCT:
787
27.2M
    case Type::DCT2X2:
788
27.2M
    case Type::DCT4X4:
789
27.4M
    case Type::DCT4X8:
790
27.8M
    case Type::DCT8X4:
791
28.0M
    case Type::AFV0:
792
28.2M
    case Type::AFV1:
793
28.4M
    case Type::AFV2:
794
28.6M
    case Type::AFV3:
795
30.2M
    case Type::IDENTITY:
796
30.2M
      dc[0] = block[0];
797
30.2M
      break;
798
32.6M
  }
799
32.6M
}
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_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
7.54M
                                              float* scratch_space) {
676
7.54M
  using Type = AcStrategyType;
677
7.54M
  switch (strategy) {
678
281k
    case Type::DCT16X8: {
679
281k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
281k
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
281k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
281k
      break;
683
0
    }
684
298k
    case Type::DCT8X16: {
685
298k
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
298k
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
298k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
298k
      break;
689
0
    }
690
210k
    case Type::DCT16X16: {
691
210k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
210k
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
210k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
210k
      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
68.8k
    case Type::DCT32X16: {
709
68.8k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
68.8k
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
68.8k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
68.8k
      break;
713
0
    }
714
75.2k
    case Type::DCT16X32: {
715
75.2k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
75.2k
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
75.2k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
75.2k
      break;
719
0
    }
720
142k
    case Type::DCT32X32: {
721
142k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
142k
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
142k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
142k
      break;
725
0
    }
726
14.8k
    case Type::DCT64X32: {
727
14.8k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
14.8k
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
14.8k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
14.8k
      break;
731
0
    }
732
9.72k
    case Type::DCT32X64: {
733
9.72k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
9.72k
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
9.72k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
9.72k
      break;
737
0
    }
738
77.8k
    case Type::DCT64X64: {
739
77.8k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
77.8k
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
77.8k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
77.8k
      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
2.17M
    case Type::DCT:
787
4.85M
    case Type::DCT2X2:
788
4.85M
    case Type::DCT4X4:
789
4.94M
    case Type::DCT4X8:
790
5.13M
    case Type::DCT8X4:
791
5.25M
    case Type::AFV0:
792
5.33M
    case Type::AFV1:
793
5.42M
    case Type::AFV2:
794
5.51M
    case Type::AFV3:
795
6.36M
    case Type::IDENTITY:
796
6.36M
      dc[0] = block[0];
797
6.36M
      break;
798
7.54M
  }
799
7.54M
}
Unexecuted instantiation: enc_group.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
25.1M
                                              float* scratch_space) {
676
25.1M
  using Type = AcStrategyType;
677
25.1M
  switch (strategy) {
678
281k
    case Type::DCT16X8: {
679
281k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
281k
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
281k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
281k
      break;
683
0
    }
684
298k
    case Type::DCT8X16: {
685
298k
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
298k
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
298k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
298k
      break;
689
0
    }
690
210k
    case Type::DCT16X16: {
691
210k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
210k
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
210k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
210k
      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
68.8k
    case Type::DCT32X16: {
709
68.8k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
68.8k
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
68.8k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
68.8k
      break;
713
0
    }
714
75.2k
    case Type::DCT16X32: {
715
75.2k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
75.2k
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
75.2k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
75.2k
      break;
719
0
    }
720
142k
    case Type::DCT32X32: {
721
142k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
142k
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
142k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
142k
      break;
725
0
    }
726
14.8k
    case Type::DCT64X32: {
727
14.8k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
14.8k
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
14.8k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
14.8k
      break;
731
0
    }
732
9.72k
    case Type::DCT32X64: {
733
9.72k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
9.72k
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
9.72k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
9.72k
      break;
737
0
    }
738
77.8k
    case Type::DCT64X64: {
739
77.8k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
77.8k
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
77.8k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
77.8k
      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
19.7M
    case Type::DCT:
787
22.4M
    case Type::DCT2X2:
788
22.4M
    case Type::DCT4X4:
789
22.5M
    case Type::DCT4X8:
790
22.7M
    case Type::DCT8X4:
791
22.8M
    case Type::AFV0:
792
22.8M
    case Type::AFV1:
793
22.9M
    case Type::AFV2:
794
23.0M
    case Type::AFV3:
795
23.9M
    case Type::IDENTITY:
796
23.9M
      dc[0] = block[0];
797
23.9M
      break;
798
25.1M
  }
799
25.1M
}
Unexecuted instantiation: enc_chroma_from_luma.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*)
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_