Coverage Report

Created: 2026-11-12 07:35

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.10M
                                   const size_t output_stride, float* scratch) {
40
2.10M
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
2.10M
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
2.10M
  float* block = scratch;
43
2.10M
  if (ROWS < COLS) {
44
1.52M
    for (size_t y = 0; y < LF_ROWS; y++) {
45
3.43M
      for (size_t x = 0; x < LF_COLS; x++) {
46
2.58M
        block[y * COLS + x] = input[y * input_stride + x] *
47
2.58M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
2.58M
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
2.58M
      }
50
848k
    }
51
1.42M
  } else {
52
5.22M
    for (size_t y = 0; y < LF_COLS; y++) {
53
21.6M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
17.8M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
17.8M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
17.8M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
17.8M
      }
58
3.79M
    }
59
1.42M
  }
60
61
2.10M
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
2.10M
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
2.10M
                                  scratch_space);
64
2.10M
}
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
252k
                                   const size_t output_stride, float* scratch) {
40
252k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
252k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
252k
  float* block = scratch;
43
252k
  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
252k
  } else {
52
504k
    for (size_t y = 0; y < LF_COLS; y++) {
53
756k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
504k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
504k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
504k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
504k
      }
58
252k
    }
59
252k
  }
60
61
252k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
252k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
252k
                                  scratch_space);
64
252k
}
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
266k
                                   const size_t output_stride, float* scratch) {
40
266k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
266k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
266k
  float* block = scratch;
43
266k
  if (ROWS < COLS) {
44
532k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
798k
      for (size_t x = 0; x < LF_COLS; x++) {
46
532k
        block[y * COLS + x] = input[y * input_stride + x] *
47
532k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
532k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
532k
      }
50
266k
    }
51
266k
  } 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
266k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
266k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
266k
                                  scratch_space);
64
266k
}
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
187k
                                   const size_t output_stride, float* scratch) {
40
187k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
187k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
187k
  float* block = scratch;
43
187k
  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
187k
  } else {
52
562k
    for (size_t y = 0; y < LF_COLS; y++) {
53
1.12M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
749k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
749k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
749k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
749k
      }
58
374k
    }
59
187k
  }
60
61
187k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
187k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
187k
                                  scratch_space);
64
187k
}
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
62.3k
                                   const size_t output_stride, float* scratch) {
40
62.3k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
62.3k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
62.3k
  float* block = scratch;
43
62.3k
  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
62.3k
  } else {
52
186k
    for (size_t y = 0; y < LF_COLS; y++) {
53
623k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
498k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
498k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
498k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
498k
      }
58
124k
    }
59
62.3k
  }
60
61
62.3k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
62.3k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
62.3k
                                  scratch_space);
64
62.3k
}
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
62.8k
                                   const size_t output_stride, float* scratch) {
40
62.8k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
62.8k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
62.8k
  float* block = scratch;
43
62.8k
  if (ROWS < COLS) {
44
188k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
628k
      for (size_t x = 0; x < LF_COLS; x++) {
46
502k
        block[y * COLS + x] = input[y * input_stride + x] *
47
502k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
502k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
502k
      }
50
125k
    }
51
62.8k
  } 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
62.8k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
62.8k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
62.8k
                                  scratch_space);
64
62.8k
}
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
123k
                                   const size_t output_stride, float* scratch) {
40
123k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
123k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
123k
  float* block = scratch;
43
123k
  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
123k
  } else {
52
617k
    for (size_t y = 0; y < LF_COLS; y++) {
53
2.47M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
1.97M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
1.97M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
1.97M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
1.97M
      }
58
494k
    }
59
123k
  }
60
61
123k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
123k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
123k
                                  scratch_space);
64
123k
}
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
13.0k
                                   const size_t output_stride, float* scratch) {
40
13.0k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
13.0k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
13.0k
  float* block = scratch;
43
13.0k
  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
13.0k
  } else {
52
65.3k
    for (size_t y = 0; y < LF_COLS; y++) {
53
470k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
417k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
417k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
417k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
417k
      }
58
52.2k
    }
59
13.0k
  }
60
61
13.0k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
13.0k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
13.0k
                                  scratch_space);
64
13.0k
}
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
8.13k
                                   const size_t output_stride, float* scratch) {
40
8.13k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
8.13k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
8.13k
  float* block = scratch;
43
8.13k
  if (ROWS < COLS) {
44
40.6k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
292k
      for (size_t x = 0; x < LF_COLS; x++) {
46
260k
        block[y * COLS + x] = input[y * input_stride + x] *
47
260k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
260k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
260k
      }
50
32.5k
    }
51
8.13k
  } 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
8.13k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
8.13k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
8.13k
                                  scratch_space);
64
8.13k
}
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
74.9k
                                   const size_t output_stride, float* scratch) {
40
74.9k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
74.9k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
74.9k
  float* block = scratch;
43
74.9k
  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
74.9k
  } else {
52
674k
    for (size_t y = 0; y < LF_COLS; y++) {
53
5.39M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
4.79M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
4.79M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
4.79M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
4.79M
      }
58
599k
    }
59
74.9k
  }
60
61
74.9k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
74.9k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
74.9k
                                  scratch_space);
64
74.9k
}
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
252k
                                   const size_t output_stride, float* scratch) {
40
252k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
252k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
252k
  float* block = scratch;
43
252k
  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
252k
  } else {
52
504k
    for (size_t y = 0; y < LF_COLS; y++) {
53
756k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
504k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
504k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
504k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
504k
      }
58
252k
    }
59
252k
  }
60
61
252k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
252k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
252k
                                  scratch_space);
64
252k
}
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
266k
                                   const size_t output_stride, float* scratch) {
40
266k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
266k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
266k
  float* block = scratch;
43
266k
  if (ROWS < COLS) {
44
532k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
798k
      for (size_t x = 0; x < LF_COLS; x++) {
46
532k
        block[y * COLS + x] = input[y * input_stride + x] *
47
532k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
532k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
532k
      }
50
266k
    }
51
266k
  } 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
266k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
266k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
266k
                                  scratch_space);
64
266k
}
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
187k
                                   const size_t output_stride, float* scratch) {
40
187k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
187k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
187k
  float* block = scratch;
43
187k
  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
187k
  } else {
52
562k
    for (size_t y = 0; y < LF_COLS; y++) {
53
1.12M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
749k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
749k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
749k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
749k
      }
58
374k
    }
59
187k
  }
60
61
187k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
187k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
187k
                                  scratch_space);
64
187k
}
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
62.3k
                                   const size_t output_stride, float* scratch) {
40
62.3k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
62.3k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
62.3k
  float* block = scratch;
43
62.3k
  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
62.3k
  } else {
52
186k
    for (size_t y = 0; y < LF_COLS; y++) {
53
623k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
498k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
498k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
498k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
498k
      }
58
124k
    }
59
62.3k
  }
60
61
62.3k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
62.3k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
62.3k
                                  scratch_space);
64
62.3k
}
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
62.8k
                                   const size_t output_stride, float* scratch) {
40
62.8k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
62.8k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
62.8k
  float* block = scratch;
43
62.8k
  if (ROWS < COLS) {
44
188k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
628k
      for (size_t x = 0; x < LF_COLS; x++) {
46
502k
        block[y * COLS + x] = input[y * input_stride + x] *
47
502k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
502k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
502k
      }
50
125k
    }
51
62.8k
  } 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
62.8k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
62.8k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
62.8k
                                  scratch_space);
64
62.8k
}
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
123k
                                   const size_t output_stride, float* scratch) {
40
123k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
123k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
123k
  float* block = scratch;
43
123k
  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
123k
  } else {
52
617k
    for (size_t y = 0; y < LF_COLS; y++) {
53
2.47M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
1.97M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
1.97M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
1.97M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
1.97M
      }
58
494k
    }
59
123k
  }
60
61
123k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
123k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
123k
                                  scratch_space);
64
123k
}
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
13.0k
                                   const size_t output_stride, float* scratch) {
40
13.0k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
13.0k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
13.0k
  float* block = scratch;
43
13.0k
  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
13.0k
  } else {
52
65.3k
    for (size_t y = 0; y < LF_COLS; y++) {
53
470k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
417k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
417k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
417k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
417k
      }
58
52.2k
    }
59
13.0k
  }
60
61
13.0k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
13.0k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
13.0k
                                  scratch_space);
64
13.0k
}
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
8.13k
                                   const size_t output_stride, float* scratch) {
40
8.13k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
8.13k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
8.13k
  float* block = scratch;
43
8.13k
  if (ROWS < COLS) {
44
40.6k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
292k
      for (size_t x = 0; x < LF_COLS; x++) {
46
260k
        block[y * COLS + x] = input[y * input_stride + x] *
47
260k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
260k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
260k
      }
50
32.5k
    }
51
8.13k
  } 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
8.13k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
8.13k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
8.13k
                                  scratch_space);
64
8.13k
}
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
74.9k
                                   const size_t output_stride, float* scratch) {
40
74.9k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
74.9k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
74.9k
  float* block = scratch;
43
74.9k
  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
74.9k
  } else {
52
674k
    for (size_t y = 0; y < LF_COLS; y++) {
53
5.39M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
4.79M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
4.79M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
4.79M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
4.79M
      }
58
599k
    }
59
74.9k
  }
60
61
74.9k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
74.9k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
74.9k
                                  scratch_space);
64
74.9k
}
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
61.1M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
61.1M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
61.1M
  static_assert(S % 2 == 0, "S should be even");
70
61.1M
  float temp[kDCTBlockSize];
71
61.1M
  constexpr size_t num_2x2 = S / 2;
72
203M
  for (size_t y = 0; y < num_2x2; y++) {
73
570M
    for (size_t x = 0; x < num_2x2; x++) {
74
427M
      float c00 = block[y * 2 * stride + x * 2];
75
427M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
427M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
427M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
427M
      float r00 = c00 + c01 + c10 + c11;
79
427M
      float r01 = c00 + c01 - c10 - c11;
80
427M
      float r10 = c00 - c01 + c10 - c11;
81
427M
      float r11 = c00 - c01 - c10 + c11;
82
427M
      r00 *= 0.25f;
83
427M
      r01 *= 0.25f;
84
427M
      r10 *= 0.25f;
85
427M
      r11 *= 0.25f;
86
427M
      temp[y * kBlockDim + x] = r00;
87
427M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
427M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
427M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
427M
    }
91
142M
  }
92
346M
  for (size_t y = 0; y < S; y++) {
93
1.99G
    for (size_t x = 0; x < S; x++) {
94
1.71G
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
1.71G
    }
96
285M
  }
97
61.1M
}
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.29M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.29M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.29M
  static_assert(S % 2 == 0, "S should be even");
70
2.29M
  float temp[kDCTBlockSize];
71
2.29M
  constexpr size_t num_2x2 = S / 2;
72
11.4M
  for (size_t y = 0; y < num_2x2; y++) {
73
45.8M
    for (size_t x = 0; x < num_2x2; x++) {
74
36.6M
      float c00 = block[y * 2 * stride + x * 2];
75
36.6M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
36.6M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
36.6M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
36.6M
      float r00 = c00 + c01 + c10 + c11;
79
36.6M
      float r01 = c00 + c01 - c10 - c11;
80
36.6M
      float r10 = c00 - c01 + c10 - c11;
81
36.6M
      float r11 = c00 - c01 - c10 + c11;
82
36.6M
      r00 *= 0.25f;
83
36.6M
      r01 *= 0.25f;
84
36.6M
      r10 *= 0.25f;
85
36.6M
      r11 *= 0.25f;
86
36.6M
      temp[y * kBlockDim + x] = r00;
87
36.6M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
36.6M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
36.6M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
36.6M
    }
91
9.16M
  }
92
20.6M
  for (size_t y = 0; y < S; y++) {
93
164M
    for (size_t x = 0; x < S; x++) {
94
146M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
146M
    }
96
18.3M
  }
97
2.29M
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.29M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.29M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.29M
  static_assert(S % 2 == 0, "S should be even");
70
2.29M
  float temp[kDCTBlockSize];
71
2.29M
  constexpr size_t num_2x2 = S / 2;
72
6.87M
  for (size_t y = 0; y < num_2x2; y++) {
73
13.7M
    for (size_t x = 0; x < num_2x2; x++) {
74
9.16M
      float c00 = block[y * 2 * stride + x * 2];
75
9.16M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
9.16M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
9.16M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
9.16M
      float r00 = c00 + c01 + c10 + c11;
79
9.16M
      float r01 = c00 + c01 - c10 - c11;
80
9.16M
      float r10 = c00 - c01 + c10 - c11;
81
9.16M
      float r11 = c00 - c01 - c10 + c11;
82
9.16M
      r00 *= 0.25f;
83
9.16M
      r01 *= 0.25f;
84
9.16M
      r10 *= 0.25f;
85
9.16M
      r11 *= 0.25f;
86
9.16M
      temp[y * kBlockDim + x] = r00;
87
9.16M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
9.16M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
9.16M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
9.16M
    }
91
4.58M
  }
92
11.4M
  for (size_t y = 0; y < S; y++) {
93
45.8M
    for (size_t x = 0; x < S; x++) {
94
36.6M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
36.6M
    }
96
9.16M
  }
97
2.29M
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.29M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.29M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.29M
  static_assert(S % 2 == 0, "S should be even");
70
2.29M
  float temp[kDCTBlockSize];
71
2.29M
  constexpr size_t num_2x2 = S / 2;
72
4.58M
  for (size_t y = 0; y < num_2x2; y++) {
73
4.58M
    for (size_t x = 0; x < num_2x2; x++) {
74
2.29M
      float c00 = block[y * 2 * stride + x * 2];
75
2.29M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
2.29M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
2.29M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
2.29M
      float r00 = c00 + c01 + c10 + c11;
79
2.29M
      float r01 = c00 + c01 - c10 - c11;
80
2.29M
      float r10 = c00 - c01 + c10 - c11;
81
2.29M
      float r11 = c00 - c01 - c10 + c11;
82
2.29M
      r00 *= 0.25f;
83
2.29M
      r01 *= 0.25f;
84
2.29M
      r10 *= 0.25f;
85
2.29M
      r11 *= 0.25f;
86
2.29M
      temp[y * kBlockDim + x] = r00;
87
2.29M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
2.29M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
2.29M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
2.29M
    }
91
2.29M
  }
92
6.87M
  for (size_t y = 0; y < S; y++) {
93
13.7M
    for (size_t x = 0; x < S; x++) {
94
9.16M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
9.16M
    }
96
4.58M
  }
97
2.29M
}
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.29M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.29M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.29M
  static_assert(S % 2 == 0, "S should be even");
70
2.29M
  float temp[kDCTBlockSize];
71
2.29M
  constexpr size_t num_2x2 = S / 2;
72
11.4M
  for (size_t y = 0; y < num_2x2; y++) {
73
45.8M
    for (size_t x = 0; x < num_2x2; x++) {
74
36.6M
      float c00 = block[y * 2 * stride + x * 2];
75
36.6M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
36.6M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
36.6M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
36.6M
      float r00 = c00 + c01 + c10 + c11;
79
36.6M
      float r01 = c00 + c01 - c10 - c11;
80
36.6M
      float r10 = c00 - c01 + c10 - c11;
81
36.6M
      float r11 = c00 - c01 - c10 + c11;
82
36.6M
      r00 *= 0.25f;
83
36.6M
      r01 *= 0.25f;
84
36.6M
      r10 *= 0.25f;
85
36.6M
      r11 *= 0.25f;
86
36.6M
      temp[y * kBlockDim + x] = r00;
87
36.6M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
36.6M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
36.6M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
36.6M
    }
91
9.16M
  }
92
20.6M
  for (size_t y = 0; y < S; y++) {
93
164M
    for (size_t x = 0; x < S; x++) {
94
146M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
146M
    }
96
18.3M
  }
97
2.29M
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.29M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.29M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.29M
  static_assert(S % 2 == 0, "S should be even");
70
2.29M
  float temp[kDCTBlockSize];
71
2.29M
  constexpr size_t num_2x2 = S / 2;
72
6.87M
  for (size_t y = 0; y < num_2x2; y++) {
73
13.7M
    for (size_t x = 0; x < num_2x2; x++) {
74
9.16M
      float c00 = block[y * 2 * stride + x * 2];
75
9.16M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
9.16M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
9.16M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
9.16M
      float r00 = c00 + c01 + c10 + c11;
79
9.16M
      float r01 = c00 + c01 - c10 - c11;
80
9.16M
      float r10 = c00 - c01 + c10 - c11;
81
9.16M
      float r11 = c00 - c01 - c10 + c11;
82
9.16M
      r00 *= 0.25f;
83
9.16M
      r01 *= 0.25f;
84
9.16M
      r10 *= 0.25f;
85
9.16M
      r11 *= 0.25f;
86
9.16M
      temp[y * kBlockDim + x] = r00;
87
9.16M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
9.16M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
9.16M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
9.16M
    }
91
4.58M
  }
92
11.4M
  for (size_t y = 0; y < S; y++) {
93
45.8M
    for (size_t x = 0; x < S; x++) {
94
36.6M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
36.6M
    }
96
9.16M
  }
97
2.29M
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.29M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.29M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.29M
  static_assert(S % 2 == 0, "S should be even");
70
2.29M
  float temp[kDCTBlockSize];
71
2.29M
  constexpr size_t num_2x2 = S / 2;
72
4.58M
  for (size_t y = 0; y < num_2x2; y++) {
73
4.58M
    for (size_t x = 0; x < num_2x2; x++) {
74
2.29M
      float c00 = block[y * 2 * stride + x * 2];
75
2.29M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
2.29M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
2.29M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
2.29M
      float r00 = c00 + c01 + c10 + c11;
79
2.29M
      float r01 = c00 + c01 - c10 - c11;
80
2.29M
      float r10 = c00 - c01 + c10 - c11;
81
2.29M
      float r11 = c00 - c01 - c10 + c11;
82
2.29M
      r00 *= 0.25f;
83
2.29M
      r01 *= 0.25f;
84
2.29M
      r10 *= 0.25f;
85
2.29M
      r11 *= 0.25f;
86
2.29M
      temp[y * kBlockDim + x] = r00;
87
2.29M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
2.29M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
2.29M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
2.29M
    }
91
2.29M
  }
92
6.87M
  for (size_t y = 0; y < S; y++) {
93
13.7M
    for (size_t x = 0; x < S; x++) {
94
9.16M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
9.16M
    }
96
4.58M
  }
97
2.29M
}
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
15.7M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
15.7M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
15.7M
  static_assert(S % 2 == 0, "S should be even");
70
15.7M
  float temp[kDCTBlockSize];
71
15.7M
  constexpr size_t num_2x2 = S / 2;
72
78.9M
  for (size_t y = 0; y < num_2x2; y++) {
73
315M
    for (size_t x = 0; x < num_2x2; x++) {
74
252M
      float c00 = block[y * 2 * stride + x * 2];
75
252M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
252M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
252M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
252M
      float r00 = c00 + c01 + c10 + c11;
79
252M
      float r01 = c00 + c01 - c10 - c11;
80
252M
      float r10 = c00 - c01 + c10 - c11;
81
252M
      float r11 = c00 - c01 - c10 + c11;
82
252M
      r00 *= 0.25f;
83
252M
      r01 *= 0.25f;
84
252M
      r10 *= 0.25f;
85
252M
      r11 *= 0.25f;
86
252M
      temp[y * kBlockDim + x] = r00;
87
252M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
252M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
252M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
252M
    }
91
63.1M
  }
92
142M
  for (size_t y = 0; y < S; y++) {
93
1.13G
    for (size_t x = 0; x < S; x++) {
94
1.01G
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
1.01G
    }
96
126M
  }
97
15.7M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
15.7M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
15.7M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
15.7M
  static_assert(S % 2 == 0, "S should be even");
70
15.7M
  float temp[kDCTBlockSize];
71
15.7M
  constexpr size_t num_2x2 = S / 2;
72
47.3M
  for (size_t y = 0; y < num_2x2; y++) {
73
94.7M
    for (size_t x = 0; x < num_2x2; x++) {
74
63.1M
      float c00 = block[y * 2 * stride + x * 2];
75
63.1M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
63.1M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
63.1M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
63.1M
      float r00 = c00 + c01 + c10 + c11;
79
63.1M
      float r01 = c00 + c01 - c10 - c11;
80
63.1M
      float r10 = c00 - c01 + c10 - c11;
81
63.1M
      float r11 = c00 - c01 - c10 + c11;
82
63.1M
      r00 *= 0.25f;
83
63.1M
      r01 *= 0.25f;
84
63.1M
      r10 *= 0.25f;
85
63.1M
      r11 *= 0.25f;
86
63.1M
      temp[y * kBlockDim + x] = r00;
87
63.1M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
63.1M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
63.1M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
63.1M
    }
91
31.5M
  }
92
78.9M
  for (size_t y = 0; y < S; y++) {
93
315M
    for (size_t x = 0; x < S; x++) {
94
252M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
252M
    }
96
63.1M
  }
97
15.7M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
15.7M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
15.7M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
15.7M
  static_assert(S % 2 == 0, "S should be even");
70
15.7M
  float temp[kDCTBlockSize];
71
15.7M
  constexpr size_t num_2x2 = S / 2;
72
31.5M
  for (size_t y = 0; y < num_2x2; y++) {
73
31.5M
    for (size_t x = 0; x < num_2x2; x++) {
74
15.7M
      float c00 = block[y * 2 * stride + x * 2];
75
15.7M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
15.7M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
15.7M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
15.7M
      float r00 = c00 + c01 + c10 + c11;
79
15.7M
      float r01 = c00 + c01 - c10 - c11;
80
15.7M
      float r10 = c00 - c01 + c10 - c11;
81
15.7M
      float r11 = c00 - c01 - c10 + c11;
82
15.7M
      r00 *= 0.25f;
83
15.7M
      r01 *= 0.25f;
84
15.7M
      r10 *= 0.25f;
85
15.7M
      r11 *= 0.25f;
86
15.7M
      temp[y * kBlockDim + x] = r00;
87
15.7M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
15.7M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
15.7M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
15.7M
    }
91
15.7M
  }
92
47.3M
  for (size_t y = 0; y < S; y++) {
93
94.7M
    for (size_t x = 0; x < S; x++) {
94
63.1M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
63.1M
    }
96
31.5M
  }
97
15.7M
}
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
63.8M
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
63.8M
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
63.8M
      {
102
63.8M
          0.2500000000000000,
103
63.8M
          0.8769029297991420f,
104
63.8M
          0.0000000000000000,
105
63.8M
          0.0000000000000000,
106
63.8M
          0.0000000000000000,
107
63.8M
          -0.4105377591765233f,
108
63.8M
          0.0000000000000000,
109
63.8M
          0.0000000000000000,
110
63.8M
          0.0000000000000000,
111
63.8M
          0.0000000000000000,
112
63.8M
          0.0000000000000000,
113
63.8M
          0.0000000000000000,
114
63.8M
          0.0000000000000000,
115
63.8M
          0.0000000000000000,
116
63.8M
          0.0000000000000000,
117
63.8M
          0.0000000000000000,
118
63.8M
      },
119
63.8M
      {
120
63.8M
          0.2500000000000000,
121
63.8M
          0.2206518106944235f,
122
63.8M
          0.0000000000000000,
123
63.8M
          0.0000000000000000,
124
63.8M
          -0.7071067811865474f,
125
63.8M
          0.6235485373547691f,
126
63.8M
          0.0000000000000000,
127
63.8M
          0.0000000000000000,
128
63.8M
          0.0000000000000000,
129
63.8M
          0.0000000000000000,
130
63.8M
          0.0000000000000000,
131
63.8M
          0.0000000000000000,
132
63.8M
          0.0000000000000000,
133
63.8M
          0.0000000000000000,
134
63.8M
          0.0000000000000000,
135
63.8M
          0.0000000000000000,
136
63.8M
      },
137
63.8M
      {
138
63.8M
          0.2500000000000000,
139
63.8M
          -0.1014005039375376f,
140
63.8M
          0.4067007583026075f,
141
63.8M
          -0.2125574805828875f,
142
63.8M
          0.0000000000000000,
143
63.8M
          -0.0643507165794627f,
144
63.8M
          -0.4517556589999482f,
145
63.8M
          -0.3046847507248690f,
146
63.8M
          0.3017929516615495f,
147
63.8M
          0.4082482904638627f,
148
63.8M
          0.1747866975480809f,
149
63.8M
          -0.2110560104933578f,
150
63.8M
          -0.1426608480880726f,
151
63.8M
          -0.1381354035075859f,
152
63.8M
          -0.1743760259965107f,
153
63.8M
          0.1135498731499434f,
154
63.8M
      },
155
63.8M
      {
156
63.8M
          0.2500000000000000,
157
63.8M
          -0.1014005039375375f,
158
63.8M
          0.4444481661973445f,
159
63.8M
          0.3085497062849767f,
160
63.8M
          0.0000000000000000f,
161
63.8M
          -0.0643507165794627f,
162
63.8M
          0.1585450355184006f,
163
63.8M
          0.5112616136591823f,
164
63.8M
          0.2579236279634118f,
165
63.8M
          0.0000000000000000,
166
63.8M
          0.0812611176717539f,
167
63.8M
          0.1856718091610980f,
168
63.8M
          -0.3416446842253372f,
169
63.8M
          0.3302282550303788f,
170
63.8M
          0.0702790691196284f,
171
63.8M
          -0.0741750459581035f,
172
63.8M
      },
173
63.8M
      {
174
63.8M
          0.2500000000000000,
175
63.8M
          0.2206518106944236f,
176
63.8M
          0.0000000000000000,
177
63.8M
          0.0000000000000000,
178
63.8M
          0.7071067811865476f,
179
63.8M
          0.6235485373547694f,
180
63.8M
          0.0000000000000000,
181
63.8M
          0.0000000000000000,
182
63.8M
          0.0000000000000000,
183
63.8M
          0.0000000000000000,
184
63.8M
          0.0000000000000000,
185
63.8M
          0.0000000000000000,
186
63.8M
          0.0000000000000000,
187
63.8M
          0.0000000000000000,
188
63.8M
          0.0000000000000000,
189
63.8M
          0.0000000000000000,
190
63.8M
      },
191
63.8M
      {
192
63.8M
          0.2500000000000000,
193
63.8M
          -0.1014005039375378f,
194
63.8M
          0.0000000000000000,
195
63.8M
          0.4706702258572536f,
196
63.8M
          0.0000000000000000,
197
63.8M
          -0.0643507165794628f,
198
63.8M
          -0.0403851516082220f,
199
63.8M
          0.0000000000000000,
200
63.8M
          0.1627234014286620f,
201
63.8M
          0.0000000000000000,
202
63.8M
          0.0000000000000000,
203
63.8M
          0.0000000000000000,
204
63.8M
          0.7367497537172237f,
205
63.8M
          0.0875511500058708f,
206
63.8M
          -0.2921026642334881f,
207
63.8M
          0.1940289303259434f,
208
63.8M
      },
209
63.8M
      {
210
63.8M
          0.2500000000000000,
211
63.8M
          -0.1014005039375377f,
212
63.8M
          0.1957439937204294f,
213
63.8M
          -0.1621205195722993f,
214
63.8M
          0.0000000000000000,
215
63.8M
          -0.0643507165794628f,
216
63.8M
          0.0074182263792424f,
217
63.8M
          -0.2904801297289980f,
218
63.8M
          0.0952002265347504f,
219
63.8M
          0.0000000000000000,
220
63.8M
          -0.3675398009862027f,
221
63.8M
          0.4921585901373873f,
222
63.8M
          0.2462710772207515f,
223
63.8M
          -0.0794670660590957f,
224
63.8M
          0.3623817333531167f,
225
63.8M
          -0.4351904965232280f,
226
63.8M
      },
227
63.8M
      {
228
63.8M
          0.2500000000000000,
229
63.8M
          -0.1014005039375376f,
230
63.8M
          0.2929100136981264f,
231
63.8M
          0.0000000000000000,
232
63.8M
          0.0000000000000000,
233
63.8M
          -0.0643507165794627f,
234
63.8M
          0.3935103426921017f,
235
63.8M
          -0.0657870154914280f,
236
63.8M
          0.0000000000000000,
237
63.8M
          -0.4082482904638628f,
238
63.8M
          -0.3078822139579090f,
239
63.8M
          -0.3852501370925192f,
240
63.8M
          -0.0857401903551931f,
241
63.8M
          -0.4613374887461511f,
242
63.8M
          0.0000000000000000,
243
63.8M
          0.2191868483885747f,
244
63.8M
      },
245
63.8M
      {
246
63.8M
          0.2500000000000000,
247
63.8M
          -0.1014005039375376f,
248
63.8M
          -0.4067007583026072f,
249
63.8M
          -0.2125574805828705f,
250
63.8M
          0.0000000000000000,
251
63.8M
          -0.0643507165794627f,
252
63.8M
          -0.4517556589999464f,
253
63.8M
          0.3046847507248840f,
254
63.8M
          0.3017929516615503f,
255
63.8M
          -0.4082482904638635f,
256
63.8M
          -0.1747866975480813f,
257
63.8M
          0.2110560104933581f,
258
63.8M
          -0.1426608480880734f,
259
63.8M
          -0.1381354035075829f,
260
63.8M
          -0.1743760259965108f,
261
63.8M
          0.1135498731499426f,
262
63.8M
      },
263
63.8M
      {
264
63.8M
          0.2500000000000000,
265
63.8M
          -0.1014005039375377f,
266
63.8M
          -0.1957439937204287f,
267
63.8M
          -0.1621205195722833f,
268
63.8M
          0.0000000000000000,
269
63.8M
          -0.0643507165794628f,
270
63.8M
          0.0074182263792444f,
271
63.8M
          0.2904801297290076f,
272
63.8M
          0.0952002265347505f,
273
63.8M
          0.0000000000000000,
274
63.8M
          0.3675398009862011f,
275
63.8M
          -0.4921585901373891f,
276
63.8M
          0.2462710772207514f,
277
63.8M
          -0.0794670660591026f,
278
63.8M
          0.3623817333531165f,
279
63.8M
          -0.4351904965232251f,
280
63.8M
      },
281
63.8M
      {
282
63.8M
          0.2500000000000000,
283
63.8M
          -0.1014005039375375f,
284
63.8M
          0.0000000000000000,
285
63.8M
          -0.4706702258572528f,
286
63.8M
          0.0000000000000000,
287
63.8M
          -0.0643507165794627f,
288
63.8M
          0.1107416575309343f,
289
63.8M
          0.0000000000000000,
290
63.8M
          -0.1627234014286617f,
291
63.8M
          0.0000000000000000,
292
63.8M
          0.0000000000000000,
293
63.8M
          0.0000000000000000,
294
63.8M
          0.1488339922711357f,
295
63.8M
          0.4972464710953509f,
296
63.8M
          0.2921026642334879f,
297
63.8M
          0.5550443808910661f,
298
63.8M
      },
299
63.8M
      {
300
63.8M
          0.2500000000000000,
301
63.8M
          -0.1014005039375377f,
302
63.8M
          0.1137907446044809f,
303
63.8M
          -0.1464291867126764f,
304
63.8M
          0.0000000000000000,
305
63.8M
          -0.0643507165794628f,
306
63.8M
          0.0829816309488205f,
307
63.8M
          -0.2388977352334460f,
308
63.8M
          -0.3531238544981630f,
309
63.8M
          -0.4082482904638630f,
310
63.8M
          0.4826689115059883f,
311
63.8M
          0.1741941265991622f,
312
63.8M
          -0.0476868035022925f,
313
63.8M
          0.1253805944856366f,
314
63.8M
          -0.4326608024727445f,
315
63.8M
          -0.2546827712406646f,
316
63.8M
      },
317
63.8M
      {
318
63.8M
          0.2500000000000000,
319
63.8M
          -0.1014005039375377f,
320
63.8M
          -0.4444481661973438f,
321
63.8M
          0.3085497062849487f,
322
63.8M
          0.0000000000000000,
323
63.8M
          -0.0643507165794628f,
324
63.8M
          0.1585450355183970f,
325
63.8M
          -0.5112616136592012f,
326
63.8M
          0.2579236279634129f,
327
63.8M
          0.0000000000000000,
328
63.8M
          -0.0812611176717504f,
329
63.8M
          -0.1856718091610990f,
330
63.8M
          -0.3416446842253373f,
331
63.8M
          0.3302282550303805f,
332
63.8M
          0.0702790691196282f,
333
63.8M
          -0.0741750459581023f,
334
63.8M
      },
335
63.8M
      {
336
63.8M
          0.2500000000000000,
337
63.8M
          -0.1014005039375376f,
338
63.8M
          -0.2929100136981264f,
339
63.8M
          0.0000000000000000,
340
63.8M
          0.0000000000000000,
341
63.8M
          -0.0643507165794627f,
342
63.8M
          0.3935103426921022f,
343
63.8M
          0.0657870154914254f,
344
63.8M
          0.0000000000000000,
345
63.8M
          0.4082482904638634f,
346
63.8M
          0.3078822139579031f,
347
63.8M
          0.3852501370925211f,
348
63.8M
          -0.0857401903551927f,
349
63.8M
          -0.4613374887461554f,
350
63.8M
          0.0000000000000000,
351
63.8M
          0.2191868483885728f,
352
63.8M
      },
353
63.8M
      {
354
63.8M
          0.2500000000000000,
355
63.8M
          -0.1014005039375376f,
356
63.8M
          -0.1137907446044814f,
357
63.8M
          -0.1464291867126654f,
358
63.8M
          0.0000000000000000,
359
63.8M
          -0.0643507165794627f,
360
63.8M
          0.0829816309488214f,
361
63.8M
          0.2388977352334547f,
362
63.8M
          -0.3531238544981624f,
363
63.8M
          0.4082482904638630f,
364
63.8M
          -0.4826689115059858f,
365
63.8M
          -0.1741941265991621f,
366
63.8M
          -0.0476868035022928f,
367
63.8M
          0.1253805944856431f,
368
63.8M
          -0.4326608024727457f,
369
63.8M
          -0.2546827712406641f,
370
63.8M
      },
371
63.8M
      {
372
63.8M
          0.2500000000000000,
373
63.8M
          -0.1014005039375374f,
374
63.8M
          0.0000000000000000,
375
63.8M
          0.4251149611657548f,
376
63.8M
          0.0000000000000000,
377
63.8M
          -0.0643507165794626f,
378
63.8M
          -0.4517556589999480f,
379
63.8M
          0.0000000000000000,
380
63.8M
          -0.6035859033230976f,
381
63.8M
          0.0000000000000000,
382
63.8M
          0.0000000000000000,
383
63.8M
          0.0000000000000000,
384
63.8M
          -0.1426608480880724f,
385
63.8M
          -0.1381354035075845f,
386
63.8M
          0.3487520519930227f,
387
63.8M
          0.1135498731499429f,
388
63.8M
      },
389
63.8M
  };
390
391
63.8M
  const HWY_CAPPED(float, 16) d;
392
191M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
127M
    auto scalar = Zero(d);
394
2.16G
    for (size_t j = 0; j < 16; j++) {
395
2.04G
      auto px = Set(d, pixels[j]);
396
2.04G
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
2.04G
      scalar = MulAdd(px, basis, scalar);
398
2.04G
    }
399
127M
    Store(scalar, d, coeffs + i);
400
127M
  }
401
63.8M
}
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
334k
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
334k
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
334k
      {
102
334k
          0.2500000000000000,
103
334k
          0.8769029297991420f,
104
334k
          0.0000000000000000,
105
334k
          0.0000000000000000,
106
334k
          0.0000000000000000,
107
334k
          -0.4105377591765233f,
108
334k
          0.0000000000000000,
109
334k
          0.0000000000000000,
110
334k
          0.0000000000000000,
111
334k
          0.0000000000000000,
112
334k
          0.0000000000000000,
113
334k
          0.0000000000000000,
114
334k
          0.0000000000000000,
115
334k
          0.0000000000000000,
116
334k
          0.0000000000000000,
117
334k
          0.0000000000000000,
118
334k
      },
119
334k
      {
120
334k
          0.2500000000000000,
121
334k
          0.2206518106944235f,
122
334k
          0.0000000000000000,
123
334k
          0.0000000000000000,
124
334k
          -0.7071067811865474f,
125
334k
          0.6235485373547691f,
126
334k
          0.0000000000000000,
127
334k
          0.0000000000000000,
128
334k
          0.0000000000000000,
129
334k
          0.0000000000000000,
130
334k
          0.0000000000000000,
131
334k
          0.0000000000000000,
132
334k
          0.0000000000000000,
133
334k
          0.0000000000000000,
134
334k
          0.0000000000000000,
135
334k
          0.0000000000000000,
136
334k
      },
137
334k
      {
138
334k
          0.2500000000000000,
139
334k
          -0.1014005039375376f,
140
334k
          0.4067007583026075f,
141
334k
          -0.2125574805828875f,
142
334k
          0.0000000000000000,
143
334k
          -0.0643507165794627f,
144
334k
          -0.4517556589999482f,
145
334k
          -0.3046847507248690f,
146
334k
          0.3017929516615495f,
147
334k
          0.4082482904638627f,
148
334k
          0.1747866975480809f,
149
334k
          -0.2110560104933578f,
150
334k
          -0.1426608480880726f,
151
334k
          -0.1381354035075859f,
152
334k
          -0.1743760259965107f,
153
334k
          0.1135498731499434f,
154
334k
      },
155
334k
      {
156
334k
          0.2500000000000000,
157
334k
          -0.1014005039375375f,
158
334k
          0.4444481661973445f,
159
334k
          0.3085497062849767f,
160
334k
          0.0000000000000000f,
161
334k
          -0.0643507165794627f,
162
334k
          0.1585450355184006f,
163
334k
          0.5112616136591823f,
164
334k
          0.2579236279634118f,
165
334k
          0.0000000000000000,
166
334k
          0.0812611176717539f,
167
334k
          0.1856718091610980f,
168
334k
          -0.3416446842253372f,
169
334k
          0.3302282550303788f,
170
334k
          0.0702790691196284f,
171
334k
          -0.0741750459581035f,
172
334k
      },
173
334k
      {
174
334k
          0.2500000000000000,
175
334k
          0.2206518106944236f,
176
334k
          0.0000000000000000,
177
334k
          0.0000000000000000,
178
334k
          0.7071067811865476f,
179
334k
          0.6235485373547694f,
180
334k
          0.0000000000000000,
181
334k
          0.0000000000000000,
182
334k
          0.0000000000000000,
183
334k
          0.0000000000000000,
184
334k
          0.0000000000000000,
185
334k
          0.0000000000000000,
186
334k
          0.0000000000000000,
187
334k
          0.0000000000000000,
188
334k
          0.0000000000000000,
189
334k
          0.0000000000000000,
190
334k
      },
191
334k
      {
192
334k
          0.2500000000000000,
193
334k
          -0.1014005039375378f,
194
334k
          0.0000000000000000,
195
334k
          0.4706702258572536f,
196
334k
          0.0000000000000000,
197
334k
          -0.0643507165794628f,
198
334k
          -0.0403851516082220f,
199
334k
          0.0000000000000000,
200
334k
          0.1627234014286620f,
201
334k
          0.0000000000000000,
202
334k
          0.0000000000000000,
203
334k
          0.0000000000000000,
204
334k
          0.7367497537172237f,
205
334k
          0.0875511500058708f,
206
334k
          -0.2921026642334881f,
207
334k
          0.1940289303259434f,
208
334k
      },
209
334k
      {
210
334k
          0.2500000000000000,
211
334k
          -0.1014005039375377f,
212
334k
          0.1957439937204294f,
213
334k
          -0.1621205195722993f,
214
334k
          0.0000000000000000,
215
334k
          -0.0643507165794628f,
216
334k
          0.0074182263792424f,
217
334k
          -0.2904801297289980f,
218
334k
          0.0952002265347504f,
219
334k
          0.0000000000000000,
220
334k
          -0.3675398009862027f,
221
334k
          0.4921585901373873f,
222
334k
          0.2462710772207515f,
223
334k
          -0.0794670660590957f,
224
334k
          0.3623817333531167f,
225
334k
          -0.4351904965232280f,
226
334k
      },
227
334k
      {
228
334k
          0.2500000000000000,
229
334k
          -0.1014005039375376f,
230
334k
          0.2929100136981264f,
231
334k
          0.0000000000000000,
232
334k
          0.0000000000000000,
233
334k
          -0.0643507165794627f,
234
334k
          0.3935103426921017f,
235
334k
          -0.0657870154914280f,
236
334k
          0.0000000000000000,
237
334k
          -0.4082482904638628f,
238
334k
          -0.3078822139579090f,
239
334k
          -0.3852501370925192f,
240
334k
          -0.0857401903551931f,
241
334k
          -0.4613374887461511f,
242
334k
          0.0000000000000000,
243
334k
          0.2191868483885747f,
244
334k
      },
245
334k
      {
246
334k
          0.2500000000000000,
247
334k
          -0.1014005039375376f,
248
334k
          -0.4067007583026072f,
249
334k
          -0.2125574805828705f,
250
334k
          0.0000000000000000,
251
334k
          -0.0643507165794627f,
252
334k
          -0.4517556589999464f,
253
334k
          0.3046847507248840f,
254
334k
          0.3017929516615503f,
255
334k
          -0.4082482904638635f,
256
334k
          -0.1747866975480813f,
257
334k
          0.2110560104933581f,
258
334k
          -0.1426608480880734f,
259
334k
          -0.1381354035075829f,
260
334k
          -0.1743760259965108f,
261
334k
          0.1135498731499426f,
262
334k
      },
263
334k
      {
264
334k
          0.2500000000000000,
265
334k
          -0.1014005039375377f,
266
334k
          -0.1957439937204287f,
267
334k
          -0.1621205195722833f,
268
334k
          0.0000000000000000,
269
334k
          -0.0643507165794628f,
270
334k
          0.0074182263792444f,
271
334k
          0.2904801297290076f,
272
334k
          0.0952002265347505f,
273
334k
          0.0000000000000000,
274
334k
          0.3675398009862011f,
275
334k
          -0.4921585901373891f,
276
334k
          0.2462710772207514f,
277
334k
          -0.0794670660591026f,
278
334k
          0.3623817333531165f,
279
334k
          -0.4351904965232251f,
280
334k
      },
281
334k
      {
282
334k
          0.2500000000000000,
283
334k
          -0.1014005039375375f,
284
334k
          0.0000000000000000,
285
334k
          -0.4706702258572528f,
286
334k
          0.0000000000000000,
287
334k
          -0.0643507165794627f,
288
334k
          0.1107416575309343f,
289
334k
          0.0000000000000000,
290
334k
          -0.1627234014286617f,
291
334k
          0.0000000000000000,
292
334k
          0.0000000000000000,
293
334k
          0.0000000000000000,
294
334k
          0.1488339922711357f,
295
334k
          0.4972464710953509f,
296
334k
          0.2921026642334879f,
297
334k
          0.5550443808910661f,
298
334k
      },
299
334k
      {
300
334k
          0.2500000000000000,
301
334k
          -0.1014005039375377f,
302
334k
          0.1137907446044809f,
303
334k
          -0.1464291867126764f,
304
334k
          0.0000000000000000,
305
334k
          -0.0643507165794628f,
306
334k
          0.0829816309488205f,
307
334k
          -0.2388977352334460f,
308
334k
          -0.3531238544981630f,
309
334k
          -0.4082482904638630f,
310
334k
          0.4826689115059883f,
311
334k
          0.1741941265991622f,
312
334k
          -0.0476868035022925f,
313
334k
          0.1253805944856366f,
314
334k
          -0.4326608024727445f,
315
334k
          -0.2546827712406646f,
316
334k
      },
317
334k
      {
318
334k
          0.2500000000000000,
319
334k
          -0.1014005039375377f,
320
334k
          -0.4444481661973438f,
321
334k
          0.3085497062849487f,
322
334k
          0.0000000000000000,
323
334k
          -0.0643507165794628f,
324
334k
          0.1585450355183970f,
325
334k
          -0.5112616136592012f,
326
334k
          0.2579236279634129f,
327
334k
          0.0000000000000000,
328
334k
          -0.0812611176717504f,
329
334k
          -0.1856718091610990f,
330
334k
          -0.3416446842253373f,
331
334k
          0.3302282550303805f,
332
334k
          0.0702790691196282f,
333
334k
          -0.0741750459581023f,
334
334k
      },
335
334k
      {
336
334k
          0.2500000000000000,
337
334k
          -0.1014005039375376f,
338
334k
          -0.2929100136981264f,
339
334k
          0.0000000000000000,
340
334k
          0.0000000000000000,
341
334k
          -0.0643507165794627f,
342
334k
          0.3935103426921022f,
343
334k
          0.0657870154914254f,
344
334k
          0.0000000000000000,
345
334k
          0.4082482904638634f,
346
334k
          0.3078822139579031f,
347
334k
          0.3852501370925211f,
348
334k
          -0.0857401903551927f,
349
334k
          -0.4613374887461554f,
350
334k
          0.0000000000000000,
351
334k
          0.2191868483885728f,
352
334k
      },
353
334k
      {
354
334k
          0.2500000000000000,
355
334k
          -0.1014005039375376f,
356
334k
          -0.1137907446044814f,
357
334k
          -0.1464291867126654f,
358
334k
          0.0000000000000000,
359
334k
          -0.0643507165794627f,
360
334k
          0.0829816309488214f,
361
334k
          0.2388977352334547f,
362
334k
          -0.3531238544981624f,
363
334k
          0.4082482904638630f,
364
334k
          -0.4826689115059858f,
365
334k
          -0.1741941265991621f,
366
334k
          -0.0476868035022928f,
367
334k
          0.1253805944856431f,
368
334k
          -0.4326608024727457f,
369
334k
          -0.2546827712406641f,
370
334k
      },
371
334k
      {
372
334k
          0.2500000000000000,
373
334k
          -0.1014005039375374f,
374
334k
          0.0000000000000000,
375
334k
          0.4251149611657548f,
376
334k
          0.0000000000000000,
377
334k
          -0.0643507165794626f,
378
334k
          -0.4517556589999480f,
379
334k
          0.0000000000000000,
380
334k
          -0.6035859033230976f,
381
334k
          0.0000000000000000,
382
334k
          0.0000000000000000,
383
334k
          0.0000000000000000,
384
334k
          -0.1426608480880724f,
385
334k
          -0.1381354035075845f,
386
334k
          0.3487520519930227f,
387
334k
          0.1135498731499429f,
388
334k
      },
389
334k
  };
390
391
334k
  const HWY_CAPPED(float, 16) d;
392
1.00M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
668k
    auto scalar = Zero(d);
394
11.3M
    for (size_t j = 0; j < 16; j++) {
395
10.7M
      auto px = Set(d, pixels[j]);
396
10.7M
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
10.7M
      scalar = MulAdd(px, basis, scalar);
398
10.7M
    }
399
668k
    Store(scalar, d, coeffs + i);
400
668k
  }
401
334k
}
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
334k
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
334k
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
334k
      {
102
334k
          0.2500000000000000,
103
334k
          0.8769029297991420f,
104
334k
          0.0000000000000000,
105
334k
          0.0000000000000000,
106
334k
          0.0000000000000000,
107
334k
          -0.4105377591765233f,
108
334k
          0.0000000000000000,
109
334k
          0.0000000000000000,
110
334k
          0.0000000000000000,
111
334k
          0.0000000000000000,
112
334k
          0.0000000000000000,
113
334k
          0.0000000000000000,
114
334k
          0.0000000000000000,
115
334k
          0.0000000000000000,
116
334k
          0.0000000000000000,
117
334k
          0.0000000000000000,
118
334k
      },
119
334k
      {
120
334k
          0.2500000000000000,
121
334k
          0.2206518106944235f,
122
334k
          0.0000000000000000,
123
334k
          0.0000000000000000,
124
334k
          -0.7071067811865474f,
125
334k
          0.6235485373547691f,
126
334k
          0.0000000000000000,
127
334k
          0.0000000000000000,
128
334k
          0.0000000000000000,
129
334k
          0.0000000000000000,
130
334k
          0.0000000000000000,
131
334k
          0.0000000000000000,
132
334k
          0.0000000000000000,
133
334k
          0.0000000000000000,
134
334k
          0.0000000000000000,
135
334k
          0.0000000000000000,
136
334k
      },
137
334k
      {
138
334k
          0.2500000000000000,
139
334k
          -0.1014005039375376f,
140
334k
          0.4067007583026075f,
141
334k
          -0.2125574805828875f,
142
334k
          0.0000000000000000,
143
334k
          -0.0643507165794627f,
144
334k
          -0.4517556589999482f,
145
334k
          -0.3046847507248690f,
146
334k
          0.3017929516615495f,
147
334k
          0.4082482904638627f,
148
334k
          0.1747866975480809f,
149
334k
          -0.2110560104933578f,
150
334k
          -0.1426608480880726f,
151
334k
          -0.1381354035075859f,
152
334k
          -0.1743760259965107f,
153
334k
          0.1135498731499434f,
154
334k
      },
155
334k
      {
156
334k
          0.2500000000000000,
157
334k
          -0.1014005039375375f,
158
334k
          0.4444481661973445f,
159
334k
          0.3085497062849767f,
160
334k
          0.0000000000000000f,
161
334k
          -0.0643507165794627f,
162
334k
          0.1585450355184006f,
163
334k
          0.5112616136591823f,
164
334k
          0.2579236279634118f,
165
334k
          0.0000000000000000,
166
334k
          0.0812611176717539f,
167
334k
          0.1856718091610980f,
168
334k
          -0.3416446842253372f,
169
334k
          0.3302282550303788f,
170
334k
          0.0702790691196284f,
171
334k
          -0.0741750459581035f,
172
334k
      },
173
334k
      {
174
334k
          0.2500000000000000,
175
334k
          0.2206518106944236f,
176
334k
          0.0000000000000000,
177
334k
          0.0000000000000000,
178
334k
          0.7071067811865476f,
179
334k
          0.6235485373547694f,
180
334k
          0.0000000000000000,
181
334k
          0.0000000000000000,
182
334k
          0.0000000000000000,
183
334k
          0.0000000000000000,
184
334k
          0.0000000000000000,
185
334k
          0.0000000000000000,
186
334k
          0.0000000000000000,
187
334k
          0.0000000000000000,
188
334k
          0.0000000000000000,
189
334k
          0.0000000000000000,
190
334k
      },
191
334k
      {
192
334k
          0.2500000000000000,
193
334k
          -0.1014005039375378f,
194
334k
          0.0000000000000000,
195
334k
          0.4706702258572536f,
196
334k
          0.0000000000000000,
197
334k
          -0.0643507165794628f,
198
334k
          -0.0403851516082220f,
199
334k
          0.0000000000000000,
200
334k
          0.1627234014286620f,
201
334k
          0.0000000000000000,
202
334k
          0.0000000000000000,
203
334k
          0.0000000000000000,
204
334k
          0.7367497537172237f,
205
334k
          0.0875511500058708f,
206
334k
          -0.2921026642334881f,
207
334k
          0.1940289303259434f,
208
334k
      },
209
334k
      {
210
334k
          0.2500000000000000,
211
334k
          -0.1014005039375377f,
212
334k
          0.1957439937204294f,
213
334k
          -0.1621205195722993f,
214
334k
          0.0000000000000000,
215
334k
          -0.0643507165794628f,
216
334k
          0.0074182263792424f,
217
334k
          -0.2904801297289980f,
218
334k
          0.0952002265347504f,
219
334k
          0.0000000000000000,
220
334k
          -0.3675398009862027f,
221
334k
          0.4921585901373873f,
222
334k
          0.2462710772207515f,
223
334k
          -0.0794670660590957f,
224
334k
          0.3623817333531167f,
225
334k
          -0.4351904965232280f,
226
334k
      },
227
334k
      {
228
334k
          0.2500000000000000,
229
334k
          -0.1014005039375376f,
230
334k
          0.2929100136981264f,
231
334k
          0.0000000000000000,
232
334k
          0.0000000000000000,
233
334k
          -0.0643507165794627f,
234
334k
          0.3935103426921017f,
235
334k
          -0.0657870154914280f,
236
334k
          0.0000000000000000,
237
334k
          -0.4082482904638628f,
238
334k
          -0.3078822139579090f,
239
334k
          -0.3852501370925192f,
240
334k
          -0.0857401903551931f,
241
334k
          -0.4613374887461511f,
242
334k
          0.0000000000000000,
243
334k
          0.2191868483885747f,
244
334k
      },
245
334k
      {
246
334k
          0.2500000000000000,
247
334k
          -0.1014005039375376f,
248
334k
          -0.4067007583026072f,
249
334k
          -0.2125574805828705f,
250
334k
          0.0000000000000000,
251
334k
          -0.0643507165794627f,
252
334k
          -0.4517556589999464f,
253
334k
          0.3046847507248840f,
254
334k
          0.3017929516615503f,
255
334k
          -0.4082482904638635f,
256
334k
          -0.1747866975480813f,
257
334k
          0.2110560104933581f,
258
334k
          -0.1426608480880734f,
259
334k
          -0.1381354035075829f,
260
334k
          -0.1743760259965108f,
261
334k
          0.1135498731499426f,
262
334k
      },
263
334k
      {
264
334k
          0.2500000000000000,
265
334k
          -0.1014005039375377f,
266
334k
          -0.1957439937204287f,
267
334k
          -0.1621205195722833f,
268
334k
          0.0000000000000000,
269
334k
          -0.0643507165794628f,
270
334k
          0.0074182263792444f,
271
334k
          0.2904801297290076f,
272
334k
          0.0952002265347505f,
273
334k
          0.0000000000000000,
274
334k
          0.3675398009862011f,
275
334k
          -0.4921585901373891f,
276
334k
          0.2462710772207514f,
277
334k
          -0.0794670660591026f,
278
334k
          0.3623817333531165f,
279
334k
          -0.4351904965232251f,
280
334k
      },
281
334k
      {
282
334k
          0.2500000000000000,
283
334k
          -0.1014005039375375f,
284
334k
          0.0000000000000000,
285
334k
          -0.4706702258572528f,
286
334k
          0.0000000000000000,
287
334k
          -0.0643507165794627f,
288
334k
          0.1107416575309343f,
289
334k
          0.0000000000000000,
290
334k
          -0.1627234014286617f,
291
334k
          0.0000000000000000,
292
334k
          0.0000000000000000,
293
334k
          0.0000000000000000,
294
334k
          0.1488339922711357f,
295
334k
          0.4972464710953509f,
296
334k
          0.2921026642334879f,
297
334k
          0.5550443808910661f,
298
334k
      },
299
334k
      {
300
334k
          0.2500000000000000,
301
334k
          -0.1014005039375377f,
302
334k
          0.1137907446044809f,
303
334k
          -0.1464291867126764f,
304
334k
          0.0000000000000000,
305
334k
          -0.0643507165794628f,
306
334k
          0.0829816309488205f,
307
334k
          -0.2388977352334460f,
308
334k
          -0.3531238544981630f,
309
334k
          -0.4082482904638630f,
310
334k
          0.4826689115059883f,
311
334k
          0.1741941265991622f,
312
334k
          -0.0476868035022925f,
313
334k
          0.1253805944856366f,
314
334k
          -0.4326608024727445f,
315
334k
          -0.2546827712406646f,
316
334k
      },
317
334k
      {
318
334k
          0.2500000000000000,
319
334k
          -0.1014005039375377f,
320
334k
          -0.4444481661973438f,
321
334k
          0.3085497062849487f,
322
334k
          0.0000000000000000,
323
334k
          -0.0643507165794628f,
324
334k
          0.1585450355183970f,
325
334k
          -0.5112616136592012f,
326
334k
          0.2579236279634129f,
327
334k
          0.0000000000000000,
328
334k
          -0.0812611176717504f,
329
334k
          -0.1856718091610990f,
330
334k
          -0.3416446842253373f,
331
334k
          0.3302282550303805f,
332
334k
          0.0702790691196282f,
333
334k
          -0.0741750459581023f,
334
334k
      },
335
334k
      {
336
334k
          0.2500000000000000,
337
334k
          -0.1014005039375376f,
338
334k
          -0.2929100136981264f,
339
334k
          0.0000000000000000,
340
334k
          0.0000000000000000,
341
334k
          -0.0643507165794627f,
342
334k
          0.3935103426921022f,
343
334k
          0.0657870154914254f,
344
334k
          0.0000000000000000,
345
334k
          0.4082482904638634f,
346
334k
          0.3078822139579031f,
347
334k
          0.3852501370925211f,
348
334k
          -0.0857401903551927f,
349
334k
          -0.4613374887461554f,
350
334k
          0.0000000000000000,
351
334k
          0.2191868483885728f,
352
334k
      },
353
334k
      {
354
334k
          0.2500000000000000,
355
334k
          -0.1014005039375376f,
356
334k
          -0.1137907446044814f,
357
334k
          -0.1464291867126654f,
358
334k
          0.0000000000000000,
359
334k
          -0.0643507165794627f,
360
334k
          0.0829816309488214f,
361
334k
          0.2388977352334547f,
362
334k
          -0.3531238544981624f,
363
334k
          0.4082482904638630f,
364
334k
          -0.4826689115059858f,
365
334k
          -0.1741941265991621f,
366
334k
          -0.0476868035022928f,
367
334k
          0.1253805944856431f,
368
334k
          -0.4326608024727457f,
369
334k
          -0.2546827712406641f,
370
334k
      },
371
334k
      {
372
334k
          0.2500000000000000,
373
334k
          -0.1014005039375374f,
374
334k
          0.0000000000000000,
375
334k
          0.4251149611657548f,
376
334k
          0.0000000000000000,
377
334k
          -0.0643507165794626f,
378
334k
          -0.4517556589999480f,
379
334k
          0.0000000000000000,
380
334k
          -0.6035859033230976f,
381
334k
          0.0000000000000000,
382
334k
          0.0000000000000000,
383
334k
          0.0000000000000000,
384
334k
          -0.1426608480880724f,
385
334k
          -0.1381354035075845f,
386
334k
          0.3487520519930227f,
387
334k
          0.1135498731499429f,
388
334k
      },
389
334k
  };
390
391
334k
  const HWY_CAPPED(float, 16) d;
392
1.00M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
668k
    auto scalar = Zero(d);
394
11.3M
    for (size_t j = 0; j < 16; j++) {
395
10.7M
      auto px = Set(d, pixels[j]);
396
10.7M
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
10.7M
      scalar = MulAdd(px, basis, scalar);
398
10.7M
    }
399
668k
    Store(scalar, d, coeffs + i);
400
668k
  }
401
334k
}
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
63.1M
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
63.1M
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
63.1M
      {
102
63.1M
          0.2500000000000000,
103
63.1M
          0.8769029297991420f,
104
63.1M
          0.0000000000000000,
105
63.1M
          0.0000000000000000,
106
63.1M
          0.0000000000000000,
107
63.1M
          -0.4105377591765233f,
108
63.1M
          0.0000000000000000,
109
63.1M
          0.0000000000000000,
110
63.1M
          0.0000000000000000,
111
63.1M
          0.0000000000000000,
112
63.1M
          0.0000000000000000,
113
63.1M
          0.0000000000000000,
114
63.1M
          0.0000000000000000,
115
63.1M
          0.0000000000000000,
116
63.1M
          0.0000000000000000,
117
63.1M
          0.0000000000000000,
118
63.1M
      },
119
63.1M
      {
120
63.1M
          0.2500000000000000,
121
63.1M
          0.2206518106944235f,
122
63.1M
          0.0000000000000000,
123
63.1M
          0.0000000000000000,
124
63.1M
          -0.7071067811865474f,
125
63.1M
          0.6235485373547691f,
126
63.1M
          0.0000000000000000,
127
63.1M
          0.0000000000000000,
128
63.1M
          0.0000000000000000,
129
63.1M
          0.0000000000000000,
130
63.1M
          0.0000000000000000,
131
63.1M
          0.0000000000000000,
132
63.1M
          0.0000000000000000,
133
63.1M
          0.0000000000000000,
134
63.1M
          0.0000000000000000,
135
63.1M
          0.0000000000000000,
136
63.1M
      },
137
63.1M
      {
138
63.1M
          0.2500000000000000,
139
63.1M
          -0.1014005039375376f,
140
63.1M
          0.4067007583026075f,
141
63.1M
          -0.2125574805828875f,
142
63.1M
          0.0000000000000000,
143
63.1M
          -0.0643507165794627f,
144
63.1M
          -0.4517556589999482f,
145
63.1M
          -0.3046847507248690f,
146
63.1M
          0.3017929516615495f,
147
63.1M
          0.4082482904638627f,
148
63.1M
          0.1747866975480809f,
149
63.1M
          -0.2110560104933578f,
150
63.1M
          -0.1426608480880726f,
151
63.1M
          -0.1381354035075859f,
152
63.1M
          -0.1743760259965107f,
153
63.1M
          0.1135498731499434f,
154
63.1M
      },
155
63.1M
      {
156
63.1M
          0.2500000000000000,
157
63.1M
          -0.1014005039375375f,
158
63.1M
          0.4444481661973445f,
159
63.1M
          0.3085497062849767f,
160
63.1M
          0.0000000000000000f,
161
63.1M
          -0.0643507165794627f,
162
63.1M
          0.1585450355184006f,
163
63.1M
          0.5112616136591823f,
164
63.1M
          0.2579236279634118f,
165
63.1M
          0.0000000000000000,
166
63.1M
          0.0812611176717539f,
167
63.1M
          0.1856718091610980f,
168
63.1M
          -0.3416446842253372f,
169
63.1M
          0.3302282550303788f,
170
63.1M
          0.0702790691196284f,
171
63.1M
          -0.0741750459581035f,
172
63.1M
      },
173
63.1M
      {
174
63.1M
          0.2500000000000000,
175
63.1M
          0.2206518106944236f,
176
63.1M
          0.0000000000000000,
177
63.1M
          0.0000000000000000,
178
63.1M
          0.7071067811865476f,
179
63.1M
          0.6235485373547694f,
180
63.1M
          0.0000000000000000,
181
63.1M
          0.0000000000000000,
182
63.1M
          0.0000000000000000,
183
63.1M
          0.0000000000000000,
184
63.1M
          0.0000000000000000,
185
63.1M
          0.0000000000000000,
186
63.1M
          0.0000000000000000,
187
63.1M
          0.0000000000000000,
188
63.1M
          0.0000000000000000,
189
63.1M
          0.0000000000000000,
190
63.1M
      },
191
63.1M
      {
192
63.1M
          0.2500000000000000,
193
63.1M
          -0.1014005039375378f,
194
63.1M
          0.0000000000000000,
195
63.1M
          0.4706702258572536f,
196
63.1M
          0.0000000000000000,
197
63.1M
          -0.0643507165794628f,
198
63.1M
          -0.0403851516082220f,
199
63.1M
          0.0000000000000000,
200
63.1M
          0.1627234014286620f,
201
63.1M
          0.0000000000000000,
202
63.1M
          0.0000000000000000,
203
63.1M
          0.0000000000000000,
204
63.1M
          0.7367497537172237f,
205
63.1M
          0.0875511500058708f,
206
63.1M
          -0.2921026642334881f,
207
63.1M
          0.1940289303259434f,
208
63.1M
      },
209
63.1M
      {
210
63.1M
          0.2500000000000000,
211
63.1M
          -0.1014005039375377f,
212
63.1M
          0.1957439937204294f,
213
63.1M
          -0.1621205195722993f,
214
63.1M
          0.0000000000000000,
215
63.1M
          -0.0643507165794628f,
216
63.1M
          0.0074182263792424f,
217
63.1M
          -0.2904801297289980f,
218
63.1M
          0.0952002265347504f,
219
63.1M
          0.0000000000000000,
220
63.1M
          -0.3675398009862027f,
221
63.1M
          0.4921585901373873f,
222
63.1M
          0.2462710772207515f,
223
63.1M
          -0.0794670660590957f,
224
63.1M
          0.3623817333531167f,
225
63.1M
          -0.4351904965232280f,
226
63.1M
      },
227
63.1M
      {
228
63.1M
          0.2500000000000000,
229
63.1M
          -0.1014005039375376f,
230
63.1M
          0.2929100136981264f,
231
63.1M
          0.0000000000000000,
232
63.1M
          0.0000000000000000,
233
63.1M
          -0.0643507165794627f,
234
63.1M
          0.3935103426921017f,
235
63.1M
          -0.0657870154914280f,
236
63.1M
          0.0000000000000000,
237
63.1M
          -0.4082482904638628f,
238
63.1M
          -0.3078822139579090f,
239
63.1M
          -0.3852501370925192f,
240
63.1M
          -0.0857401903551931f,
241
63.1M
          -0.4613374887461511f,
242
63.1M
          0.0000000000000000,
243
63.1M
          0.2191868483885747f,
244
63.1M
      },
245
63.1M
      {
246
63.1M
          0.2500000000000000,
247
63.1M
          -0.1014005039375376f,
248
63.1M
          -0.4067007583026072f,
249
63.1M
          -0.2125574805828705f,
250
63.1M
          0.0000000000000000,
251
63.1M
          -0.0643507165794627f,
252
63.1M
          -0.4517556589999464f,
253
63.1M
          0.3046847507248840f,
254
63.1M
          0.3017929516615503f,
255
63.1M
          -0.4082482904638635f,
256
63.1M
          -0.1747866975480813f,
257
63.1M
          0.2110560104933581f,
258
63.1M
          -0.1426608480880734f,
259
63.1M
          -0.1381354035075829f,
260
63.1M
          -0.1743760259965108f,
261
63.1M
          0.1135498731499426f,
262
63.1M
      },
263
63.1M
      {
264
63.1M
          0.2500000000000000,
265
63.1M
          -0.1014005039375377f,
266
63.1M
          -0.1957439937204287f,
267
63.1M
          -0.1621205195722833f,
268
63.1M
          0.0000000000000000,
269
63.1M
          -0.0643507165794628f,
270
63.1M
          0.0074182263792444f,
271
63.1M
          0.2904801297290076f,
272
63.1M
          0.0952002265347505f,
273
63.1M
          0.0000000000000000,
274
63.1M
          0.3675398009862011f,
275
63.1M
          -0.4921585901373891f,
276
63.1M
          0.2462710772207514f,
277
63.1M
          -0.0794670660591026f,
278
63.1M
          0.3623817333531165f,
279
63.1M
          -0.4351904965232251f,
280
63.1M
      },
281
63.1M
      {
282
63.1M
          0.2500000000000000,
283
63.1M
          -0.1014005039375375f,
284
63.1M
          0.0000000000000000,
285
63.1M
          -0.4706702258572528f,
286
63.1M
          0.0000000000000000,
287
63.1M
          -0.0643507165794627f,
288
63.1M
          0.1107416575309343f,
289
63.1M
          0.0000000000000000,
290
63.1M
          -0.1627234014286617f,
291
63.1M
          0.0000000000000000,
292
63.1M
          0.0000000000000000,
293
63.1M
          0.0000000000000000,
294
63.1M
          0.1488339922711357f,
295
63.1M
          0.4972464710953509f,
296
63.1M
          0.2921026642334879f,
297
63.1M
          0.5550443808910661f,
298
63.1M
      },
299
63.1M
      {
300
63.1M
          0.2500000000000000,
301
63.1M
          -0.1014005039375377f,
302
63.1M
          0.1137907446044809f,
303
63.1M
          -0.1464291867126764f,
304
63.1M
          0.0000000000000000,
305
63.1M
          -0.0643507165794628f,
306
63.1M
          0.0829816309488205f,
307
63.1M
          -0.2388977352334460f,
308
63.1M
          -0.3531238544981630f,
309
63.1M
          -0.4082482904638630f,
310
63.1M
          0.4826689115059883f,
311
63.1M
          0.1741941265991622f,
312
63.1M
          -0.0476868035022925f,
313
63.1M
          0.1253805944856366f,
314
63.1M
          -0.4326608024727445f,
315
63.1M
          -0.2546827712406646f,
316
63.1M
      },
317
63.1M
      {
318
63.1M
          0.2500000000000000,
319
63.1M
          -0.1014005039375377f,
320
63.1M
          -0.4444481661973438f,
321
63.1M
          0.3085497062849487f,
322
63.1M
          0.0000000000000000,
323
63.1M
          -0.0643507165794628f,
324
63.1M
          0.1585450355183970f,
325
63.1M
          -0.5112616136592012f,
326
63.1M
          0.2579236279634129f,
327
63.1M
          0.0000000000000000,
328
63.1M
          -0.0812611176717504f,
329
63.1M
          -0.1856718091610990f,
330
63.1M
          -0.3416446842253373f,
331
63.1M
          0.3302282550303805f,
332
63.1M
          0.0702790691196282f,
333
63.1M
          -0.0741750459581023f,
334
63.1M
      },
335
63.1M
      {
336
63.1M
          0.2500000000000000,
337
63.1M
          -0.1014005039375376f,
338
63.1M
          -0.2929100136981264f,
339
63.1M
          0.0000000000000000,
340
63.1M
          0.0000000000000000,
341
63.1M
          -0.0643507165794627f,
342
63.1M
          0.3935103426921022f,
343
63.1M
          0.0657870154914254f,
344
63.1M
          0.0000000000000000,
345
63.1M
          0.4082482904638634f,
346
63.1M
          0.3078822139579031f,
347
63.1M
          0.3852501370925211f,
348
63.1M
          -0.0857401903551927f,
349
63.1M
          -0.4613374887461554f,
350
63.1M
          0.0000000000000000,
351
63.1M
          0.2191868483885728f,
352
63.1M
      },
353
63.1M
      {
354
63.1M
          0.2500000000000000,
355
63.1M
          -0.1014005039375376f,
356
63.1M
          -0.1137907446044814f,
357
63.1M
          -0.1464291867126654f,
358
63.1M
          0.0000000000000000,
359
63.1M
          -0.0643507165794627f,
360
63.1M
          0.0829816309488214f,
361
63.1M
          0.2388977352334547f,
362
63.1M
          -0.3531238544981624f,
363
63.1M
          0.4082482904638630f,
364
63.1M
          -0.4826689115059858f,
365
63.1M
          -0.1741941265991621f,
366
63.1M
          -0.0476868035022928f,
367
63.1M
          0.1253805944856431f,
368
63.1M
          -0.4326608024727457f,
369
63.1M
          -0.2546827712406641f,
370
63.1M
      },
371
63.1M
      {
372
63.1M
          0.2500000000000000,
373
63.1M
          -0.1014005039375374f,
374
63.1M
          0.0000000000000000,
375
63.1M
          0.4251149611657548f,
376
63.1M
          0.0000000000000000,
377
63.1M
          -0.0643507165794626f,
378
63.1M
          -0.4517556589999480f,
379
63.1M
          0.0000000000000000,
380
63.1M
          -0.6035859033230976f,
381
63.1M
          0.0000000000000000,
382
63.1M
          0.0000000000000000,
383
63.1M
          0.0000000000000000,
384
63.1M
          -0.1426608480880724f,
385
63.1M
          -0.1381354035075845f,
386
63.1M
          0.3487520519930227f,
387
63.1M
          0.1135498731499429f,
388
63.1M
      },
389
63.1M
  };
390
391
63.1M
  const HWY_CAPPED(float, 16) d;
392
189M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
126M
    auto scalar = Zero(d);
394
2.14G
    for (size_t j = 0; j < 16; j++) {
395
2.02G
      auto px = Set(d, pixels[j]);
396
2.02G
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
2.02G
      scalar = MulAdd(px, basis, scalar);
398
2.02G
    }
399
126M
    Store(scalar, d, coeffs + i);
400
126M
  }
401
63.1M
}
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
63.8M
                            float* JXL_RESTRICT coefficients) {
411
63.8M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
63.8M
  size_t afv_x = afv_kind & 1;
413
63.8M
  size_t afv_y = afv_kind / 2;
414
63.8M
  HWY_ALIGN float block[4 * 8] = {};
415
319M
  for (size_t iy = 0; iy < 4; iy++) {
416
1.27G
    for (size_t ix = 0; ix < 4; ix++) {
417
1.02G
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.02G
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.02G
    }
420
255M
  }
421
  // AFV coefficients in (even, even) positions.
422
63.8M
  HWY_ALIGN float coeff[4 * 4];
423
63.8M
  AFVDCT4x4(block, coeff);
424
319M
  for (size_t iy = 0; iy < 4; iy++) {
425
1.27G
    for (size_t ix = 0; ix < 4; ix++) {
426
1.02G
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.02G
    }
428
255M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
63.8M
  ComputeScaledDCT<4, 4>()(
431
63.8M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
63.8M
              pixels_stride),
433
63.8M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
319M
  for (size_t iy = 0; iy < 4; iy++) {
436
2.29G
    for (size_t ix = 0; ix < 8; ix++) {
437
2.04G
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.04G
    }
439
255M
  }
440
  // 4x8 DCT of the other half of the block.
441
63.8M
  ComputeScaledDCT<4, 8>()(
442
63.8M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
63.8M
      block, scratch_space);
444
319M
  for (size_t iy = 0; iy < 4; iy++) {
445
2.29G
    for (size_t ix = 0; ix < 8; ix++) {
446
2.04G
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.04G
    }
448
255M
  }
449
63.8M
  float block00 = coefficients[0] * 0.25f;
450
63.8M
  float block01 = coefficients[1];
451
63.8M
  float block10 = coefficients[8];
452
63.8M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
63.8M
  coefficients[1] = (block00 - block01) * 0.5f;
454
63.8M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
63.8M
}
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
105k
                            float* JXL_RESTRICT coefficients) {
411
105k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
105k
  size_t afv_x = afv_kind & 1;
413
105k
  size_t afv_y = afv_kind / 2;
414
105k
  HWY_ALIGN float block[4 * 8] = {};
415
525k
  for (size_t iy = 0; iy < 4; iy++) {
416
2.10M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.68M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.68M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.68M
    }
420
420k
  }
421
  // AFV coefficients in (even, even) positions.
422
105k
  HWY_ALIGN float coeff[4 * 4];
423
105k
  AFVDCT4x4(block, coeff);
424
525k
  for (size_t iy = 0; iy < 4; iy++) {
425
2.10M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.68M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.68M
    }
428
420k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
105k
  ComputeScaledDCT<4, 4>()(
431
105k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
105k
              pixels_stride),
433
105k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
525k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.78M
    for (size_t ix = 0; ix < 8; ix++) {
437
3.36M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
3.36M
    }
439
420k
  }
440
  // 4x8 DCT of the other half of the block.
441
105k
  ComputeScaledDCT<4, 8>()(
442
105k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
105k
      block, scratch_space);
444
525k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.78M
    for (size_t ix = 0; ix < 8; ix++) {
446
3.36M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
3.36M
    }
448
420k
  }
449
105k
  float block00 = coefficients[0] * 0.25f;
450
105k
  float block01 = coefficients[1];
451
105k
  float block10 = coefficients[8];
452
105k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
105k
  coefficients[1] = (block00 - block01) * 0.5f;
454
105k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
105k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Line
Count
Source
410
64.0k
                            float* JXL_RESTRICT coefficients) {
411
64.0k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
64.0k
  size_t afv_x = afv_kind & 1;
413
64.0k
  size_t afv_y = afv_kind / 2;
414
64.0k
  HWY_ALIGN float block[4 * 8] = {};
415
320k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.28M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.02M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.02M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.02M
    }
420
256k
  }
421
  // AFV coefficients in (even, even) positions.
422
64.0k
  HWY_ALIGN float coeff[4 * 4];
423
64.0k
  AFVDCT4x4(block, coeff);
424
320k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.28M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.02M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.02M
    }
428
256k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
64.0k
  ComputeScaledDCT<4, 4>()(
431
64.0k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
64.0k
              pixels_stride),
433
64.0k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
320k
  for (size_t iy = 0; iy < 4; iy++) {
436
2.30M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.04M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.04M
    }
439
256k
  }
440
  // 4x8 DCT of the other half of the block.
441
64.0k
  ComputeScaledDCT<4, 8>()(
442
64.0k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
64.0k
      block, scratch_space);
444
320k
  for (size_t iy = 0; iy < 4; iy++) {
445
2.30M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.04M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.04M
    }
448
256k
  }
449
64.0k
  float block00 = coefficients[0] * 0.25f;
450
64.0k
  float block01 = coefficients[1];
451
64.0k
  float block10 = coefficients[8];
452
64.0k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
64.0k
  coefficients[1] = (block00 - block01) * 0.5f;
454
64.0k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
64.0k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Line
Count
Source
410
79.5k
                            float* JXL_RESTRICT coefficients) {
411
79.5k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
79.5k
  size_t afv_x = afv_kind & 1;
413
79.5k
  size_t afv_y = afv_kind / 2;
414
79.5k
  HWY_ALIGN float block[4 * 8] = {};
415
397k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.59M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.27M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.27M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.27M
    }
420
318k
  }
421
  // AFV coefficients in (even, even) positions.
422
79.5k
  HWY_ALIGN float coeff[4 * 4];
423
79.5k
  AFVDCT4x4(block, coeff);
424
397k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.59M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.27M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.27M
    }
428
318k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
79.5k
  ComputeScaledDCT<4, 4>()(
431
79.5k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
79.5k
              pixels_stride),
433
79.5k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
397k
  for (size_t iy = 0; iy < 4; iy++) {
436
2.86M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.54M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.54M
    }
439
318k
  }
440
  // 4x8 DCT of the other half of the block.
441
79.5k
  ComputeScaledDCT<4, 8>()(
442
79.5k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
79.5k
      block, scratch_space);
444
397k
  for (size_t iy = 0; iy < 4; iy++) {
445
2.86M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.54M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.54M
    }
448
318k
  }
449
79.5k
  float block00 = coefficients[0] * 0.25f;
450
79.5k
  float block01 = coefficients[1];
451
79.5k
  float block10 = coefficients[8];
452
79.5k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
79.5k
  coefficients[1] = (block00 - block01) * 0.5f;
454
79.5k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
79.5k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Line
Count
Source
410
85.7k
                            float* JXL_RESTRICT coefficients) {
411
85.7k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
85.7k
  size_t afv_x = afv_kind & 1;
413
85.7k
  size_t afv_y = afv_kind / 2;
414
85.7k
  HWY_ALIGN float block[4 * 8] = {};
415
428k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.71M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.37M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.37M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.37M
    }
420
343k
  }
421
  // AFV coefficients in (even, even) positions.
422
85.7k
  HWY_ALIGN float coeff[4 * 4];
423
85.7k
  AFVDCT4x4(block, coeff);
424
428k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.71M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.37M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.37M
    }
428
343k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
85.7k
  ComputeScaledDCT<4, 4>()(
431
85.7k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
85.7k
              pixels_stride),
433
85.7k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
428k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.08M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.74M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.74M
    }
439
343k
  }
440
  // 4x8 DCT of the other half of the block.
441
85.7k
  ComputeScaledDCT<4, 8>()(
442
85.7k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
85.7k
      block, scratch_space);
444
428k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.08M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.74M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.74M
    }
448
343k
  }
449
85.7k
  float block00 = coefficients[0] * 0.25f;
450
85.7k
  float block01 = coefficients[1];
451
85.7k
  float block10 = coefficients[8];
452
85.7k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
85.7k
  coefficients[1] = (block00 - block01) * 0.5f;
454
85.7k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
85.7k
}
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
105k
                            float* JXL_RESTRICT coefficients) {
411
105k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
105k
  size_t afv_x = afv_kind & 1;
413
105k
  size_t afv_y = afv_kind / 2;
414
105k
  HWY_ALIGN float block[4 * 8] = {};
415
525k
  for (size_t iy = 0; iy < 4; iy++) {
416
2.10M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.68M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.68M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.68M
    }
420
420k
  }
421
  // AFV coefficients in (even, even) positions.
422
105k
  HWY_ALIGN float coeff[4 * 4];
423
105k
  AFVDCT4x4(block, coeff);
424
525k
  for (size_t iy = 0; iy < 4; iy++) {
425
2.10M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.68M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.68M
    }
428
420k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
105k
  ComputeScaledDCT<4, 4>()(
431
105k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
105k
              pixels_stride),
433
105k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
525k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.78M
    for (size_t ix = 0; ix < 8; ix++) {
437
3.36M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
3.36M
    }
439
420k
  }
440
  // 4x8 DCT of the other half of the block.
441
105k
  ComputeScaledDCT<4, 8>()(
442
105k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
105k
      block, scratch_space);
444
525k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.78M
    for (size_t ix = 0; ix < 8; ix++) {
446
3.36M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
3.36M
    }
448
420k
  }
449
105k
  float block00 = coefficients[0] * 0.25f;
450
105k
  float block01 = coefficients[1];
451
105k
  float block10 = coefficients[8];
452
105k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
105k
  coefficients[1] = (block00 - block01) * 0.5f;
454
105k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
105k
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Line
Count
Source
410
64.0k
                            float* JXL_RESTRICT coefficients) {
411
64.0k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
64.0k
  size_t afv_x = afv_kind & 1;
413
64.0k
  size_t afv_y = afv_kind / 2;
414
64.0k
  HWY_ALIGN float block[4 * 8] = {};
415
320k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.28M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.02M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.02M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.02M
    }
420
256k
  }
421
  // AFV coefficients in (even, even) positions.
422
64.0k
  HWY_ALIGN float coeff[4 * 4];
423
64.0k
  AFVDCT4x4(block, coeff);
424
320k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.28M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.02M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.02M
    }
428
256k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
64.0k
  ComputeScaledDCT<4, 4>()(
431
64.0k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
64.0k
              pixels_stride),
433
64.0k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
320k
  for (size_t iy = 0; iy < 4; iy++) {
436
2.30M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.04M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.04M
    }
439
256k
  }
440
  // 4x8 DCT of the other half of the block.
441
64.0k
  ComputeScaledDCT<4, 8>()(
442
64.0k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
64.0k
      block, scratch_space);
444
320k
  for (size_t iy = 0; iy < 4; iy++) {
445
2.30M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.04M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.04M
    }
448
256k
  }
449
64.0k
  float block00 = coefficients[0] * 0.25f;
450
64.0k
  float block01 = coefficients[1];
451
64.0k
  float block10 = coefficients[8];
452
64.0k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
64.0k
  coefficients[1] = (block00 - block01) * 0.5f;
454
64.0k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
64.0k
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Line
Count
Source
410
79.5k
                            float* JXL_RESTRICT coefficients) {
411
79.5k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
79.5k
  size_t afv_x = afv_kind & 1;
413
79.5k
  size_t afv_y = afv_kind / 2;
414
79.5k
  HWY_ALIGN float block[4 * 8] = {};
415
397k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.59M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.27M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.27M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.27M
    }
420
318k
  }
421
  // AFV coefficients in (even, even) positions.
422
79.5k
  HWY_ALIGN float coeff[4 * 4];
423
79.5k
  AFVDCT4x4(block, coeff);
424
397k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.59M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.27M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.27M
    }
428
318k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
79.5k
  ComputeScaledDCT<4, 4>()(
431
79.5k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
79.5k
              pixels_stride),
433
79.5k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
397k
  for (size_t iy = 0; iy < 4; iy++) {
436
2.86M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.54M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.54M
    }
439
318k
  }
440
  // 4x8 DCT of the other half of the block.
441
79.5k
  ComputeScaledDCT<4, 8>()(
442
79.5k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
79.5k
      block, scratch_space);
444
397k
  for (size_t iy = 0; iy < 4; iy++) {
445
2.86M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.54M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.54M
    }
448
318k
  }
449
79.5k
  float block00 = coefficients[0] * 0.25f;
450
79.5k
  float block01 = coefficients[1];
451
79.5k
  float block10 = coefficients[8];
452
79.5k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
79.5k
  coefficients[1] = (block00 - block01) * 0.5f;
454
79.5k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
79.5k
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Line
Count
Source
410
85.7k
                            float* JXL_RESTRICT coefficients) {
411
85.7k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
85.7k
  size_t afv_x = afv_kind & 1;
413
85.7k
  size_t afv_y = afv_kind / 2;
414
85.7k
  HWY_ALIGN float block[4 * 8] = {};
415
428k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.71M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.37M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.37M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.37M
    }
420
343k
  }
421
  // AFV coefficients in (even, even) positions.
422
85.7k
  HWY_ALIGN float coeff[4 * 4];
423
85.7k
  AFVDCT4x4(block, coeff);
424
428k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.71M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.37M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.37M
    }
428
343k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
85.7k
  ComputeScaledDCT<4, 4>()(
431
85.7k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
85.7k
              pixels_stride),
433
85.7k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
428k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.08M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.74M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.74M
    }
439
343k
  }
440
  // 4x8 DCT of the other half of the block.
441
85.7k
  ComputeScaledDCT<4, 8>()(
442
85.7k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
85.7k
      block, scratch_space);
444
428k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.08M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.74M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.74M
    }
448
343k
  }
449
85.7k
  float block00 = coefficients[0] * 0.25f;
450
85.7k
  float block01 = coefficients[1];
451
85.7k
  float block10 = coefficients[8];
452
85.7k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
85.7k
  coefficients[1] = (block00 - block01) * 0.5f;
454
85.7k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
85.7k
}
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
15.7M
                            float* JXL_RESTRICT coefficients) {
411
15.7M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
15.7M
  size_t afv_x = afv_kind & 1;
413
15.7M
  size_t afv_y = afv_kind / 2;
414
15.7M
  HWY_ALIGN float block[4 * 8] = {};
415
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
416
315M
    for (size_t ix = 0; ix < 4; ix++) {
417
252M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
252M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
252M
    }
420
63.1M
  }
421
  // AFV coefficients in (even, even) positions.
422
15.7M
  HWY_ALIGN float coeff[4 * 4];
423
15.7M
  AFVDCT4x4(block, coeff);
424
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
425
315M
    for (size_t ix = 0; ix < 4; ix++) {
426
252M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
252M
    }
428
63.1M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
15.7M
  ComputeScaledDCT<4, 4>()(
431
15.7M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
15.7M
              pixels_stride),
433
15.7M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
436
568M
    for (size_t ix = 0; ix < 8; ix++) {
437
505M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
505M
    }
439
63.1M
  }
440
  // 4x8 DCT of the other half of the block.
441
15.7M
  ComputeScaledDCT<4, 8>()(
442
15.7M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
15.7M
      block, scratch_space);
444
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
445
568M
    for (size_t ix = 0; ix < 8; ix++) {
446
505M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
505M
    }
448
63.1M
  }
449
15.7M
  float block00 = coefficients[0] * 0.25f;
450
15.7M
  float block01 = coefficients[1];
451
15.7M
  float block10 = coefficients[8];
452
15.7M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
15.7M
  coefficients[1] = (block00 - block01) * 0.5f;
454
15.7M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
15.7M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Line
Count
Source
410
15.7M
                            float* JXL_RESTRICT coefficients) {
411
15.7M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
15.7M
  size_t afv_x = afv_kind & 1;
413
15.7M
  size_t afv_y = afv_kind / 2;
414
15.7M
  HWY_ALIGN float block[4 * 8] = {};
415
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
416
315M
    for (size_t ix = 0; ix < 4; ix++) {
417
252M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
252M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
252M
    }
420
63.1M
  }
421
  // AFV coefficients in (even, even) positions.
422
15.7M
  HWY_ALIGN float coeff[4 * 4];
423
15.7M
  AFVDCT4x4(block, coeff);
424
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
425
315M
    for (size_t ix = 0; ix < 4; ix++) {
426
252M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
252M
    }
428
63.1M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
15.7M
  ComputeScaledDCT<4, 4>()(
431
15.7M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
15.7M
              pixels_stride),
433
15.7M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
436
568M
    for (size_t ix = 0; ix < 8; ix++) {
437
505M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
505M
    }
439
63.1M
  }
440
  // 4x8 DCT of the other half of the block.
441
15.7M
  ComputeScaledDCT<4, 8>()(
442
15.7M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
15.7M
      block, scratch_space);
444
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
445
568M
    for (size_t ix = 0; ix < 8; ix++) {
446
505M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
505M
    }
448
63.1M
  }
449
15.7M
  float block00 = coefficients[0] * 0.25f;
450
15.7M
  float block01 = coefficients[1];
451
15.7M
  float block10 = coefficients[8];
452
15.7M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
15.7M
  coefficients[1] = (block00 - block01) * 0.5f;
454
15.7M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
15.7M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Line
Count
Source
410
15.7M
                            float* JXL_RESTRICT coefficients) {
411
15.7M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
15.7M
  size_t afv_x = afv_kind & 1;
413
15.7M
  size_t afv_y = afv_kind / 2;
414
15.7M
  HWY_ALIGN float block[4 * 8] = {};
415
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
416
315M
    for (size_t ix = 0; ix < 4; ix++) {
417
252M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
252M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
252M
    }
420
63.1M
  }
421
  // AFV coefficients in (even, even) positions.
422
15.7M
  HWY_ALIGN float coeff[4 * 4];
423
15.7M
  AFVDCT4x4(block, coeff);
424
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
425
315M
    for (size_t ix = 0; ix < 4; ix++) {
426
252M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
252M
    }
428
63.1M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
15.7M
  ComputeScaledDCT<4, 4>()(
431
15.7M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
15.7M
              pixels_stride),
433
15.7M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
436
568M
    for (size_t ix = 0; ix < 8; ix++) {
437
505M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
505M
    }
439
63.1M
  }
440
  // 4x8 DCT of the other half of the block.
441
15.7M
  ComputeScaledDCT<4, 8>()(
442
15.7M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
15.7M
      block, scratch_space);
444
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
445
568M
    for (size_t ix = 0; ix < 8; ix++) {
446
505M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
505M
    }
448
63.1M
  }
449
15.7M
  float block00 = coefficients[0] * 0.25f;
450
15.7M
  float block01 = coefficients[1];
451
15.7M
  float block10 = coefficients[8];
452
15.7M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
15.7M
  coefficients[1] = (block00 - block01) * 0.5f;
454
15.7M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
15.7M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Line
Count
Source
410
15.7M
                            float* JXL_RESTRICT coefficients) {
411
15.7M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
15.7M
  size_t afv_x = afv_kind & 1;
413
15.7M
  size_t afv_y = afv_kind / 2;
414
15.7M
  HWY_ALIGN float block[4 * 8] = {};
415
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
416
315M
    for (size_t ix = 0; ix < 4; ix++) {
417
252M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
252M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
252M
    }
420
63.1M
  }
421
  // AFV coefficients in (even, even) positions.
422
15.7M
  HWY_ALIGN float coeff[4 * 4];
423
15.7M
  AFVDCT4x4(block, coeff);
424
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
425
315M
    for (size_t ix = 0; ix < 4; ix++) {
426
252M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
252M
    }
428
63.1M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
15.7M
  ComputeScaledDCT<4, 4>()(
431
15.7M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
15.7M
              pixels_stride),
433
15.7M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
436
568M
    for (size_t ix = 0; ix < 8; ix++) {
437
505M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
505M
    }
439
63.1M
  }
440
  // 4x8 DCT of the other half of the block.
441
15.7M
  ComputeScaledDCT<4, 8>()(
442
15.7M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
15.7M
      block, scratch_space);
444
78.9M
  for (size_t iy = 0; iy < 4; iy++) {
445
568M
    for (size_t ix = 0; ix < 8; ix++) {
446
505M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
505M
    }
448
63.1M
  }
449
15.7M
  float block00 = coefficients[0] * 0.25f;
450
15.7M
  float block01 = coefficients[1];
451
15.7M
  float block10 = coefficients[8];
452
15.7M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
15.7M
  coefficients[1] = (block00 - block01) * 0.5f;
454
15.7M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
15.7M
}
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
225M
                                          float* JXL_RESTRICT scratch_space) {
462
225M
  using Type = AcStrategyType;
463
225M
  switch (strategy) {
464
17.2M
    case Type::IDENTITY: {
465
51.7M
      for (size_t y = 0; y < 2; y++) {
466
103M
        for (size_t x = 0; x < 2; x++) {
467
68.9M
          float block_dc = 0;
468
344M
          for (size_t iy = 0; iy < 4; iy++) {
469
1.37G
            for (size_t ix = 0; ix < 4; ix++) {
470
1.10G
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
1.10G
            }
472
275M
          }
473
68.9M
          block_dc *= 1.0f / 16;
474
344M
          for (size_t iy = 0; iy < 4; iy++) {
475
1.37G
            for (size_t ix = 0; ix < 4; ix++) {
476
1.10G
              if (ix == 1 && iy == 1) continue;
477
1.03G
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
1.03G
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
1.03G
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
1.03G
            }
481
275M
          }
482
68.9M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
68.9M
          coefficients[y * 8 + x] = block_dc;
484
68.9M
        }
485
34.4M
      }
486
17.2M
      float block00 = coefficients[0];
487
17.2M
      float block01 = coefficients[1];
488
17.2M
      float block10 = coefficients[8];
489
17.2M
      float block11 = coefficients[9];
490
17.2M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
17.2M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
17.2M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
17.2M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
17.2M
      break;
495
0
    }
496
16.1M
    case Type::DCT8X4: {
497
48.3M
      for (size_t x = 0; x < 2; x++) {
498
32.2M
        HWY_ALIGN float block[4 * 8];
499
32.2M
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
32.2M
                                 scratch_space);
501
161M
        for (size_t iy = 0; iy < 4; iy++) {
502
1.16G
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
1.03G
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
1.03G
          }
506
128M
        }
507
32.2M
      }
508
16.1M
      float block0 = coefficients[0];
509
16.1M
      float block1 = coefficients[8];
510
16.1M
      coefficients[0] = (block0 + block1) * 0.5f;
511
16.1M
      coefficients[8] = (block0 - block1) * 0.5f;
512
16.1M
      break;
513
0
    }
514
15.9M
    case Type::DCT4X8: {
515
47.8M
      for (size_t y = 0; y < 2; y++) {
516
31.8M
        HWY_ALIGN float block[4 * 8];
517
31.8M
        ComputeScaledDCT<4, 8>()(
518
31.8M
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
31.8M
            scratch_space);
520
159M
        for (size_t iy = 0; iy < 4; iy++) {
521
1.14G
          for (size_t ix = 0; ix < 8; ix++) {
522
1.02G
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
1.02G
          }
524
127M
        }
525
31.8M
      }
526
15.9M
      float block0 = coefficients[0];
527
15.9M
      float block1 = coefficients[8];
528
15.9M
      coefficients[0] = (block0 + block1) * 0.5f;
529
15.9M
      coefficients[8] = (block0 - block1) * 0.5f;
530
15.9M
      break;
531
0
    }
532
15.7M
    case Type::DCT4X4: {
533
47.3M
      for (size_t y = 0; y < 2; y++) {
534
94.7M
        for (size_t x = 0; x < 2; x++) {
535
63.1M
          HWY_ALIGN float block[4 * 4];
536
63.1M
          ComputeScaledDCT<4, 4>()(
537
63.1M
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
63.1M
              block, scratch_space);
539
315M
          for (size_t iy = 0; iy < 4; iy++) {
540
1.26G
            for (size_t ix = 0; ix < 4; ix++) {
541
1.01G
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
1.01G
            }
543
252M
          }
544
63.1M
        }
545
31.5M
      }
546
15.7M
      float block00 = coefficients[0];
547
15.7M
      float block01 = coefficients[1];
548
15.7M
      float block10 = coefficients[8];
549
15.7M
      float block11 = coefficients[9];
550
15.7M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
15.7M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
15.7M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
15.7M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
15.7M
      break;
555
0
    }
556
20.3M
    case Type::DCT2X2: {
557
20.3M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
20.3M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
20.3M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
20.3M
      break;
561
0
    }
562
6.56M
    case Type::DCT16X16: {
563
6.56M
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
6.56M
                                 scratch_space);
565
6.56M
      break;
566
0
    }
567
12.7M
    case Type::DCT16X8: {
568
12.7M
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
12.7M
                                scratch_space);
570
12.7M
      break;
571
0
    }
572
12.7M
    case Type::DCT8X16: {
573
12.7M
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
12.7M
                                scratch_space);
575
12.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.57M
    case Type::DCT32X16: {
588
2.57M
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
2.57M
                                 scratch_space);
590
2.57M
      break;
591
0
    }
592
2.55M
    case Type::DCT16X32: {
593
2.55M
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
2.55M
                                 scratch_space);
595
2.55M
      break;
596
0
    }
597
1.48M
    case Type::DCT32X32: {
598
1.48M
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
1.48M
                                 scratch_space);
600
1.48M
      break;
601
0
    }
602
35.4M
    case Type::DCT: {
603
35.4M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
35.4M
                               scratch_space);
605
35.4M
      break;
606
0
    }
607
15.9M
    case Type::AFV0: {
608
15.9M
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
15.9M
      break;
610
0
    }
611
15.9M
    case Type::AFV1: {
612
15.9M
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
15.9M
      break;
614
0
    }
615
15.9M
    case Type::AFV2: {
616
15.9M
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
15.9M
      break;
618
0
    }
619
15.9M
    case Type::AFV3: {
620
15.9M
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
15.9M
      break;
622
0
    }
623
370k
    case Type::DCT64X64: {
624
370k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
370k
                                 scratch_space);
626
370k
      break;
627
0
    }
628
778k
    case Type::DCT64X32: {
629
778k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
778k
                                 scratch_space);
631
778k
      break;
632
0
    }
633
459k
    case Type::DCT32X64: {
634
459k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
459k
                                 scratch_space);
636
459k
      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
225M
  }
669
225M
}
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
6.59M
                                          float* JXL_RESTRICT scratch_space) {
462
6.59M
  using Type = AcStrategyType;
463
6.59M
  switch (strategy) {
464
727k
    case Type::IDENTITY: {
465
2.18M
      for (size_t y = 0; y < 2; y++) {
466
4.36M
        for (size_t x = 0; x < 2; x++) {
467
2.90M
          float block_dc = 0;
468
14.5M
          for (size_t iy = 0; iy < 4; iy++) {
469
58.1M
            for (size_t ix = 0; ix < 4; ix++) {
470
46.5M
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
46.5M
            }
472
11.6M
          }
473
2.90M
          block_dc *= 1.0f / 16;
474
14.5M
          for (size_t iy = 0; iy < 4; iy++) {
475
58.1M
            for (size_t ix = 0; ix < 4; ix++) {
476
46.5M
              if (ix == 1 && iy == 1) continue;
477
43.6M
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
43.6M
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
43.6M
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
43.6M
            }
481
11.6M
          }
482
2.90M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
2.90M
          coefficients[y * 8 + x] = block_dc;
484
2.90M
        }
485
1.45M
      }
486
727k
      float block00 = coefficients[0];
487
727k
      float block01 = coefficients[1];
488
727k
      float block10 = coefficients[8];
489
727k
      float block11 = coefficients[9];
490
727k
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
727k
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
727k
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
727k
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
727k
      break;
495
0
    }
496
166k
    case Type::DCT8X4: {
497
499k
      for (size_t x = 0; x < 2; x++) {
498
332k
        HWY_ALIGN float block[4 * 8];
499
332k
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
332k
                                 scratch_space);
501
1.66M
        for (size_t iy = 0; iy < 4; iy++) {
502
11.9M
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
10.6M
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
10.6M
          }
506
1.33M
        }
507
332k
      }
508
166k
      float block0 = coefficients[0];
509
166k
      float block1 = coefficients[8];
510
166k
      coefficients[0] = (block0 + block1) * 0.5f;
511
166k
      coefficients[8] = (block0 - block1) * 0.5f;
512
166k
      break;
513
0
    }
514
78.1k
    case Type::DCT4X8: {
515
234k
      for (size_t y = 0; y < 2; y++) {
516
156k
        HWY_ALIGN float block[4 * 8];
517
156k
        ComputeScaledDCT<4, 8>()(
518
156k
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
156k
            scratch_space);
520
781k
        for (size_t iy = 0; iy < 4; iy++) {
521
5.62M
          for (size_t ix = 0; ix < 8; ix++) {
522
5.00M
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
5.00M
          }
524
625k
        }
525
156k
      }
526
78.1k
      float block0 = coefficients[0];
527
78.1k
      float block1 = coefficients[8];
528
78.1k
      coefficients[0] = (block0 + block1) * 0.5f;
529
78.1k
      coefficients[8] = (block0 - block1) * 0.5f;
530
78.1k
      break;
531
0
    }
532
309
    case Type::DCT4X4: {
533
927
      for (size_t y = 0; y < 2; y++) {
534
1.85k
        for (size_t x = 0; x < 2; x++) {
535
1.23k
          HWY_ALIGN float block[4 * 4];
536
1.23k
          ComputeScaledDCT<4, 4>()(
537
1.23k
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
1.23k
              block, scratch_space);
539
6.18k
          for (size_t iy = 0; iy < 4; iy++) {
540
24.7k
            for (size_t ix = 0; ix < 4; ix++) {
541
19.7k
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
19.7k
            }
543
4.94k
          }
544
1.23k
        }
545
618
      }
546
309
      float block00 = coefficients[0];
547
309
      float block01 = coefficients[1];
548
309
      float block10 = coefficients[8];
549
309
      float block11 = coefficients[9];
550
309
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
309
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
309
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
309
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
309
      break;
555
0
    }
556
2.29M
    case Type::DCT2X2: {
557
2.29M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
2.29M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
2.29M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
2.29M
      break;
561
0
    }
562
187k
    case Type::DCT16X16: {
563
187k
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
187k
                                 scratch_space);
565
187k
      break;
566
0
    }
567
252k
    case Type::DCT16X8: {
568
252k
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
252k
                                scratch_space);
570
252k
      break;
571
0
    }
572
266k
    case Type::DCT8X16: {
573
266k
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
266k
                                scratch_space);
575
266k
      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
62.3k
    case Type::DCT32X16: {
588
62.3k
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
62.3k
                                 scratch_space);
590
62.3k
      break;
591
0
    }
592
62.8k
    case Type::DCT16X32: {
593
62.8k
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
62.8k
                                 scratch_space);
595
62.8k
      break;
596
0
    }
597
123k
    case Type::DCT32X32: {
598
123k
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
123k
                                 scratch_space);
600
123k
      break;
601
0
    }
602
1.94M
    case Type::DCT: {
603
1.94M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
1.94M
                               scratch_space);
605
1.94M
      break;
606
0
    }
607
105k
    case Type::AFV0: {
608
105k
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
105k
      break;
610
0
    }
611
64.0k
    case Type::AFV1: {
612
64.0k
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
64.0k
      break;
614
0
    }
615
79.5k
    case Type::AFV2: {
616
79.5k
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
79.5k
      break;
618
0
    }
619
85.7k
    case Type::AFV3: {
620
85.7k
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
85.7k
      break;
622
0
    }
623
74.9k
    case Type::DCT64X64: {
624
74.9k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
74.9k
                                 scratch_space);
626
74.9k
      break;
627
0
    }
628
13.0k
    case Type::DCT64X32: {
629
13.0k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
13.0k
                                 scratch_space);
631
13.0k
      break;
632
0
    }
633
8.13k
    case Type::DCT32X64: {
634
8.13k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
8.13k
                                 scratch_space);
636
8.13k
      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
6.59M
  }
669
6.59M
}
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
22.3M
                                          float* JXL_RESTRICT scratch_space) {
462
22.3M
  using Type = AcStrategyType;
463
22.3M
  switch (strategy) {
464
727k
    case Type::IDENTITY: {
465
2.18M
      for (size_t y = 0; y < 2; y++) {
466
4.36M
        for (size_t x = 0; x < 2; x++) {
467
2.90M
          float block_dc = 0;
468
14.5M
          for (size_t iy = 0; iy < 4; iy++) {
469
58.1M
            for (size_t ix = 0; ix < 4; ix++) {
470
46.5M
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
46.5M
            }
472
11.6M
          }
473
2.90M
          block_dc *= 1.0f / 16;
474
14.5M
          for (size_t iy = 0; iy < 4; iy++) {
475
58.1M
            for (size_t ix = 0; ix < 4; ix++) {
476
46.5M
              if (ix == 1 && iy == 1) continue;
477
43.6M
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
43.6M
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
43.6M
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
43.6M
            }
481
11.6M
          }
482
2.90M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
2.90M
          coefficients[y * 8 + x] = block_dc;
484
2.90M
        }
485
1.45M
      }
486
727k
      float block00 = coefficients[0];
487
727k
      float block01 = coefficients[1];
488
727k
      float block10 = coefficients[8];
489
727k
      float block11 = coefficients[9];
490
727k
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
727k
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
727k
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
727k
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
727k
      break;
495
0
    }
496
166k
    case Type::DCT8X4: {
497
499k
      for (size_t x = 0; x < 2; x++) {
498
332k
        HWY_ALIGN float block[4 * 8];
499
332k
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
332k
                                 scratch_space);
501
1.66M
        for (size_t iy = 0; iy < 4; iy++) {
502
11.9M
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
10.6M
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
10.6M
          }
506
1.33M
        }
507
332k
      }
508
166k
      float block0 = coefficients[0];
509
166k
      float block1 = coefficients[8];
510
166k
      coefficients[0] = (block0 + block1) * 0.5f;
511
166k
      coefficients[8] = (block0 - block1) * 0.5f;
512
166k
      break;
513
0
    }
514
78.1k
    case Type::DCT4X8: {
515
234k
      for (size_t y = 0; y < 2; y++) {
516
156k
        HWY_ALIGN float block[4 * 8];
517
156k
        ComputeScaledDCT<4, 8>()(
518
156k
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
156k
            scratch_space);
520
781k
        for (size_t iy = 0; iy < 4; iy++) {
521
5.62M
          for (size_t ix = 0; ix < 8; ix++) {
522
5.00M
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
5.00M
          }
524
625k
        }
525
156k
      }
526
78.1k
      float block0 = coefficients[0];
527
78.1k
      float block1 = coefficients[8];
528
78.1k
      coefficients[0] = (block0 + block1) * 0.5f;
529
78.1k
      coefficients[8] = (block0 - block1) * 0.5f;
530
78.1k
      break;
531
0
    }
532
309
    case Type::DCT4X4: {
533
927
      for (size_t y = 0; y < 2; y++) {
534
1.85k
        for (size_t x = 0; x < 2; x++) {
535
1.23k
          HWY_ALIGN float block[4 * 4];
536
1.23k
          ComputeScaledDCT<4, 4>()(
537
1.23k
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
1.23k
              block, scratch_space);
539
6.18k
          for (size_t iy = 0; iy < 4; iy++) {
540
24.7k
            for (size_t ix = 0; ix < 4; ix++) {
541
19.7k
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
19.7k
            }
543
4.94k
          }
544
1.23k
        }
545
618
      }
546
309
      float block00 = coefficients[0];
547
309
      float block01 = coefficients[1];
548
309
      float block10 = coefficients[8];
549
309
      float block11 = coefficients[9];
550
309
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
309
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
309
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
309
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
309
      break;
555
0
    }
556
2.29M
    case Type::DCT2X2: {
557
2.29M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
2.29M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
2.29M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
2.29M
      break;
561
0
    }
562
187k
    case Type::DCT16X16: {
563
187k
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
187k
                                 scratch_space);
565
187k
      break;
566
0
    }
567
252k
    case Type::DCT16X8: {
568
252k
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
252k
                                scratch_space);
570
252k
      break;
571
0
    }
572
266k
    case Type::DCT8X16: {
573
266k
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
266k
                                scratch_space);
575
266k
      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
62.3k
    case Type::DCT32X16: {
588
62.3k
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
62.3k
                                 scratch_space);
590
62.3k
      break;
591
0
    }
592
62.8k
    case Type::DCT16X32: {
593
62.8k
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
62.8k
                                 scratch_space);
595
62.8k
      break;
596
0
    }
597
123k
    case Type::DCT32X32: {
598
123k
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
123k
                                 scratch_space);
600
123k
      break;
601
0
    }
602
17.7M
    case Type::DCT: {
603
17.7M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
17.7M
                               scratch_space);
605
17.7M
      break;
606
0
    }
607
105k
    case Type::AFV0: {
608
105k
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
105k
      break;
610
0
    }
611
64.0k
    case Type::AFV1: {
612
64.0k
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
64.0k
      break;
614
0
    }
615
79.5k
    case Type::AFV2: {
616
79.5k
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
79.5k
      break;
618
0
    }
619
85.7k
    case Type::AFV3: {
620
85.7k
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
85.7k
      break;
622
0
    }
623
74.9k
    case Type::DCT64X64: {
624
74.9k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
74.9k
                                 scratch_space);
626
74.9k
      break;
627
0
    }
628
13.0k
    case Type::DCT64X32: {
629
13.0k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
13.0k
                                 scratch_space);
631
13.0k
      break;
632
0
    }
633
8.13k
    case Type::DCT32X64: {
634
8.13k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
8.13k
                                 scratch_space);
636
8.13k
      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
22.3M
  }
669
22.3M
}
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
196M
                                          float* JXL_RESTRICT scratch_space) {
462
196M
  using Type = AcStrategyType;
463
196M
  switch (strategy) {
464
15.7M
    case Type::IDENTITY: {
465
47.3M
      for (size_t y = 0; y < 2; y++) {
466
94.7M
        for (size_t x = 0; x < 2; x++) {
467
63.1M
          float block_dc = 0;
468
315M
          for (size_t iy = 0; iy < 4; iy++) {
469
1.26G
            for (size_t ix = 0; ix < 4; ix++) {
470
1.01G
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
1.01G
            }
472
252M
          }
473
63.1M
          block_dc *= 1.0f / 16;
474
315M
          for (size_t iy = 0; iy < 4; iy++) {
475
1.26G
            for (size_t ix = 0; ix < 4; ix++) {
476
1.01G
              if (ix == 1 && iy == 1) continue;
477
947M
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
947M
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
947M
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
947M
            }
481
252M
          }
482
63.1M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
63.1M
          coefficients[y * 8 + x] = block_dc;
484
63.1M
        }
485
31.5M
      }
486
15.7M
      float block00 = coefficients[0];
487
15.7M
      float block01 = coefficients[1];
488
15.7M
      float block10 = coefficients[8];
489
15.7M
      float block11 = coefficients[9];
490
15.7M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
15.7M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
15.7M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
15.7M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
15.7M
      break;
495
0
    }
496
15.7M
    case Type::DCT8X4: {
497
47.3M
      for (size_t x = 0; x < 2; x++) {
498
31.5M
        HWY_ALIGN float block[4 * 8];
499
31.5M
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
31.5M
                                 scratch_space);
501
157M
        for (size_t iy = 0; iy < 4; iy++) {
502
1.13G
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
1.01G
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
1.01G
          }
506
126M
        }
507
31.5M
      }
508
15.7M
      float block0 = coefficients[0];
509
15.7M
      float block1 = coefficients[8];
510
15.7M
      coefficients[0] = (block0 + block1) * 0.5f;
511
15.7M
      coefficients[8] = (block0 - block1) * 0.5f;
512
15.7M
      break;
513
0
    }
514
15.7M
    case Type::DCT4X8: {
515
47.3M
      for (size_t y = 0; y < 2; y++) {
516
31.5M
        HWY_ALIGN float block[4 * 8];
517
31.5M
        ComputeScaledDCT<4, 8>()(
518
31.5M
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
31.5M
            scratch_space);
520
157M
        for (size_t iy = 0; iy < 4; iy++) {
521
1.13G
          for (size_t ix = 0; ix < 8; ix++) {
522
1.01G
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
1.01G
          }
524
126M
        }
525
31.5M
      }
526
15.7M
      float block0 = coefficients[0];
527
15.7M
      float block1 = coefficients[8];
528
15.7M
      coefficients[0] = (block0 + block1) * 0.5f;
529
15.7M
      coefficients[8] = (block0 - block1) * 0.5f;
530
15.7M
      break;
531
0
    }
532
15.7M
    case Type::DCT4X4: {
533
47.3M
      for (size_t y = 0; y < 2; y++) {
534
94.7M
        for (size_t x = 0; x < 2; x++) {
535
63.1M
          HWY_ALIGN float block[4 * 4];
536
63.1M
          ComputeScaledDCT<4, 4>()(
537
63.1M
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
63.1M
              block, scratch_space);
539
315M
          for (size_t iy = 0; iy < 4; iy++) {
540
1.26G
            for (size_t ix = 0; ix < 4; ix++) {
541
1.01G
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
1.01G
            }
543
252M
          }
544
63.1M
        }
545
31.5M
      }
546
15.7M
      float block00 = coefficients[0];
547
15.7M
      float block01 = coefficients[1];
548
15.7M
      float block10 = coefficients[8];
549
15.7M
      float block11 = coefficients[9];
550
15.7M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
15.7M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
15.7M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
15.7M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
15.7M
      break;
555
0
    }
556
15.7M
    case Type::DCT2X2: {
557
15.7M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
15.7M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
15.7M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
15.7M
      break;
561
0
    }
562
6.19M
    case Type::DCT16X16: {
563
6.19M
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
6.19M
                                 scratch_space);
565
6.19M
      break;
566
0
    }
567
12.2M
    case Type::DCT16X8: {
568
12.2M
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
12.2M
                                scratch_space);
570
12.2M
      break;
571
0
    }
572
12.2M
    case Type::DCT8X16: {
573
12.2M
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
12.2M
                                scratch_space);
575
12.2M
      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.44M
    case Type::DCT32X16: {
588
2.44M
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
2.44M
                                 scratch_space);
590
2.44M
      break;
591
0
    }
592
2.42M
    case Type::DCT16X32: {
593
2.42M
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
2.42M
                                 scratch_space);
595
2.42M
      break;
596
0
    }
597
1.23M
    case Type::DCT32X32: {
598
1.23M
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
1.23M
                                 scratch_space);
600
1.23M
      break;
601
0
    }
602
15.7M
    case Type::DCT: {
603
15.7M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
15.7M
                               scratch_space);
605
15.7M
      break;
606
0
    }
607
15.7M
    case Type::AFV0: {
608
15.7M
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
15.7M
      break;
610
0
    }
611
15.7M
    case Type::AFV1: {
612
15.7M
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
15.7M
      break;
614
0
    }
615
15.7M
    case Type::AFV2: {
616
15.7M
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
15.7M
      break;
618
0
    }
619
15.7M
    case Type::AFV3: {
620
15.7M
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
15.7M
      break;
622
0
    }
623
220k
    case Type::DCT64X64: {
624
220k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
220k
                                 scratch_space);
626
220k
      break;
627
0
    }
628
752k
    case Type::DCT64X32: {
629
752k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
752k
                                 scratch_space);
631
752k
      break;
632
0
    }
633
443k
    case Type::DCT32X64: {
634
443k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
443k
                                 scratch_space);
636
443k
      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
196M
  }
669
196M
}
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
28.9M
                                              float* scratch_space) {
676
28.9M
  using Type = AcStrategyType;
677
28.9M
  switch (strategy) {
678
504k
    case Type::DCT16X8: {
679
504k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
504k
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
504k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
504k
      break;
683
0
    }
684
532k
    case Type::DCT8X16: {
685
532k
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
532k
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
532k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
532k
      break;
689
0
    }
690
374k
    case Type::DCT16X16: {
691
374k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
374k
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
374k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
374k
      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
124k
    case Type::DCT32X16: {
709
124k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
124k
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
124k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
124k
      break;
713
0
    }
714
125k
    case Type::DCT16X32: {
715
125k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
125k
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
125k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
125k
      break;
719
0
    }
720
247k
    case Type::DCT32X32: {
721
247k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
247k
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
247k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
247k
      break;
725
0
    }
726
26.1k
    case Type::DCT64X32: {
727
26.1k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
26.1k
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
26.1k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
26.1k
      break;
731
0
    }
732
16.2k
    case Type::DCT32X64: {
733
16.2k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
16.2k
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
16.2k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
16.2k
      break;
737
0
    }
738
149k
    case Type::DCT64X64: {
739
149k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
149k
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
149k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
149k
      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.6M
    case Type::DCT:
787
24.2M
    case Type::DCT2X2:
788
24.2M
    case Type::DCT4X4:
789
24.4M
    case Type::DCT4X8:
790
24.7M
    case Type::DCT8X4:
791
24.9M
    case Type::AFV0:
792
25.0M
    case Type::AFV1:
793
25.2M
    case Type::AFV2:
794
25.4M
    case Type::AFV3:
795
26.8M
    case Type::IDENTITY:
796
26.8M
      dc[0] = block[0];
797
26.8M
      break;
798
28.9M
  }
799
28.9M
}
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
6.59M
                                              float* scratch_space) {
676
6.59M
  using Type = AcStrategyType;
677
6.59M
  switch (strategy) {
678
252k
    case Type::DCT16X8: {
679
252k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
252k
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
252k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
252k
      break;
683
0
    }
684
266k
    case Type::DCT8X16: {
685
266k
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
266k
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
266k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
266k
      break;
689
0
    }
690
187k
    case Type::DCT16X16: {
691
187k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
187k
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
187k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
187k
      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
62.3k
    case Type::DCT32X16: {
709
62.3k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
62.3k
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
62.3k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
62.3k
      break;
713
0
    }
714
62.8k
    case Type::DCT16X32: {
715
62.8k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
62.8k
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
62.8k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
62.8k
      break;
719
0
    }
720
123k
    case Type::DCT32X32: {
721
123k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
123k
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
123k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
123k
      break;
725
0
    }
726
13.0k
    case Type::DCT64X32: {
727
13.0k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
13.0k
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
13.0k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
13.0k
      break;
731
0
    }
732
8.13k
    case Type::DCT32X64: {
733
8.13k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
8.13k
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
8.13k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
8.13k
      break;
737
0
    }
738
74.9k
    case Type::DCT64X64: {
739
74.9k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
74.9k
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
74.9k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
74.9k
      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
1.94M
    case Type::DCT:
787
4.24M
    case Type::DCT2X2:
788
4.24M
    case Type::DCT4X4:
789
4.31M
    case Type::DCT4X8:
790
4.48M
    case Type::DCT8X4:
791
4.59M
    case Type::AFV0:
792
4.65M
    case Type::AFV1:
793
4.73M
    case Type::AFV2:
794
4.82M
    case Type::AFV3:
795
5.54M
    case Type::IDENTITY:
796
5.54M
      dc[0] = block[0];
797
5.54M
      break;
798
6.59M
  }
799
6.59M
}
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
22.3M
                                              float* scratch_space) {
676
22.3M
  using Type = AcStrategyType;
677
22.3M
  switch (strategy) {
678
252k
    case Type::DCT16X8: {
679
252k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
252k
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
252k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
252k
      break;
683
0
    }
684
266k
    case Type::DCT8X16: {
685
266k
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
266k
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
266k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
266k
      break;
689
0
    }
690
187k
    case Type::DCT16X16: {
691
187k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
187k
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
187k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
187k
      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
62.3k
    case Type::DCT32X16: {
709
62.3k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
62.3k
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
62.3k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
62.3k
      break;
713
0
    }
714
62.8k
    case Type::DCT16X32: {
715
62.8k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
62.8k
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
62.8k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
62.8k
      break;
719
0
    }
720
123k
    case Type::DCT32X32: {
721
123k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
123k
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
123k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
123k
      break;
725
0
    }
726
13.0k
    case Type::DCT64X32: {
727
13.0k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
13.0k
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
13.0k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
13.0k
      break;
731
0
    }
732
8.13k
    case Type::DCT32X64: {
733
8.13k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
8.13k
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
8.13k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
8.13k
      break;
737
0
    }
738
74.9k
    case Type::DCT64X64: {
739
74.9k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
74.9k
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
74.9k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
74.9k
      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
17.7M
    case Type::DCT:
787
20.0M
    case Type::DCT2X2:
788
20.0M
    case Type::DCT4X4:
789
20.1M
    case Type::DCT4X8:
790
20.2M
    case Type::DCT8X4:
791
20.3M
    case Type::AFV0:
792
20.4M
    case Type::AFV1:
793
20.5M
    case Type::AFV2:
794
20.6M
    case Type::AFV3:
795
21.3M
    case Type::IDENTITY:
796
21.3M
      dc[0] = block[0];
797
21.3M
      break;
798
22.3M
  }
799
22.3M
}
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_