Coverage Report

Created: 2026-09-28 06:47

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.22M
                                   const size_t output_stride, float* scratch) {
40
2.22M
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
2.22M
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
2.22M
  float* block = scratch;
43
2.22M
  if (ROWS < COLS) {
44
1.63M
    for (size_t y = 0; y < LF_ROWS; y++) {
45
3.68M
      for (size_t x = 0; x < LF_COLS; x++) {
46
2.77M
        block[y * COLS + x] = input[y * input_stride + x] *
47
2.77M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
2.77M
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
2.77M
      }
50
912k
    }
51
1.49M
  } else {
52
5.34M
    for (size_t y = 0; y < LF_COLS; y++) {
53
21.4M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
17.5M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
17.5M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
17.5M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
17.5M
      }
58
3.84M
    }
59
1.49M
  }
60
61
2.22M
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
2.22M
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
2.22M
                                  scratch_space);
64
2.22M
}
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
271k
                                   const size_t output_stride, float* scratch) {
40
271k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
271k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
271k
  float* block = scratch;
43
271k
  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
271k
  } else {
52
542k
    for (size_t y = 0; y < LF_COLS; y++) {
53
814k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
542k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
542k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
542k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
542k
      }
58
271k
    }
59
271k
  }
60
61
271k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
271k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
271k
                                  scratch_space);
64
271k
}
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
287k
                                   const size_t output_stride, float* scratch) {
40
287k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
287k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
287k
  float* block = scratch;
43
287k
  if (ROWS < COLS) {
44
575k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
863k
      for (size_t x = 0; x < LF_COLS; x++) {
46
575k
        block[y * COLS + x] = input[y * input_stride + x] *
47
575k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
575k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
575k
      }
50
287k
    }
51
287k
  } 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
287k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
287k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
287k
                                  scratch_space);
64
287k
}
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
199k
                                   const size_t output_stride, float* scratch) {
40
199k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
199k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
199k
  float* block = scratch;
43
199k
  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
199k
  } else {
52
599k
    for (size_t y = 0; y < LF_COLS; y++) {
53
1.19M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
799k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
799k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
799k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
799k
      }
58
399k
    }
59
199k
  }
60
61
199k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
199k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
199k
                                  scratch_space);
64
199k
}
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
63.5k
                                   const size_t output_stride, float* scratch) {
40
63.5k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
63.5k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
63.5k
  float* block = scratch;
43
63.5k
  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
63.5k
  } else {
52
190k
    for (size_t y = 0; y < LF_COLS; y++) {
53
635k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
508k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
508k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
508k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
508k
      }
58
127k
    }
59
63.5k
  }
60
61
63.5k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
63.5k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
63.5k
                                  scratch_space);
64
63.5k
}
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
67.3k
                                   const size_t output_stride, float* scratch) {
40
67.3k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
67.3k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
67.3k
  float* block = scratch;
43
67.3k
  if (ROWS < COLS) {
44
202k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
673k
      for (size_t x = 0; x < LF_COLS; x++) {
46
538k
        block[y * COLS + x] = input[y * input_stride + x] *
47
538k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
538k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
538k
      }
50
134k
    }
51
67.3k
  } 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
67.3k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
67.3k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
67.3k
                                  scratch_space);
64
67.3k
}
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
129k
                                   const size_t output_stride, float* scratch) {
40
129k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
129k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
129k
  float* block = scratch;
43
129k
  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
129k
  } else {
52
648k
    for (size_t y = 0; y < LF_COLS; y++) {
53
2.59M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
2.07M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
2.07M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
2.07M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
2.07M
      }
58
519k
    }
59
129k
  }
60
61
129k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
129k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
129k
                                  scratch_space);
64
129k
}
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.5k
                                   const size_t output_stride, float* scratch) {
40
13.5k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
13.5k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
13.5k
  float* block = scratch;
43
13.5k
  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.5k
  } else {
52
67.9k
    for (size_t y = 0; y < LF_COLS; y++) {
53
489k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
434k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
434k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
434k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
434k
      }
58
54.3k
    }
59
13.5k
  }
60
61
13.5k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
13.5k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
13.5k
                                  scratch_space);
64
13.5k
}
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.48k
                                   const size_t output_stride, float* scratch) {
40
8.48k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
8.48k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
8.48k
  float* block = scratch;
43
8.48k
  if (ROWS < COLS) {
44
42.4k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
305k
      for (size_t x = 0; x < LF_COLS; x++) {
46
271k
        block[y * COLS + x] = input[y * input_stride + x] *
47
271k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
271k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
271k
      }
50
33.9k
    }
51
8.48k
  } 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.48k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
8.48k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
8.48k
                                  scratch_space);
64
8.48k
}
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
69.1k
                                   const size_t output_stride, float* scratch) {
40
69.1k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
69.1k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
69.1k
  float* block = scratch;
43
69.1k
  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
69.1k
  } else {
52
622k
    for (size_t y = 0; y < LF_COLS; y++) {
53
4.97M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
4.42M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
4.42M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
4.42M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
4.42M
      }
58
553k
    }
59
69.1k
  }
60
61
69.1k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
69.1k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
69.1k
                                  scratch_space);
64
69.1k
}
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
271k
                                   const size_t output_stride, float* scratch) {
40
271k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
271k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
271k
  float* block = scratch;
43
271k
  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
271k
  } else {
52
542k
    for (size_t y = 0; y < LF_COLS; y++) {
53
814k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
542k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
542k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
542k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
542k
      }
58
271k
    }
59
271k
  }
60
61
271k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
271k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
271k
                                  scratch_space);
64
271k
}
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
287k
                                   const size_t output_stride, float* scratch) {
40
287k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
287k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
287k
  float* block = scratch;
43
287k
  if (ROWS < COLS) {
44
575k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
863k
      for (size_t x = 0; x < LF_COLS; x++) {
46
575k
        block[y * COLS + x] = input[y * input_stride + x] *
47
575k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
575k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
575k
      }
50
287k
    }
51
287k
  } 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
287k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
287k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
287k
                                  scratch_space);
64
287k
}
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
199k
                                   const size_t output_stride, float* scratch) {
40
199k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
199k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
199k
  float* block = scratch;
43
199k
  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
199k
  } else {
52
599k
    for (size_t y = 0; y < LF_COLS; y++) {
53
1.19M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
799k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
799k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
799k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
799k
      }
58
399k
    }
59
199k
  }
60
61
199k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
199k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
199k
                                  scratch_space);
64
199k
}
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
63.5k
                                   const size_t output_stride, float* scratch) {
40
63.5k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
63.5k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
63.5k
  float* block = scratch;
43
63.5k
  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
63.5k
  } else {
52
190k
    for (size_t y = 0; y < LF_COLS; y++) {
53
635k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
508k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
508k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
508k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
508k
      }
58
127k
    }
59
63.5k
  }
60
61
63.5k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
63.5k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
63.5k
                                  scratch_space);
64
63.5k
}
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
67.3k
                                   const size_t output_stride, float* scratch) {
40
67.3k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
67.3k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
67.3k
  float* block = scratch;
43
67.3k
  if (ROWS < COLS) {
44
202k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
673k
      for (size_t x = 0; x < LF_COLS; x++) {
46
538k
        block[y * COLS + x] = input[y * input_stride + x] *
47
538k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
538k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
538k
      }
50
134k
    }
51
67.3k
  } 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
67.3k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
67.3k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
67.3k
                                  scratch_space);
64
67.3k
}
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
129k
                                   const size_t output_stride, float* scratch) {
40
129k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
129k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
129k
  float* block = scratch;
43
129k
  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
129k
  } else {
52
648k
    for (size_t y = 0; y < LF_COLS; y++) {
53
2.59M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
2.07M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
2.07M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
2.07M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
2.07M
      }
58
519k
    }
59
129k
  }
60
61
129k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
129k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
129k
                                  scratch_space);
64
129k
}
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.5k
                                   const size_t output_stride, float* scratch) {
40
13.5k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
13.5k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
13.5k
  float* block = scratch;
43
13.5k
  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.5k
  } else {
52
67.9k
    for (size_t y = 0; y < LF_COLS; y++) {
53
489k
      for (size_t x = 0; x < LF_ROWS; x++) {
54
434k
        block[y * ROWS + x] = input[y * input_stride + x] *
55
434k
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
434k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
434k
      }
58
54.3k
    }
59
13.5k
  }
60
61
13.5k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
13.5k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
13.5k
                                  scratch_space);
64
13.5k
}
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.48k
                                   const size_t output_stride, float* scratch) {
40
8.48k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
8.48k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
8.48k
  float* block = scratch;
43
8.48k
  if (ROWS < COLS) {
44
42.4k
    for (size_t y = 0; y < LF_ROWS; y++) {
45
305k
      for (size_t x = 0; x < LF_COLS; x++) {
46
271k
        block[y * COLS + x] = input[y * input_stride + x] *
47
271k
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(y) *
48
271k
                              DCTTotalResampleScale<DCT_COLS, COLS>(x);
49
271k
      }
50
33.9k
    }
51
8.48k
  } 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.48k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
8.48k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
8.48k
                                  scratch_space);
64
8.48k
}
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
69.1k
                                   const size_t output_stride, float* scratch) {
40
69.1k
  static_assert(ROWS <= kMaxBlocks, "Unsupported block size");
41
69.1k
  static_assert(COLS <= kMaxBlocks, "Unsupported block size");
42
69.1k
  float* block = scratch;
43
69.1k
  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
69.1k
  } else {
52
622k
    for (size_t y = 0; y < LF_COLS; y++) {
53
4.97M
      for (size_t x = 0; x < LF_ROWS; x++) {
54
4.42M
        block[y * ROWS + x] = input[y * input_stride + x] *
55
4.42M
                              DCTTotalResampleScale<DCT_COLS, COLS>(y) *
56
4.42M
                              DCTTotalResampleScale<DCT_ROWS, ROWS>(x);
57
4.42M
      }
58
553k
    }
59
69.1k
  }
60
61
69.1k
  float* scratch_space = scratch + kMaxBlocks * kMaxBlocks;
62
69.1k
  ComputeScaledIDCT<ROWS, COLS>()(block, DCTTo(output, output_stride),
63
69.1k
                                  scratch_space);
64
69.1k
}
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
64.3M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
64.3M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
64.3M
  static_assert(S % 2 == 0, "S should be even");
70
64.3M
  float temp[kDCTBlockSize];
71
64.3M
  constexpr size_t num_2x2 = S / 2;
72
214M
  for (size_t y = 0; y < num_2x2; y++) {
73
600M
    for (size_t x = 0; x < num_2x2; x++) {
74
450M
      float c00 = block[y * 2 * stride + x * 2];
75
450M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
450M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
450M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
450M
      float r00 = c00 + c01 + c10 + c11;
79
450M
      float r01 = c00 + c01 - c10 - c11;
80
450M
      float r10 = c00 - c01 + c10 - c11;
81
450M
      float r11 = c00 - c01 - c10 + c11;
82
450M
      r00 *= 0.25f;
83
450M
      r01 *= 0.25f;
84
450M
      r10 *= 0.25f;
85
450M
      r11 *= 0.25f;
86
450M
      temp[y * kBlockDim + x] = r00;
87
450M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
450M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
450M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
450M
    }
91
150M
  }
92
364M
  for (size_t y = 0; y < S; y++) {
93
2.10G
    for (size_t x = 0; x < S; x++) {
94
1.80G
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
1.80G
    }
96
300M
  }
97
64.3M
}
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.57M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.57M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.57M
  static_assert(S % 2 == 0, "S should be even");
70
2.57M
  float temp[kDCTBlockSize];
71
2.57M
  constexpr size_t num_2x2 = S / 2;
72
12.8M
  for (size_t y = 0; y < num_2x2; y++) {
73
51.5M
    for (size_t x = 0; x < num_2x2; x++) {
74
41.2M
      float c00 = block[y * 2 * stride + x * 2];
75
41.2M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
41.2M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
41.2M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
41.2M
      float r00 = c00 + c01 + c10 + c11;
79
41.2M
      float r01 = c00 + c01 - c10 - c11;
80
41.2M
      float r10 = c00 - c01 + c10 - c11;
81
41.2M
      float r11 = c00 - c01 - c10 + c11;
82
41.2M
      r00 *= 0.25f;
83
41.2M
      r01 *= 0.25f;
84
41.2M
      r10 *= 0.25f;
85
41.2M
      r11 *= 0.25f;
86
41.2M
      temp[y * kBlockDim + x] = r00;
87
41.2M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
41.2M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
41.2M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
41.2M
    }
91
10.3M
  }
92
23.2M
  for (size_t y = 0; y < S; y++) {
93
185M
    for (size_t x = 0; x < S; x++) {
94
165M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
165M
    }
96
20.6M
  }
97
2.57M
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.57M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.57M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.57M
  static_assert(S % 2 == 0, "S should be even");
70
2.57M
  float temp[kDCTBlockSize];
71
2.57M
  constexpr size_t num_2x2 = S / 2;
72
7.73M
  for (size_t y = 0; y < num_2x2; y++) {
73
15.4M
    for (size_t x = 0; x < num_2x2; x++) {
74
10.3M
      float c00 = block[y * 2 * stride + x * 2];
75
10.3M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
10.3M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
10.3M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
10.3M
      float r00 = c00 + c01 + c10 + c11;
79
10.3M
      float r01 = c00 + c01 - c10 - c11;
80
10.3M
      float r10 = c00 - c01 + c10 - c11;
81
10.3M
      float r11 = c00 - c01 - c10 + c11;
82
10.3M
      r00 *= 0.25f;
83
10.3M
      r01 *= 0.25f;
84
10.3M
      r10 *= 0.25f;
85
10.3M
      r11 *= 0.25f;
86
10.3M
      temp[y * kBlockDim + x] = r00;
87
10.3M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
10.3M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
10.3M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
10.3M
    }
91
5.15M
  }
92
12.8M
  for (size_t y = 0; y < S; y++) {
93
51.5M
    for (size_t x = 0; x < S; x++) {
94
41.2M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
41.2M
    }
96
10.3M
  }
97
2.57M
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.57M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.57M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.57M
  static_assert(S % 2 == 0, "S should be even");
70
2.57M
  float temp[kDCTBlockSize];
71
2.57M
  constexpr size_t num_2x2 = S / 2;
72
5.15M
  for (size_t y = 0; y < num_2x2; y++) {
73
5.15M
    for (size_t x = 0; x < num_2x2; x++) {
74
2.57M
      float c00 = block[y * 2 * stride + x * 2];
75
2.57M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
2.57M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
2.57M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
2.57M
      float r00 = c00 + c01 + c10 + c11;
79
2.57M
      float r01 = c00 + c01 - c10 - c11;
80
2.57M
      float r10 = c00 - c01 + c10 - c11;
81
2.57M
      float r11 = c00 - c01 - c10 + c11;
82
2.57M
      r00 *= 0.25f;
83
2.57M
      r01 *= 0.25f;
84
2.57M
      r10 *= 0.25f;
85
2.57M
      r11 *= 0.25f;
86
2.57M
      temp[y * kBlockDim + x] = r00;
87
2.57M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
2.57M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
2.57M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
2.57M
    }
91
2.57M
  }
92
7.73M
  for (size_t y = 0; y < S; y++) {
93
15.4M
    for (size_t x = 0; x < S; x++) {
94
10.3M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
10.3M
    }
96
5.15M
  }
97
2.57M
}
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.57M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.57M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.57M
  static_assert(S % 2 == 0, "S should be even");
70
2.57M
  float temp[kDCTBlockSize];
71
2.57M
  constexpr size_t num_2x2 = S / 2;
72
12.8M
  for (size_t y = 0; y < num_2x2; y++) {
73
51.5M
    for (size_t x = 0; x < num_2x2; x++) {
74
41.2M
      float c00 = block[y * 2 * stride + x * 2];
75
41.2M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
41.2M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
41.2M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
41.2M
      float r00 = c00 + c01 + c10 + c11;
79
41.2M
      float r01 = c00 + c01 - c10 - c11;
80
41.2M
      float r10 = c00 - c01 + c10 - c11;
81
41.2M
      float r11 = c00 - c01 - c10 + c11;
82
41.2M
      r00 *= 0.25f;
83
41.2M
      r01 *= 0.25f;
84
41.2M
      r10 *= 0.25f;
85
41.2M
      r11 *= 0.25f;
86
41.2M
      temp[y * kBlockDim + x] = r00;
87
41.2M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
41.2M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
41.2M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
41.2M
    }
91
10.3M
  }
92
23.2M
  for (size_t y = 0; y < S; y++) {
93
185M
    for (size_t x = 0; x < S; x++) {
94
165M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
165M
    }
96
20.6M
  }
97
2.57M
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.57M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.57M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.57M
  static_assert(S % 2 == 0, "S should be even");
70
2.57M
  float temp[kDCTBlockSize];
71
2.57M
  constexpr size_t num_2x2 = S / 2;
72
7.73M
  for (size_t y = 0; y < num_2x2; y++) {
73
15.4M
    for (size_t x = 0; x < num_2x2; x++) {
74
10.3M
      float c00 = block[y * 2 * stride + x * 2];
75
10.3M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
10.3M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
10.3M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
10.3M
      float r00 = c00 + c01 + c10 + c11;
79
10.3M
      float r01 = c00 + c01 - c10 - c11;
80
10.3M
      float r10 = c00 - c01 + c10 - c11;
81
10.3M
      float r11 = c00 - c01 - c10 + c11;
82
10.3M
      r00 *= 0.25f;
83
10.3M
      r01 *= 0.25f;
84
10.3M
      r10 *= 0.25f;
85
10.3M
      r11 *= 0.25f;
86
10.3M
      temp[y * kBlockDim + x] = r00;
87
10.3M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
10.3M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
10.3M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
10.3M
    }
91
5.15M
  }
92
12.8M
  for (size_t y = 0; y < S; y++) {
93
51.5M
    for (size_t x = 0; x < S; x++) {
94
41.2M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
41.2M
    }
96
10.3M
  }
97
2.57M
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
2.57M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
2.57M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
2.57M
  static_assert(S % 2 == 0, "S should be even");
70
2.57M
  float temp[kDCTBlockSize];
71
2.57M
  constexpr size_t num_2x2 = S / 2;
72
5.15M
  for (size_t y = 0; y < num_2x2; y++) {
73
5.15M
    for (size_t x = 0; x < num_2x2; x++) {
74
2.57M
      float c00 = block[y * 2 * stride + x * 2];
75
2.57M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
2.57M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
2.57M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
2.57M
      float r00 = c00 + c01 + c10 + c11;
79
2.57M
      float r01 = c00 + c01 - c10 - c11;
80
2.57M
      float r10 = c00 - c01 + c10 - c11;
81
2.57M
      float r11 = c00 - c01 - c10 + c11;
82
2.57M
      r00 *= 0.25f;
83
2.57M
      r01 *= 0.25f;
84
2.57M
      r10 *= 0.25f;
85
2.57M
      r11 *= 0.25f;
86
2.57M
      temp[y * kBlockDim + x] = r00;
87
2.57M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
2.57M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
2.57M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
2.57M
    }
91
2.57M
  }
92
7.73M
  for (size_t y = 0; y < S; y++) {
93
15.4M
    for (size_t x = 0; x < S; x++) {
94
10.3M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
10.3M
    }
96
5.15M
  }
97
2.57M
}
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
16.2M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
16.2M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
16.2M
  static_assert(S % 2 == 0, "S should be even");
70
16.2M
  float temp[kDCTBlockSize];
71
16.2M
  constexpr size_t num_2x2 = S / 2;
72
81.4M
  for (size_t y = 0; y < num_2x2; y++) {
73
325M
    for (size_t x = 0; x < num_2x2; x++) {
74
260M
      float c00 = block[y * 2 * stride + x * 2];
75
260M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
260M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
260M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
260M
      float r00 = c00 + c01 + c10 + c11;
79
260M
      float r01 = c00 + c01 - c10 - c11;
80
260M
      float r10 = c00 - c01 + c10 - c11;
81
260M
      float r11 = c00 - c01 - c10 + c11;
82
260M
      r00 *= 0.25f;
83
260M
      r01 *= 0.25f;
84
260M
      r10 *= 0.25f;
85
260M
      r11 *= 0.25f;
86
260M
      temp[y * kBlockDim + x] = r00;
87
260M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
260M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
260M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
260M
    }
91
65.1M
  }
92
146M
  for (size_t y = 0; y < S; y++) {
93
1.17G
    for (size_t x = 0; x < S; x++) {
94
1.04G
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
1.04G
    }
96
130M
  }
97
16.2M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<4ul>(float const*, unsigned long, float*)
Line
Count
Source
67
16.2M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
16.2M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
16.2M
  static_assert(S % 2 == 0, "S should be even");
70
16.2M
  float temp[kDCTBlockSize];
71
16.2M
  constexpr size_t num_2x2 = S / 2;
72
48.8M
  for (size_t y = 0; y < num_2x2; y++) {
73
97.7M
    for (size_t x = 0; x < num_2x2; x++) {
74
65.1M
      float c00 = block[y * 2 * stride + x * 2];
75
65.1M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
65.1M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
65.1M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
65.1M
      float r00 = c00 + c01 + c10 + c11;
79
65.1M
      float r01 = c00 + c01 - c10 - c11;
80
65.1M
      float r10 = c00 - c01 + c10 - c11;
81
65.1M
      float r11 = c00 - c01 - c10 + c11;
82
65.1M
      r00 *= 0.25f;
83
65.1M
      r01 *= 0.25f;
84
65.1M
      r10 *= 0.25f;
85
65.1M
      r11 *= 0.25f;
86
65.1M
      temp[y * kBlockDim + x] = r00;
87
65.1M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
65.1M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
65.1M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
65.1M
    }
91
32.5M
  }
92
81.4M
  for (size_t y = 0; y < S; y++) {
93
325M
    for (size_t x = 0; x < S; x++) {
94
260M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
260M
    }
96
65.1M
  }
97
16.2M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::DCT2TopBlock<2ul>(float const*, unsigned long, float*)
Line
Count
Source
67
16.2M
void DCT2TopBlock(const float* block, size_t stride, float* out) {
68
16.2M
  static_assert(kBlockDim % S == 0, "S should be a divisor of kBlockDim");
69
16.2M
  static_assert(S % 2 == 0, "S should be even");
70
16.2M
  float temp[kDCTBlockSize];
71
16.2M
  constexpr size_t num_2x2 = S / 2;
72
32.5M
  for (size_t y = 0; y < num_2x2; y++) {
73
32.5M
    for (size_t x = 0; x < num_2x2; x++) {
74
16.2M
      float c00 = block[y * 2 * stride + x * 2];
75
16.2M
      float c01 = block[y * 2 * stride + x * 2 + 1];
76
16.2M
      float c10 = block[(y * 2 + 1) * stride + x * 2];
77
16.2M
      float c11 = block[(y * 2 + 1) * stride + x * 2 + 1];
78
16.2M
      float r00 = c00 + c01 + c10 + c11;
79
16.2M
      float r01 = c00 + c01 - c10 - c11;
80
16.2M
      float r10 = c00 - c01 + c10 - c11;
81
16.2M
      float r11 = c00 - c01 - c10 + c11;
82
16.2M
      r00 *= 0.25f;
83
16.2M
      r01 *= 0.25f;
84
16.2M
      r10 *= 0.25f;
85
16.2M
      r11 *= 0.25f;
86
16.2M
      temp[y * kBlockDim + x] = r00;
87
16.2M
      temp[y * kBlockDim + num_2x2 + x] = r01;
88
16.2M
      temp[(y + num_2x2) * kBlockDim + x] = r10;
89
16.2M
      temp[(y + num_2x2) * kBlockDim + num_2x2 + x] = r11;
90
16.2M
    }
91
16.2M
  }
92
48.8M
  for (size_t y = 0; y < S; y++) {
93
97.7M
    for (size_t x = 0; x < S; x++) {
94
65.1M
      out[y * kBlockDim + x] = temp[y * kBlockDim + x];
95
65.1M
    }
96
32.5M
  }
97
16.2M
}
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
65.9M
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
65.9M
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
65.9M
      {
102
65.9M
          0.2500000000000000,
103
65.9M
          0.8769029297991420f,
104
65.9M
          0.0000000000000000,
105
65.9M
          0.0000000000000000,
106
65.9M
          0.0000000000000000,
107
65.9M
          -0.4105377591765233f,
108
65.9M
          0.0000000000000000,
109
65.9M
          0.0000000000000000,
110
65.9M
          0.0000000000000000,
111
65.9M
          0.0000000000000000,
112
65.9M
          0.0000000000000000,
113
65.9M
          0.0000000000000000,
114
65.9M
          0.0000000000000000,
115
65.9M
          0.0000000000000000,
116
65.9M
          0.0000000000000000,
117
65.9M
          0.0000000000000000,
118
65.9M
      },
119
65.9M
      {
120
65.9M
          0.2500000000000000,
121
65.9M
          0.2206518106944235f,
122
65.9M
          0.0000000000000000,
123
65.9M
          0.0000000000000000,
124
65.9M
          -0.7071067811865474f,
125
65.9M
          0.6235485373547691f,
126
65.9M
          0.0000000000000000,
127
65.9M
          0.0000000000000000,
128
65.9M
          0.0000000000000000,
129
65.9M
          0.0000000000000000,
130
65.9M
          0.0000000000000000,
131
65.9M
          0.0000000000000000,
132
65.9M
          0.0000000000000000,
133
65.9M
          0.0000000000000000,
134
65.9M
          0.0000000000000000,
135
65.9M
          0.0000000000000000,
136
65.9M
      },
137
65.9M
      {
138
65.9M
          0.2500000000000000,
139
65.9M
          -0.1014005039375376f,
140
65.9M
          0.4067007583026075f,
141
65.9M
          -0.2125574805828875f,
142
65.9M
          0.0000000000000000,
143
65.9M
          -0.0643507165794627f,
144
65.9M
          -0.4517556589999482f,
145
65.9M
          -0.3046847507248690f,
146
65.9M
          0.3017929516615495f,
147
65.9M
          0.4082482904638627f,
148
65.9M
          0.1747866975480809f,
149
65.9M
          -0.2110560104933578f,
150
65.9M
          -0.1426608480880726f,
151
65.9M
          -0.1381354035075859f,
152
65.9M
          -0.1743760259965107f,
153
65.9M
          0.1135498731499434f,
154
65.9M
      },
155
65.9M
      {
156
65.9M
          0.2500000000000000,
157
65.9M
          -0.1014005039375375f,
158
65.9M
          0.4444481661973445f,
159
65.9M
          0.3085497062849767f,
160
65.9M
          0.0000000000000000f,
161
65.9M
          -0.0643507165794627f,
162
65.9M
          0.1585450355184006f,
163
65.9M
          0.5112616136591823f,
164
65.9M
          0.2579236279634118f,
165
65.9M
          0.0000000000000000,
166
65.9M
          0.0812611176717539f,
167
65.9M
          0.1856718091610980f,
168
65.9M
          -0.3416446842253372f,
169
65.9M
          0.3302282550303788f,
170
65.9M
          0.0702790691196284f,
171
65.9M
          -0.0741750459581035f,
172
65.9M
      },
173
65.9M
      {
174
65.9M
          0.2500000000000000,
175
65.9M
          0.2206518106944236f,
176
65.9M
          0.0000000000000000,
177
65.9M
          0.0000000000000000,
178
65.9M
          0.7071067811865476f,
179
65.9M
          0.6235485373547694f,
180
65.9M
          0.0000000000000000,
181
65.9M
          0.0000000000000000,
182
65.9M
          0.0000000000000000,
183
65.9M
          0.0000000000000000,
184
65.9M
          0.0000000000000000,
185
65.9M
          0.0000000000000000,
186
65.9M
          0.0000000000000000,
187
65.9M
          0.0000000000000000,
188
65.9M
          0.0000000000000000,
189
65.9M
          0.0000000000000000,
190
65.9M
      },
191
65.9M
      {
192
65.9M
          0.2500000000000000,
193
65.9M
          -0.1014005039375378f,
194
65.9M
          0.0000000000000000,
195
65.9M
          0.4706702258572536f,
196
65.9M
          0.0000000000000000,
197
65.9M
          -0.0643507165794628f,
198
65.9M
          -0.0403851516082220f,
199
65.9M
          0.0000000000000000,
200
65.9M
          0.1627234014286620f,
201
65.9M
          0.0000000000000000,
202
65.9M
          0.0000000000000000,
203
65.9M
          0.0000000000000000,
204
65.9M
          0.7367497537172237f,
205
65.9M
          0.0875511500058708f,
206
65.9M
          -0.2921026642334881f,
207
65.9M
          0.1940289303259434f,
208
65.9M
      },
209
65.9M
      {
210
65.9M
          0.2500000000000000,
211
65.9M
          -0.1014005039375377f,
212
65.9M
          0.1957439937204294f,
213
65.9M
          -0.1621205195722993f,
214
65.9M
          0.0000000000000000,
215
65.9M
          -0.0643507165794628f,
216
65.9M
          0.0074182263792424f,
217
65.9M
          -0.2904801297289980f,
218
65.9M
          0.0952002265347504f,
219
65.9M
          0.0000000000000000,
220
65.9M
          -0.3675398009862027f,
221
65.9M
          0.4921585901373873f,
222
65.9M
          0.2462710772207515f,
223
65.9M
          -0.0794670660590957f,
224
65.9M
          0.3623817333531167f,
225
65.9M
          -0.4351904965232280f,
226
65.9M
      },
227
65.9M
      {
228
65.9M
          0.2500000000000000,
229
65.9M
          -0.1014005039375376f,
230
65.9M
          0.2929100136981264f,
231
65.9M
          0.0000000000000000,
232
65.9M
          0.0000000000000000,
233
65.9M
          -0.0643507165794627f,
234
65.9M
          0.3935103426921017f,
235
65.9M
          -0.0657870154914280f,
236
65.9M
          0.0000000000000000,
237
65.9M
          -0.4082482904638628f,
238
65.9M
          -0.3078822139579090f,
239
65.9M
          -0.3852501370925192f,
240
65.9M
          -0.0857401903551931f,
241
65.9M
          -0.4613374887461511f,
242
65.9M
          0.0000000000000000,
243
65.9M
          0.2191868483885747f,
244
65.9M
      },
245
65.9M
      {
246
65.9M
          0.2500000000000000,
247
65.9M
          -0.1014005039375376f,
248
65.9M
          -0.4067007583026072f,
249
65.9M
          -0.2125574805828705f,
250
65.9M
          0.0000000000000000,
251
65.9M
          -0.0643507165794627f,
252
65.9M
          -0.4517556589999464f,
253
65.9M
          0.3046847507248840f,
254
65.9M
          0.3017929516615503f,
255
65.9M
          -0.4082482904638635f,
256
65.9M
          -0.1747866975480813f,
257
65.9M
          0.2110560104933581f,
258
65.9M
          -0.1426608480880734f,
259
65.9M
          -0.1381354035075829f,
260
65.9M
          -0.1743760259965108f,
261
65.9M
          0.1135498731499426f,
262
65.9M
      },
263
65.9M
      {
264
65.9M
          0.2500000000000000,
265
65.9M
          -0.1014005039375377f,
266
65.9M
          -0.1957439937204287f,
267
65.9M
          -0.1621205195722833f,
268
65.9M
          0.0000000000000000,
269
65.9M
          -0.0643507165794628f,
270
65.9M
          0.0074182263792444f,
271
65.9M
          0.2904801297290076f,
272
65.9M
          0.0952002265347505f,
273
65.9M
          0.0000000000000000,
274
65.9M
          0.3675398009862011f,
275
65.9M
          -0.4921585901373891f,
276
65.9M
          0.2462710772207514f,
277
65.9M
          -0.0794670660591026f,
278
65.9M
          0.3623817333531165f,
279
65.9M
          -0.4351904965232251f,
280
65.9M
      },
281
65.9M
      {
282
65.9M
          0.2500000000000000,
283
65.9M
          -0.1014005039375375f,
284
65.9M
          0.0000000000000000,
285
65.9M
          -0.4706702258572528f,
286
65.9M
          0.0000000000000000,
287
65.9M
          -0.0643507165794627f,
288
65.9M
          0.1107416575309343f,
289
65.9M
          0.0000000000000000,
290
65.9M
          -0.1627234014286617f,
291
65.9M
          0.0000000000000000,
292
65.9M
          0.0000000000000000,
293
65.9M
          0.0000000000000000,
294
65.9M
          0.1488339922711357f,
295
65.9M
          0.4972464710953509f,
296
65.9M
          0.2921026642334879f,
297
65.9M
          0.5550443808910661f,
298
65.9M
      },
299
65.9M
      {
300
65.9M
          0.2500000000000000,
301
65.9M
          -0.1014005039375377f,
302
65.9M
          0.1137907446044809f,
303
65.9M
          -0.1464291867126764f,
304
65.9M
          0.0000000000000000,
305
65.9M
          -0.0643507165794628f,
306
65.9M
          0.0829816309488205f,
307
65.9M
          -0.2388977352334460f,
308
65.9M
          -0.3531238544981630f,
309
65.9M
          -0.4082482904638630f,
310
65.9M
          0.4826689115059883f,
311
65.9M
          0.1741941265991622f,
312
65.9M
          -0.0476868035022925f,
313
65.9M
          0.1253805944856366f,
314
65.9M
          -0.4326608024727445f,
315
65.9M
          -0.2546827712406646f,
316
65.9M
      },
317
65.9M
      {
318
65.9M
          0.2500000000000000,
319
65.9M
          -0.1014005039375377f,
320
65.9M
          -0.4444481661973438f,
321
65.9M
          0.3085497062849487f,
322
65.9M
          0.0000000000000000,
323
65.9M
          -0.0643507165794628f,
324
65.9M
          0.1585450355183970f,
325
65.9M
          -0.5112616136592012f,
326
65.9M
          0.2579236279634129f,
327
65.9M
          0.0000000000000000,
328
65.9M
          -0.0812611176717504f,
329
65.9M
          -0.1856718091610990f,
330
65.9M
          -0.3416446842253373f,
331
65.9M
          0.3302282550303805f,
332
65.9M
          0.0702790691196282f,
333
65.9M
          -0.0741750459581023f,
334
65.9M
      },
335
65.9M
      {
336
65.9M
          0.2500000000000000,
337
65.9M
          -0.1014005039375376f,
338
65.9M
          -0.2929100136981264f,
339
65.9M
          0.0000000000000000,
340
65.9M
          0.0000000000000000,
341
65.9M
          -0.0643507165794627f,
342
65.9M
          0.3935103426921022f,
343
65.9M
          0.0657870154914254f,
344
65.9M
          0.0000000000000000,
345
65.9M
          0.4082482904638634f,
346
65.9M
          0.3078822139579031f,
347
65.9M
          0.3852501370925211f,
348
65.9M
          -0.0857401903551927f,
349
65.9M
          -0.4613374887461554f,
350
65.9M
          0.0000000000000000,
351
65.9M
          0.2191868483885728f,
352
65.9M
      },
353
65.9M
      {
354
65.9M
          0.2500000000000000,
355
65.9M
          -0.1014005039375376f,
356
65.9M
          -0.1137907446044814f,
357
65.9M
          -0.1464291867126654f,
358
65.9M
          0.0000000000000000,
359
65.9M
          -0.0643507165794627f,
360
65.9M
          0.0829816309488214f,
361
65.9M
          0.2388977352334547f,
362
65.9M
          -0.3531238544981624f,
363
65.9M
          0.4082482904638630f,
364
65.9M
          -0.4826689115059858f,
365
65.9M
          -0.1741941265991621f,
366
65.9M
          -0.0476868035022928f,
367
65.9M
          0.1253805944856431f,
368
65.9M
          -0.4326608024727457f,
369
65.9M
          -0.2546827712406641f,
370
65.9M
      },
371
65.9M
      {
372
65.9M
          0.2500000000000000,
373
65.9M
          -0.1014005039375374f,
374
65.9M
          0.0000000000000000,
375
65.9M
          0.4251149611657548f,
376
65.9M
          0.0000000000000000,
377
65.9M
          -0.0643507165794626f,
378
65.9M
          -0.4517556589999480f,
379
65.9M
          0.0000000000000000,
380
65.9M
          -0.6035859033230976f,
381
65.9M
          0.0000000000000000,
382
65.9M
          0.0000000000000000,
383
65.9M
          0.0000000000000000,
384
65.9M
          -0.1426608480880724f,
385
65.9M
          -0.1381354035075845f,
386
65.9M
          0.3487520519930227f,
387
65.9M
          0.1135498731499429f,
388
65.9M
      },
389
65.9M
  };
390
391
65.9M
  const HWY_CAPPED(float, 16) d;
392
197M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
131M
    auto scalar = Zero(d);
394
2.24G
    for (size_t j = 0; j < 16; j++) {
395
2.11G
      auto px = Set(d, pixels[j]);
396
2.11G
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
2.11G
      scalar = MulAdd(px, basis, scalar);
398
2.11G
    }
399
131M
    Store(scalar, d, coeffs + i);
400
131M
  }
401
65.9M
}
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
374k
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
374k
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
374k
      {
102
374k
          0.2500000000000000,
103
374k
          0.8769029297991420f,
104
374k
          0.0000000000000000,
105
374k
          0.0000000000000000,
106
374k
          0.0000000000000000,
107
374k
          -0.4105377591765233f,
108
374k
          0.0000000000000000,
109
374k
          0.0000000000000000,
110
374k
          0.0000000000000000,
111
374k
          0.0000000000000000,
112
374k
          0.0000000000000000,
113
374k
          0.0000000000000000,
114
374k
          0.0000000000000000,
115
374k
          0.0000000000000000,
116
374k
          0.0000000000000000,
117
374k
          0.0000000000000000,
118
374k
      },
119
374k
      {
120
374k
          0.2500000000000000,
121
374k
          0.2206518106944235f,
122
374k
          0.0000000000000000,
123
374k
          0.0000000000000000,
124
374k
          -0.7071067811865474f,
125
374k
          0.6235485373547691f,
126
374k
          0.0000000000000000,
127
374k
          0.0000000000000000,
128
374k
          0.0000000000000000,
129
374k
          0.0000000000000000,
130
374k
          0.0000000000000000,
131
374k
          0.0000000000000000,
132
374k
          0.0000000000000000,
133
374k
          0.0000000000000000,
134
374k
          0.0000000000000000,
135
374k
          0.0000000000000000,
136
374k
      },
137
374k
      {
138
374k
          0.2500000000000000,
139
374k
          -0.1014005039375376f,
140
374k
          0.4067007583026075f,
141
374k
          -0.2125574805828875f,
142
374k
          0.0000000000000000,
143
374k
          -0.0643507165794627f,
144
374k
          -0.4517556589999482f,
145
374k
          -0.3046847507248690f,
146
374k
          0.3017929516615495f,
147
374k
          0.4082482904638627f,
148
374k
          0.1747866975480809f,
149
374k
          -0.2110560104933578f,
150
374k
          -0.1426608480880726f,
151
374k
          -0.1381354035075859f,
152
374k
          -0.1743760259965107f,
153
374k
          0.1135498731499434f,
154
374k
      },
155
374k
      {
156
374k
          0.2500000000000000,
157
374k
          -0.1014005039375375f,
158
374k
          0.4444481661973445f,
159
374k
          0.3085497062849767f,
160
374k
          0.0000000000000000f,
161
374k
          -0.0643507165794627f,
162
374k
          0.1585450355184006f,
163
374k
          0.5112616136591823f,
164
374k
          0.2579236279634118f,
165
374k
          0.0000000000000000,
166
374k
          0.0812611176717539f,
167
374k
          0.1856718091610980f,
168
374k
          -0.3416446842253372f,
169
374k
          0.3302282550303788f,
170
374k
          0.0702790691196284f,
171
374k
          -0.0741750459581035f,
172
374k
      },
173
374k
      {
174
374k
          0.2500000000000000,
175
374k
          0.2206518106944236f,
176
374k
          0.0000000000000000,
177
374k
          0.0000000000000000,
178
374k
          0.7071067811865476f,
179
374k
          0.6235485373547694f,
180
374k
          0.0000000000000000,
181
374k
          0.0000000000000000,
182
374k
          0.0000000000000000,
183
374k
          0.0000000000000000,
184
374k
          0.0000000000000000,
185
374k
          0.0000000000000000,
186
374k
          0.0000000000000000,
187
374k
          0.0000000000000000,
188
374k
          0.0000000000000000,
189
374k
          0.0000000000000000,
190
374k
      },
191
374k
      {
192
374k
          0.2500000000000000,
193
374k
          -0.1014005039375378f,
194
374k
          0.0000000000000000,
195
374k
          0.4706702258572536f,
196
374k
          0.0000000000000000,
197
374k
          -0.0643507165794628f,
198
374k
          -0.0403851516082220f,
199
374k
          0.0000000000000000,
200
374k
          0.1627234014286620f,
201
374k
          0.0000000000000000,
202
374k
          0.0000000000000000,
203
374k
          0.0000000000000000,
204
374k
          0.7367497537172237f,
205
374k
          0.0875511500058708f,
206
374k
          -0.2921026642334881f,
207
374k
          0.1940289303259434f,
208
374k
      },
209
374k
      {
210
374k
          0.2500000000000000,
211
374k
          -0.1014005039375377f,
212
374k
          0.1957439937204294f,
213
374k
          -0.1621205195722993f,
214
374k
          0.0000000000000000,
215
374k
          -0.0643507165794628f,
216
374k
          0.0074182263792424f,
217
374k
          -0.2904801297289980f,
218
374k
          0.0952002265347504f,
219
374k
          0.0000000000000000,
220
374k
          -0.3675398009862027f,
221
374k
          0.4921585901373873f,
222
374k
          0.2462710772207515f,
223
374k
          -0.0794670660590957f,
224
374k
          0.3623817333531167f,
225
374k
          -0.4351904965232280f,
226
374k
      },
227
374k
      {
228
374k
          0.2500000000000000,
229
374k
          -0.1014005039375376f,
230
374k
          0.2929100136981264f,
231
374k
          0.0000000000000000,
232
374k
          0.0000000000000000,
233
374k
          -0.0643507165794627f,
234
374k
          0.3935103426921017f,
235
374k
          -0.0657870154914280f,
236
374k
          0.0000000000000000,
237
374k
          -0.4082482904638628f,
238
374k
          -0.3078822139579090f,
239
374k
          -0.3852501370925192f,
240
374k
          -0.0857401903551931f,
241
374k
          -0.4613374887461511f,
242
374k
          0.0000000000000000,
243
374k
          0.2191868483885747f,
244
374k
      },
245
374k
      {
246
374k
          0.2500000000000000,
247
374k
          -0.1014005039375376f,
248
374k
          -0.4067007583026072f,
249
374k
          -0.2125574805828705f,
250
374k
          0.0000000000000000,
251
374k
          -0.0643507165794627f,
252
374k
          -0.4517556589999464f,
253
374k
          0.3046847507248840f,
254
374k
          0.3017929516615503f,
255
374k
          -0.4082482904638635f,
256
374k
          -0.1747866975480813f,
257
374k
          0.2110560104933581f,
258
374k
          -0.1426608480880734f,
259
374k
          -0.1381354035075829f,
260
374k
          -0.1743760259965108f,
261
374k
          0.1135498731499426f,
262
374k
      },
263
374k
      {
264
374k
          0.2500000000000000,
265
374k
          -0.1014005039375377f,
266
374k
          -0.1957439937204287f,
267
374k
          -0.1621205195722833f,
268
374k
          0.0000000000000000,
269
374k
          -0.0643507165794628f,
270
374k
          0.0074182263792444f,
271
374k
          0.2904801297290076f,
272
374k
          0.0952002265347505f,
273
374k
          0.0000000000000000,
274
374k
          0.3675398009862011f,
275
374k
          -0.4921585901373891f,
276
374k
          0.2462710772207514f,
277
374k
          -0.0794670660591026f,
278
374k
          0.3623817333531165f,
279
374k
          -0.4351904965232251f,
280
374k
      },
281
374k
      {
282
374k
          0.2500000000000000,
283
374k
          -0.1014005039375375f,
284
374k
          0.0000000000000000,
285
374k
          -0.4706702258572528f,
286
374k
          0.0000000000000000,
287
374k
          -0.0643507165794627f,
288
374k
          0.1107416575309343f,
289
374k
          0.0000000000000000,
290
374k
          -0.1627234014286617f,
291
374k
          0.0000000000000000,
292
374k
          0.0000000000000000,
293
374k
          0.0000000000000000,
294
374k
          0.1488339922711357f,
295
374k
          0.4972464710953509f,
296
374k
          0.2921026642334879f,
297
374k
          0.5550443808910661f,
298
374k
      },
299
374k
      {
300
374k
          0.2500000000000000,
301
374k
          -0.1014005039375377f,
302
374k
          0.1137907446044809f,
303
374k
          -0.1464291867126764f,
304
374k
          0.0000000000000000,
305
374k
          -0.0643507165794628f,
306
374k
          0.0829816309488205f,
307
374k
          -0.2388977352334460f,
308
374k
          -0.3531238544981630f,
309
374k
          -0.4082482904638630f,
310
374k
          0.4826689115059883f,
311
374k
          0.1741941265991622f,
312
374k
          -0.0476868035022925f,
313
374k
          0.1253805944856366f,
314
374k
          -0.4326608024727445f,
315
374k
          -0.2546827712406646f,
316
374k
      },
317
374k
      {
318
374k
          0.2500000000000000,
319
374k
          -0.1014005039375377f,
320
374k
          -0.4444481661973438f,
321
374k
          0.3085497062849487f,
322
374k
          0.0000000000000000,
323
374k
          -0.0643507165794628f,
324
374k
          0.1585450355183970f,
325
374k
          -0.5112616136592012f,
326
374k
          0.2579236279634129f,
327
374k
          0.0000000000000000,
328
374k
          -0.0812611176717504f,
329
374k
          -0.1856718091610990f,
330
374k
          -0.3416446842253373f,
331
374k
          0.3302282550303805f,
332
374k
          0.0702790691196282f,
333
374k
          -0.0741750459581023f,
334
374k
      },
335
374k
      {
336
374k
          0.2500000000000000,
337
374k
          -0.1014005039375376f,
338
374k
          -0.2929100136981264f,
339
374k
          0.0000000000000000,
340
374k
          0.0000000000000000,
341
374k
          -0.0643507165794627f,
342
374k
          0.3935103426921022f,
343
374k
          0.0657870154914254f,
344
374k
          0.0000000000000000,
345
374k
          0.4082482904638634f,
346
374k
          0.3078822139579031f,
347
374k
          0.3852501370925211f,
348
374k
          -0.0857401903551927f,
349
374k
          -0.4613374887461554f,
350
374k
          0.0000000000000000,
351
374k
          0.2191868483885728f,
352
374k
      },
353
374k
      {
354
374k
          0.2500000000000000,
355
374k
          -0.1014005039375376f,
356
374k
          -0.1137907446044814f,
357
374k
          -0.1464291867126654f,
358
374k
          0.0000000000000000,
359
374k
          -0.0643507165794627f,
360
374k
          0.0829816309488214f,
361
374k
          0.2388977352334547f,
362
374k
          -0.3531238544981624f,
363
374k
          0.4082482904638630f,
364
374k
          -0.4826689115059858f,
365
374k
          -0.1741941265991621f,
366
374k
          -0.0476868035022928f,
367
374k
          0.1253805944856431f,
368
374k
          -0.4326608024727457f,
369
374k
          -0.2546827712406641f,
370
374k
      },
371
374k
      {
372
374k
          0.2500000000000000,
373
374k
          -0.1014005039375374f,
374
374k
          0.0000000000000000,
375
374k
          0.4251149611657548f,
376
374k
          0.0000000000000000,
377
374k
          -0.0643507165794626f,
378
374k
          -0.4517556589999480f,
379
374k
          0.0000000000000000,
380
374k
          -0.6035859033230976f,
381
374k
          0.0000000000000000,
382
374k
          0.0000000000000000,
383
374k
          0.0000000000000000,
384
374k
          -0.1426608480880724f,
385
374k
          -0.1381354035075845f,
386
374k
          0.3487520519930227f,
387
374k
          0.1135498731499429f,
388
374k
      },
389
374k
  };
390
391
374k
  const HWY_CAPPED(float, 16) d;
392
1.12M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
749k
    auto scalar = Zero(d);
394
12.7M
    for (size_t j = 0; j < 16; j++) {
395
11.9M
      auto px = Set(d, pixels[j]);
396
11.9M
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
11.9M
      scalar = MulAdd(px, basis, scalar);
398
11.9M
    }
399
749k
    Store(scalar, d, coeffs + i);
400
749k
  }
401
374k
}
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
374k
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
374k
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
374k
      {
102
374k
          0.2500000000000000,
103
374k
          0.8769029297991420f,
104
374k
          0.0000000000000000,
105
374k
          0.0000000000000000,
106
374k
          0.0000000000000000,
107
374k
          -0.4105377591765233f,
108
374k
          0.0000000000000000,
109
374k
          0.0000000000000000,
110
374k
          0.0000000000000000,
111
374k
          0.0000000000000000,
112
374k
          0.0000000000000000,
113
374k
          0.0000000000000000,
114
374k
          0.0000000000000000,
115
374k
          0.0000000000000000,
116
374k
          0.0000000000000000,
117
374k
          0.0000000000000000,
118
374k
      },
119
374k
      {
120
374k
          0.2500000000000000,
121
374k
          0.2206518106944235f,
122
374k
          0.0000000000000000,
123
374k
          0.0000000000000000,
124
374k
          -0.7071067811865474f,
125
374k
          0.6235485373547691f,
126
374k
          0.0000000000000000,
127
374k
          0.0000000000000000,
128
374k
          0.0000000000000000,
129
374k
          0.0000000000000000,
130
374k
          0.0000000000000000,
131
374k
          0.0000000000000000,
132
374k
          0.0000000000000000,
133
374k
          0.0000000000000000,
134
374k
          0.0000000000000000,
135
374k
          0.0000000000000000,
136
374k
      },
137
374k
      {
138
374k
          0.2500000000000000,
139
374k
          -0.1014005039375376f,
140
374k
          0.4067007583026075f,
141
374k
          -0.2125574805828875f,
142
374k
          0.0000000000000000,
143
374k
          -0.0643507165794627f,
144
374k
          -0.4517556589999482f,
145
374k
          -0.3046847507248690f,
146
374k
          0.3017929516615495f,
147
374k
          0.4082482904638627f,
148
374k
          0.1747866975480809f,
149
374k
          -0.2110560104933578f,
150
374k
          -0.1426608480880726f,
151
374k
          -0.1381354035075859f,
152
374k
          -0.1743760259965107f,
153
374k
          0.1135498731499434f,
154
374k
      },
155
374k
      {
156
374k
          0.2500000000000000,
157
374k
          -0.1014005039375375f,
158
374k
          0.4444481661973445f,
159
374k
          0.3085497062849767f,
160
374k
          0.0000000000000000f,
161
374k
          -0.0643507165794627f,
162
374k
          0.1585450355184006f,
163
374k
          0.5112616136591823f,
164
374k
          0.2579236279634118f,
165
374k
          0.0000000000000000,
166
374k
          0.0812611176717539f,
167
374k
          0.1856718091610980f,
168
374k
          -0.3416446842253372f,
169
374k
          0.3302282550303788f,
170
374k
          0.0702790691196284f,
171
374k
          -0.0741750459581035f,
172
374k
      },
173
374k
      {
174
374k
          0.2500000000000000,
175
374k
          0.2206518106944236f,
176
374k
          0.0000000000000000,
177
374k
          0.0000000000000000,
178
374k
          0.7071067811865476f,
179
374k
          0.6235485373547694f,
180
374k
          0.0000000000000000,
181
374k
          0.0000000000000000,
182
374k
          0.0000000000000000,
183
374k
          0.0000000000000000,
184
374k
          0.0000000000000000,
185
374k
          0.0000000000000000,
186
374k
          0.0000000000000000,
187
374k
          0.0000000000000000,
188
374k
          0.0000000000000000,
189
374k
          0.0000000000000000,
190
374k
      },
191
374k
      {
192
374k
          0.2500000000000000,
193
374k
          -0.1014005039375378f,
194
374k
          0.0000000000000000,
195
374k
          0.4706702258572536f,
196
374k
          0.0000000000000000,
197
374k
          -0.0643507165794628f,
198
374k
          -0.0403851516082220f,
199
374k
          0.0000000000000000,
200
374k
          0.1627234014286620f,
201
374k
          0.0000000000000000,
202
374k
          0.0000000000000000,
203
374k
          0.0000000000000000,
204
374k
          0.7367497537172237f,
205
374k
          0.0875511500058708f,
206
374k
          -0.2921026642334881f,
207
374k
          0.1940289303259434f,
208
374k
      },
209
374k
      {
210
374k
          0.2500000000000000,
211
374k
          -0.1014005039375377f,
212
374k
          0.1957439937204294f,
213
374k
          -0.1621205195722993f,
214
374k
          0.0000000000000000,
215
374k
          -0.0643507165794628f,
216
374k
          0.0074182263792424f,
217
374k
          -0.2904801297289980f,
218
374k
          0.0952002265347504f,
219
374k
          0.0000000000000000,
220
374k
          -0.3675398009862027f,
221
374k
          0.4921585901373873f,
222
374k
          0.2462710772207515f,
223
374k
          -0.0794670660590957f,
224
374k
          0.3623817333531167f,
225
374k
          -0.4351904965232280f,
226
374k
      },
227
374k
      {
228
374k
          0.2500000000000000,
229
374k
          -0.1014005039375376f,
230
374k
          0.2929100136981264f,
231
374k
          0.0000000000000000,
232
374k
          0.0000000000000000,
233
374k
          -0.0643507165794627f,
234
374k
          0.3935103426921017f,
235
374k
          -0.0657870154914280f,
236
374k
          0.0000000000000000,
237
374k
          -0.4082482904638628f,
238
374k
          -0.3078822139579090f,
239
374k
          -0.3852501370925192f,
240
374k
          -0.0857401903551931f,
241
374k
          -0.4613374887461511f,
242
374k
          0.0000000000000000,
243
374k
          0.2191868483885747f,
244
374k
      },
245
374k
      {
246
374k
          0.2500000000000000,
247
374k
          -0.1014005039375376f,
248
374k
          -0.4067007583026072f,
249
374k
          -0.2125574805828705f,
250
374k
          0.0000000000000000,
251
374k
          -0.0643507165794627f,
252
374k
          -0.4517556589999464f,
253
374k
          0.3046847507248840f,
254
374k
          0.3017929516615503f,
255
374k
          -0.4082482904638635f,
256
374k
          -0.1747866975480813f,
257
374k
          0.2110560104933581f,
258
374k
          -0.1426608480880734f,
259
374k
          -0.1381354035075829f,
260
374k
          -0.1743760259965108f,
261
374k
          0.1135498731499426f,
262
374k
      },
263
374k
      {
264
374k
          0.2500000000000000,
265
374k
          -0.1014005039375377f,
266
374k
          -0.1957439937204287f,
267
374k
          -0.1621205195722833f,
268
374k
          0.0000000000000000,
269
374k
          -0.0643507165794628f,
270
374k
          0.0074182263792444f,
271
374k
          0.2904801297290076f,
272
374k
          0.0952002265347505f,
273
374k
          0.0000000000000000,
274
374k
          0.3675398009862011f,
275
374k
          -0.4921585901373891f,
276
374k
          0.2462710772207514f,
277
374k
          -0.0794670660591026f,
278
374k
          0.3623817333531165f,
279
374k
          -0.4351904965232251f,
280
374k
      },
281
374k
      {
282
374k
          0.2500000000000000,
283
374k
          -0.1014005039375375f,
284
374k
          0.0000000000000000,
285
374k
          -0.4706702258572528f,
286
374k
          0.0000000000000000,
287
374k
          -0.0643507165794627f,
288
374k
          0.1107416575309343f,
289
374k
          0.0000000000000000,
290
374k
          -0.1627234014286617f,
291
374k
          0.0000000000000000,
292
374k
          0.0000000000000000,
293
374k
          0.0000000000000000,
294
374k
          0.1488339922711357f,
295
374k
          0.4972464710953509f,
296
374k
          0.2921026642334879f,
297
374k
          0.5550443808910661f,
298
374k
      },
299
374k
      {
300
374k
          0.2500000000000000,
301
374k
          -0.1014005039375377f,
302
374k
          0.1137907446044809f,
303
374k
          -0.1464291867126764f,
304
374k
          0.0000000000000000,
305
374k
          -0.0643507165794628f,
306
374k
          0.0829816309488205f,
307
374k
          -0.2388977352334460f,
308
374k
          -0.3531238544981630f,
309
374k
          -0.4082482904638630f,
310
374k
          0.4826689115059883f,
311
374k
          0.1741941265991622f,
312
374k
          -0.0476868035022925f,
313
374k
          0.1253805944856366f,
314
374k
          -0.4326608024727445f,
315
374k
          -0.2546827712406646f,
316
374k
      },
317
374k
      {
318
374k
          0.2500000000000000,
319
374k
          -0.1014005039375377f,
320
374k
          -0.4444481661973438f,
321
374k
          0.3085497062849487f,
322
374k
          0.0000000000000000,
323
374k
          -0.0643507165794628f,
324
374k
          0.1585450355183970f,
325
374k
          -0.5112616136592012f,
326
374k
          0.2579236279634129f,
327
374k
          0.0000000000000000,
328
374k
          -0.0812611176717504f,
329
374k
          -0.1856718091610990f,
330
374k
          -0.3416446842253373f,
331
374k
          0.3302282550303805f,
332
374k
          0.0702790691196282f,
333
374k
          -0.0741750459581023f,
334
374k
      },
335
374k
      {
336
374k
          0.2500000000000000,
337
374k
          -0.1014005039375376f,
338
374k
          -0.2929100136981264f,
339
374k
          0.0000000000000000,
340
374k
          0.0000000000000000,
341
374k
          -0.0643507165794627f,
342
374k
          0.3935103426921022f,
343
374k
          0.0657870154914254f,
344
374k
          0.0000000000000000,
345
374k
          0.4082482904638634f,
346
374k
          0.3078822139579031f,
347
374k
          0.3852501370925211f,
348
374k
          -0.0857401903551927f,
349
374k
          -0.4613374887461554f,
350
374k
          0.0000000000000000,
351
374k
          0.2191868483885728f,
352
374k
      },
353
374k
      {
354
374k
          0.2500000000000000,
355
374k
          -0.1014005039375376f,
356
374k
          -0.1137907446044814f,
357
374k
          -0.1464291867126654f,
358
374k
          0.0000000000000000,
359
374k
          -0.0643507165794627f,
360
374k
          0.0829816309488214f,
361
374k
          0.2388977352334547f,
362
374k
          -0.3531238544981624f,
363
374k
          0.4082482904638630f,
364
374k
          -0.4826689115059858f,
365
374k
          -0.1741941265991621f,
366
374k
          -0.0476868035022928f,
367
374k
          0.1253805944856431f,
368
374k
          -0.4326608024727457f,
369
374k
          -0.2546827712406641f,
370
374k
      },
371
374k
      {
372
374k
          0.2500000000000000,
373
374k
          -0.1014005039375374f,
374
374k
          0.0000000000000000,
375
374k
          0.4251149611657548f,
376
374k
          0.0000000000000000,
377
374k
          -0.0643507165794626f,
378
374k
          -0.4517556589999480f,
379
374k
          0.0000000000000000,
380
374k
          -0.6035859033230976f,
381
374k
          0.0000000000000000,
382
374k
          0.0000000000000000,
383
374k
          0.0000000000000000,
384
374k
          -0.1426608480880724f,
385
374k
          -0.1381354035075845f,
386
374k
          0.3487520519930227f,
387
374k
          0.1135498731499429f,
388
374k
      },
389
374k
  };
390
391
374k
  const HWY_CAPPED(float, 16) d;
392
1.12M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
749k
    auto scalar = Zero(d);
394
12.7M
    for (size_t j = 0; j < 16; j++) {
395
11.9M
      auto px = Set(d, pixels[j]);
396
11.9M
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
11.9M
      scalar = MulAdd(px, basis, scalar);
398
11.9M
    }
399
749k
    Store(scalar, d, coeffs + i);
400
749k
  }
401
374k
}
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
65.1M
void AFVDCT4x4(const float* JXL_RESTRICT pixels, float* JXL_RESTRICT coeffs) {
100
65.1M
  HWY_ALIGN static constexpr float k4x4AFVBasisTranspose[16][16] = {
101
65.1M
      {
102
65.1M
          0.2500000000000000,
103
65.1M
          0.8769029297991420f,
104
65.1M
          0.0000000000000000,
105
65.1M
          0.0000000000000000,
106
65.1M
          0.0000000000000000,
107
65.1M
          -0.4105377591765233f,
108
65.1M
          0.0000000000000000,
109
65.1M
          0.0000000000000000,
110
65.1M
          0.0000000000000000,
111
65.1M
          0.0000000000000000,
112
65.1M
          0.0000000000000000,
113
65.1M
          0.0000000000000000,
114
65.1M
          0.0000000000000000,
115
65.1M
          0.0000000000000000,
116
65.1M
          0.0000000000000000,
117
65.1M
          0.0000000000000000,
118
65.1M
      },
119
65.1M
      {
120
65.1M
          0.2500000000000000,
121
65.1M
          0.2206518106944235f,
122
65.1M
          0.0000000000000000,
123
65.1M
          0.0000000000000000,
124
65.1M
          -0.7071067811865474f,
125
65.1M
          0.6235485373547691f,
126
65.1M
          0.0000000000000000,
127
65.1M
          0.0000000000000000,
128
65.1M
          0.0000000000000000,
129
65.1M
          0.0000000000000000,
130
65.1M
          0.0000000000000000,
131
65.1M
          0.0000000000000000,
132
65.1M
          0.0000000000000000,
133
65.1M
          0.0000000000000000,
134
65.1M
          0.0000000000000000,
135
65.1M
          0.0000000000000000,
136
65.1M
      },
137
65.1M
      {
138
65.1M
          0.2500000000000000,
139
65.1M
          -0.1014005039375376f,
140
65.1M
          0.4067007583026075f,
141
65.1M
          -0.2125574805828875f,
142
65.1M
          0.0000000000000000,
143
65.1M
          -0.0643507165794627f,
144
65.1M
          -0.4517556589999482f,
145
65.1M
          -0.3046847507248690f,
146
65.1M
          0.3017929516615495f,
147
65.1M
          0.4082482904638627f,
148
65.1M
          0.1747866975480809f,
149
65.1M
          -0.2110560104933578f,
150
65.1M
          -0.1426608480880726f,
151
65.1M
          -0.1381354035075859f,
152
65.1M
          -0.1743760259965107f,
153
65.1M
          0.1135498731499434f,
154
65.1M
      },
155
65.1M
      {
156
65.1M
          0.2500000000000000,
157
65.1M
          -0.1014005039375375f,
158
65.1M
          0.4444481661973445f,
159
65.1M
          0.3085497062849767f,
160
65.1M
          0.0000000000000000f,
161
65.1M
          -0.0643507165794627f,
162
65.1M
          0.1585450355184006f,
163
65.1M
          0.5112616136591823f,
164
65.1M
          0.2579236279634118f,
165
65.1M
          0.0000000000000000,
166
65.1M
          0.0812611176717539f,
167
65.1M
          0.1856718091610980f,
168
65.1M
          -0.3416446842253372f,
169
65.1M
          0.3302282550303788f,
170
65.1M
          0.0702790691196284f,
171
65.1M
          -0.0741750459581035f,
172
65.1M
      },
173
65.1M
      {
174
65.1M
          0.2500000000000000,
175
65.1M
          0.2206518106944236f,
176
65.1M
          0.0000000000000000,
177
65.1M
          0.0000000000000000,
178
65.1M
          0.7071067811865476f,
179
65.1M
          0.6235485373547694f,
180
65.1M
          0.0000000000000000,
181
65.1M
          0.0000000000000000,
182
65.1M
          0.0000000000000000,
183
65.1M
          0.0000000000000000,
184
65.1M
          0.0000000000000000,
185
65.1M
          0.0000000000000000,
186
65.1M
          0.0000000000000000,
187
65.1M
          0.0000000000000000,
188
65.1M
          0.0000000000000000,
189
65.1M
          0.0000000000000000,
190
65.1M
      },
191
65.1M
      {
192
65.1M
          0.2500000000000000,
193
65.1M
          -0.1014005039375378f,
194
65.1M
          0.0000000000000000,
195
65.1M
          0.4706702258572536f,
196
65.1M
          0.0000000000000000,
197
65.1M
          -0.0643507165794628f,
198
65.1M
          -0.0403851516082220f,
199
65.1M
          0.0000000000000000,
200
65.1M
          0.1627234014286620f,
201
65.1M
          0.0000000000000000,
202
65.1M
          0.0000000000000000,
203
65.1M
          0.0000000000000000,
204
65.1M
          0.7367497537172237f,
205
65.1M
          0.0875511500058708f,
206
65.1M
          -0.2921026642334881f,
207
65.1M
          0.1940289303259434f,
208
65.1M
      },
209
65.1M
      {
210
65.1M
          0.2500000000000000,
211
65.1M
          -0.1014005039375377f,
212
65.1M
          0.1957439937204294f,
213
65.1M
          -0.1621205195722993f,
214
65.1M
          0.0000000000000000,
215
65.1M
          -0.0643507165794628f,
216
65.1M
          0.0074182263792424f,
217
65.1M
          -0.2904801297289980f,
218
65.1M
          0.0952002265347504f,
219
65.1M
          0.0000000000000000,
220
65.1M
          -0.3675398009862027f,
221
65.1M
          0.4921585901373873f,
222
65.1M
          0.2462710772207515f,
223
65.1M
          -0.0794670660590957f,
224
65.1M
          0.3623817333531167f,
225
65.1M
          -0.4351904965232280f,
226
65.1M
      },
227
65.1M
      {
228
65.1M
          0.2500000000000000,
229
65.1M
          -0.1014005039375376f,
230
65.1M
          0.2929100136981264f,
231
65.1M
          0.0000000000000000,
232
65.1M
          0.0000000000000000,
233
65.1M
          -0.0643507165794627f,
234
65.1M
          0.3935103426921017f,
235
65.1M
          -0.0657870154914280f,
236
65.1M
          0.0000000000000000,
237
65.1M
          -0.4082482904638628f,
238
65.1M
          -0.3078822139579090f,
239
65.1M
          -0.3852501370925192f,
240
65.1M
          -0.0857401903551931f,
241
65.1M
          -0.4613374887461511f,
242
65.1M
          0.0000000000000000,
243
65.1M
          0.2191868483885747f,
244
65.1M
      },
245
65.1M
      {
246
65.1M
          0.2500000000000000,
247
65.1M
          -0.1014005039375376f,
248
65.1M
          -0.4067007583026072f,
249
65.1M
          -0.2125574805828705f,
250
65.1M
          0.0000000000000000,
251
65.1M
          -0.0643507165794627f,
252
65.1M
          -0.4517556589999464f,
253
65.1M
          0.3046847507248840f,
254
65.1M
          0.3017929516615503f,
255
65.1M
          -0.4082482904638635f,
256
65.1M
          -0.1747866975480813f,
257
65.1M
          0.2110560104933581f,
258
65.1M
          -0.1426608480880734f,
259
65.1M
          -0.1381354035075829f,
260
65.1M
          -0.1743760259965108f,
261
65.1M
          0.1135498731499426f,
262
65.1M
      },
263
65.1M
      {
264
65.1M
          0.2500000000000000,
265
65.1M
          -0.1014005039375377f,
266
65.1M
          -0.1957439937204287f,
267
65.1M
          -0.1621205195722833f,
268
65.1M
          0.0000000000000000,
269
65.1M
          -0.0643507165794628f,
270
65.1M
          0.0074182263792444f,
271
65.1M
          0.2904801297290076f,
272
65.1M
          0.0952002265347505f,
273
65.1M
          0.0000000000000000,
274
65.1M
          0.3675398009862011f,
275
65.1M
          -0.4921585901373891f,
276
65.1M
          0.2462710772207514f,
277
65.1M
          -0.0794670660591026f,
278
65.1M
          0.3623817333531165f,
279
65.1M
          -0.4351904965232251f,
280
65.1M
      },
281
65.1M
      {
282
65.1M
          0.2500000000000000,
283
65.1M
          -0.1014005039375375f,
284
65.1M
          0.0000000000000000,
285
65.1M
          -0.4706702258572528f,
286
65.1M
          0.0000000000000000,
287
65.1M
          -0.0643507165794627f,
288
65.1M
          0.1107416575309343f,
289
65.1M
          0.0000000000000000,
290
65.1M
          -0.1627234014286617f,
291
65.1M
          0.0000000000000000,
292
65.1M
          0.0000000000000000,
293
65.1M
          0.0000000000000000,
294
65.1M
          0.1488339922711357f,
295
65.1M
          0.4972464710953509f,
296
65.1M
          0.2921026642334879f,
297
65.1M
          0.5550443808910661f,
298
65.1M
      },
299
65.1M
      {
300
65.1M
          0.2500000000000000,
301
65.1M
          -0.1014005039375377f,
302
65.1M
          0.1137907446044809f,
303
65.1M
          -0.1464291867126764f,
304
65.1M
          0.0000000000000000,
305
65.1M
          -0.0643507165794628f,
306
65.1M
          0.0829816309488205f,
307
65.1M
          -0.2388977352334460f,
308
65.1M
          -0.3531238544981630f,
309
65.1M
          -0.4082482904638630f,
310
65.1M
          0.4826689115059883f,
311
65.1M
          0.1741941265991622f,
312
65.1M
          -0.0476868035022925f,
313
65.1M
          0.1253805944856366f,
314
65.1M
          -0.4326608024727445f,
315
65.1M
          -0.2546827712406646f,
316
65.1M
      },
317
65.1M
      {
318
65.1M
          0.2500000000000000,
319
65.1M
          -0.1014005039375377f,
320
65.1M
          -0.4444481661973438f,
321
65.1M
          0.3085497062849487f,
322
65.1M
          0.0000000000000000,
323
65.1M
          -0.0643507165794628f,
324
65.1M
          0.1585450355183970f,
325
65.1M
          -0.5112616136592012f,
326
65.1M
          0.2579236279634129f,
327
65.1M
          0.0000000000000000,
328
65.1M
          -0.0812611176717504f,
329
65.1M
          -0.1856718091610990f,
330
65.1M
          -0.3416446842253373f,
331
65.1M
          0.3302282550303805f,
332
65.1M
          0.0702790691196282f,
333
65.1M
          -0.0741750459581023f,
334
65.1M
      },
335
65.1M
      {
336
65.1M
          0.2500000000000000,
337
65.1M
          -0.1014005039375376f,
338
65.1M
          -0.2929100136981264f,
339
65.1M
          0.0000000000000000,
340
65.1M
          0.0000000000000000,
341
65.1M
          -0.0643507165794627f,
342
65.1M
          0.3935103426921022f,
343
65.1M
          0.0657870154914254f,
344
65.1M
          0.0000000000000000,
345
65.1M
          0.4082482904638634f,
346
65.1M
          0.3078822139579031f,
347
65.1M
          0.3852501370925211f,
348
65.1M
          -0.0857401903551927f,
349
65.1M
          -0.4613374887461554f,
350
65.1M
          0.0000000000000000,
351
65.1M
          0.2191868483885728f,
352
65.1M
      },
353
65.1M
      {
354
65.1M
          0.2500000000000000,
355
65.1M
          -0.1014005039375376f,
356
65.1M
          -0.1137907446044814f,
357
65.1M
          -0.1464291867126654f,
358
65.1M
          0.0000000000000000,
359
65.1M
          -0.0643507165794627f,
360
65.1M
          0.0829816309488214f,
361
65.1M
          0.2388977352334547f,
362
65.1M
          -0.3531238544981624f,
363
65.1M
          0.4082482904638630f,
364
65.1M
          -0.4826689115059858f,
365
65.1M
          -0.1741941265991621f,
366
65.1M
          -0.0476868035022928f,
367
65.1M
          0.1253805944856431f,
368
65.1M
          -0.4326608024727457f,
369
65.1M
          -0.2546827712406641f,
370
65.1M
      },
371
65.1M
      {
372
65.1M
          0.2500000000000000,
373
65.1M
          -0.1014005039375374f,
374
65.1M
          0.0000000000000000,
375
65.1M
          0.4251149611657548f,
376
65.1M
          0.0000000000000000,
377
65.1M
          -0.0643507165794626f,
378
65.1M
          -0.4517556589999480f,
379
65.1M
          0.0000000000000000,
380
65.1M
          -0.6035859033230976f,
381
65.1M
          0.0000000000000000,
382
65.1M
          0.0000000000000000,
383
65.1M
          0.0000000000000000,
384
65.1M
          -0.1426608480880724f,
385
65.1M
          -0.1381354035075845f,
386
65.1M
          0.3487520519930227f,
387
65.1M
          0.1135498731499429f,
388
65.1M
      },
389
65.1M
  };
390
391
65.1M
  const HWY_CAPPED(float, 16) d;
392
195M
  for (size_t i = 0; i < 16; i += Lanes(d)) {
393
130M
    auto scalar = Zero(d);
394
2.21G
    for (size_t j = 0; j < 16; j++) {
395
2.08G
      auto px = Set(d, pixels[j]);
396
2.08G
      auto basis = Load(d, k4x4AFVBasisTranspose[j] + i);
397
2.08G
      scalar = MulAdd(px, basis, scalar);
398
2.08G
    }
399
130M
    Store(scalar, d, coeffs + i);
400
130M
  }
401
65.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
65.9M
                            float* JXL_RESTRICT coefficients) {
411
65.9M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
65.9M
  size_t afv_x = afv_kind & 1;
413
65.9M
  size_t afv_y = afv_kind / 2;
414
65.9M
  HWY_ALIGN float block[4 * 8] = {};
415
329M
  for (size_t iy = 0; iy < 4; iy++) {
416
1.31G
    for (size_t ix = 0; ix < 4; ix++) {
417
1.05G
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.05G
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.05G
    }
420
263M
  }
421
  // AFV coefficients in (even, even) positions.
422
65.9M
  HWY_ALIGN float coeff[4 * 4];
423
65.9M
  AFVDCT4x4(block, coeff);
424
329M
  for (size_t iy = 0; iy < 4; iy++) {
425
1.31G
    for (size_t ix = 0; ix < 4; ix++) {
426
1.05G
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.05G
    }
428
263M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
65.9M
  ComputeScaledDCT<4, 4>()(
431
65.9M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
65.9M
              pixels_stride),
433
65.9M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
329M
  for (size_t iy = 0; iy < 4; iy++) {
436
2.37G
    for (size_t ix = 0; ix < 8; ix++) {
437
2.11G
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.11G
    }
439
263M
  }
440
  // 4x8 DCT of the other half of the block.
441
65.9M
  ComputeScaledDCT<4, 8>()(
442
65.9M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
65.9M
      block, scratch_space);
444
329M
  for (size_t iy = 0; iy < 4; iy++) {
445
2.37G
    for (size_t ix = 0; ix < 8; ix++) {
446
2.11G
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.11G
    }
448
263M
  }
449
65.9M
  float block00 = coefficients[0] * 0.25f;
450
65.9M
  float block01 = coefficients[1];
451
65.9M
  float block10 = coefficients[8];
452
65.9M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
65.9M
  coefficients[1] = (block00 - block01) * 0.5f;
454
65.9M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
65.9M
}
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
117k
                            float* JXL_RESTRICT coefficients) {
411
117k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
117k
  size_t afv_x = afv_kind & 1;
413
117k
  size_t afv_y = afv_kind / 2;
414
117k
  HWY_ALIGN float block[4 * 8] = {};
415
586k
  for (size_t iy = 0; iy < 4; iy++) {
416
2.34M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.87M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.87M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.87M
    }
420
469k
  }
421
  // AFV coefficients in (even, even) positions.
422
117k
  HWY_ALIGN float coeff[4 * 4];
423
117k
  AFVDCT4x4(block, coeff);
424
586k
  for (size_t iy = 0; iy < 4; iy++) {
425
2.34M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.87M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.87M
    }
428
469k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
117k
  ComputeScaledDCT<4, 4>()(
431
117k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
117k
              pixels_stride),
433
117k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
586k
  for (size_t iy = 0; iy < 4; iy++) {
436
4.22M
    for (size_t ix = 0; ix < 8; ix++) {
437
3.75M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
3.75M
    }
439
469k
  }
440
  // 4x8 DCT of the other half of the block.
441
117k
  ComputeScaledDCT<4, 8>()(
442
117k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
117k
      block, scratch_space);
444
586k
  for (size_t iy = 0; iy < 4; iy++) {
445
4.22M
    for (size_t ix = 0; ix < 8; ix++) {
446
3.75M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
3.75M
    }
448
469k
  }
449
117k
  float block00 = coefficients[0] * 0.25f;
450
117k
  float block01 = coefficients[1];
451
117k
  float block10 = coefficients[8];
452
117k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
117k
  coefficients[1] = (block00 - block01) * 0.5f;
454
117k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
117k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Line
Count
Source
410
71.6k
                            float* JXL_RESTRICT coefficients) {
411
71.6k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
71.6k
  size_t afv_x = afv_kind & 1;
413
71.6k
  size_t afv_y = afv_kind / 2;
414
71.6k
  HWY_ALIGN float block[4 * 8] = {};
415
358k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.43M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.14M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.14M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.14M
    }
420
286k
  }
421
  // AFV coefficients in (even, even) positions.
422
71.6k
  HWY_ALIGN float coeff[4 * 4];
423
71.6k
  AFVDCT4x4(block, coeff);
424
358k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.43M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.14M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.14M
    }
428
286k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
71.6k
  ComputeScaledDCT<4, 4>()(
431
71.6k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
71.6k
              pixels_stride),
433
71.6k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
358k
  for (size_t iy = 0; iy < 4; iy++) {
436
2.58M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.29M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.29M
    }
439
286k
  }
440
  // 4x8 DCT of the other half of the block.
441
71.6k
  ComputeScaledDCT<4, 8>()(
442
71.6k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
71.6k
      block, scratch_space);
444
358k
  for (size_t iy = 0; iy < 4; iy++) {
445
2.58M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.29M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.29M
    }
448
286k
  }
449
71.6k
  float block00 = coefficients[0] * 0.25f;
450
71.6k
  float block01 = coefficients[1];
451
71.6k
  float block10 = coefficients[8];
452
71.6k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
71.6k
  coefficients[1] = (block00 - block01) * 0.5f;
454
71.6k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
71.6k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Line
Count
Source
410
89.2k
                            float* JXL_RESTRICT coefficients) {
411
89.2k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
89.2k
  size_t afv_x = afv_kind & 1;
413
89.2k
  size_t afv_y = afv_kind / 2;
414
89.2k
  HWY_ALIGN float block[4 * 8] = {};
415
446k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.78M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.42M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.42M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.42M
    }
420
356k
  }
421
  // AFV coefficients in (even, even) positions.
422
89.2k
  HWY_ALIGN float coeff[4 * 4];
423
89.2k
  AFVDCT4x4(block, coeff);
424
446k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.78M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.42M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.42M
    }
428
356k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
89.2k
  ComputeScaledDCT<4, 4>()(
431
89.2k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
89.2k
              pixels_stride),
433
89.2k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
446k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.21M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.85M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.85M
    }
439
356k
  }
440
  // 4x8 DCT of the other half of the block.
441
89.2k
  ComputeScaledDCT<4, 8>()(
442
89.2k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
89.2k
      block, scratch_space);
444
446k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.21M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.85M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.85M
    }
448
356k
  }
449
89.2k
  float block00 = coefficients[0] * 0.25f;
450
89.2k
  float block01 = coefficients[1];
451
89.2k
  float block10 = coefficients[8];
452
89.2k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
89.2k
  coefficients[1] = (block00 - block01) * 0.5f;
454
89.2k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
89.2k
}
enc_group.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Line
Count
Source
410
96.7k
                            float* JXL_RESTRICT coefficients) {
411
96.7k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
96.7k
  size_t afv_x = afv_kind & 1;
413
96.7k
  size_t afv_y = afv_kind / 2;
414
96.7k
  HWY_ALIGN float block[4 * 8] = {};
415
483k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.93M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.54M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.54M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.54M
    }
420
386k
  }
421
  // AFV coefficients in (even, even) positions.
422
96.7k
  HWY_ALIGN float coeff[4 * 4];
423
96.7k
  AFVDCT4x4(block, coeff);
424
483k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.93M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.54M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.54M
    }
428
386k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
96.7k
  ComputeScaledDCT<4, 4>()(
431
96.7k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
96.7k
              pixels_stride),
433
96.7k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
483k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.48M
    for (size_t ix = 0; ix < 8; ix++) {
437
3.09M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
3.09M
    }
439
386k
  }
440
  // 4x8 DCT of the other half of the block.
441
96.7k
  ComputeScaledDCT<4, 8>()(
442
96.7k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
96.7k
      block, scratch_space);
444
483k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.48M
    for (size_t ix = 0; ix < 8; ix++) {
446
3.09M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
3.09M
    }
448
386k
  }
449
96.7k
  float block00 = coefficients[0] * 0.25f;
450
96.7k
  float block01 = coefficients[1];
451
96.7k
  float block10 = coefficients[8];
452
96.7k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
96.7k
  coefficients[1] = (block00 - block01) * 0.5f;
454
96.7k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
96.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
117k
                            float* JXL_RESTRICT coefficients) {
411
117k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
117k
  size_t afv_x = afv_kind & 1;
413
117k
  size_t afv_y = afv_kind / 2;
414
117k
  HWY_ALIGN float block[4 * 8] = {};
415
586k
  for (size_t iy = 0; iy < 4; iy++) {
416
2.34M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.87M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.87M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.87M
    }
420
469k
  }
421
  // AFV coefficients in (even, even) positions.
422
117k
  HWY_ALIGN float coeff[4 * 4];
423
117k
  AFVDCT4x4(block, coeff);
424
586k
  for (size_t iy = 0; iy < 4; iy++) {
425
2.34M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.87M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.87M
    }
428
469k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
117k
  ComputeScaledDCT<4, 4>()(
431
117k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
117k
              pixels_stride),
433
117k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
586k
  for (size_t iy = 0; iy < 4; iy++) {
436
4.22M
    for (size_t ix = 0; ix < 8; ix++) {
437
3.75M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
3.75M
    }
439
469k
  }
440
  // 4x8 DCT of the other half of the block.
441
117k
  ComputeScaledDCT<4, 8>()(
442
117k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
117k
      block, scratch_space);
444
586k
  for (size_t iy = 0; iy < 4; iy++) {
445
4.22M
    for (size_t ix = 0; ix < 8; ix++) {
446
3.75M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
3.75M
    }
448
469k
  }
449
117k
  float block00 = coefficients[0] * 0.25f;
450
117k
  float block01 = coefficients[1];
451
117k
  float block10 = coefficients[8];
452
117k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
117k
  coefficients[1] = (block00 - block01) * 0.5f;
454
117k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
117k
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Line
Count
Source
410
71.6k
                            float* JXL_RESTRICT coefficients) {
411
71.6k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
71.6k
  size_t afv_x = afv_kind & 1;
413
71.6k
  size_t afv_y = afv_kind / 2;
414
71.6k
  HWY_ALIGN float block[4 * 8] = {};
415
358k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.43M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.14M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.14M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.14M
    }
420
286k
  }
421
  // AFV coefficients in (even, even) positions.
422
71.6k
  HWY_ALIGN float coeff[4 * 4];
423
71.6k
  AFVDCT4x4(block, coeff);
424
358k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.43M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.14M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.14M
    }
428
286k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
71.6k
  ComputeScaledDCT<4, 4>()(
431
71.6k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
71.6k
              pixels_stride),
433
71.6k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
358k
  for (size_t iy = 0; iy < 4; iy++) {
436
2.58M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.29M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.29M
    }
439
286k
  }
440
  // 4x8 DCT of the other half of the block.
441
71.6k
  ComputeScaledDCT<4, 8>()(
442
71.6k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
71.6k
      block, scratch_space);
444
358k
  for (size_t iy = 0; iy < 4; iy++) {
445
2.58M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.29M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.29M
    }
448
286k
  }
449
71.6k
  float block00 = coefficients[0] * 0.25f;
450
71.6k
  float block01 = coefficients[1];
451
71.6k
  float block10 = coefficients[8];
452
71.6k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
71.6k
  coefficients[1] = (block00 - block01) * 0.5f;
454
71.6k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
71.6k
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Line
Count
Source
410
89.2k
                            float* JXL_RESTRICT coefficients) {
411
89.2k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
89.2k
  size_t afv_x = afv_kind & 1;
413
89.2k
  size_t afv_y = afv_kind / 2;
414
89.2k
  HWY_ALIGN float block[4 * 8] = {};
415
446k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.78M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.42M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.42M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.42M
    }
420
356k
  }
421
  // AFV coefficients in (even, even) positions.
422
89.2k
  HWY_ALIGN float coeff[4 * 4];
423
89.2k
  AFVDCT4x4(block, coeff);
424
446k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.78M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.42M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.42M
    }
428
356k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
89.2k
  ComputeScaledDCT<4, 4>()(
431
89.2k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
89.2k
              pixels_stride),
433
89.2k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
446k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.21M
    for (size_t ix = 0; ix < 8; ix++) {
437
2.85M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
2.85M
    }
439
356k
  }
440
  // 4x8 DCT of the other half of the block.
441
89.2k
  ComputeScaledDCT<4, 8>()(
442
89.2k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
89.2k
      block, scratch_space);
444
446k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.21M
    for (size_t ix = 0; ix < 8; ix++) {
446
2.85M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
2.85M
    }
448
356k
  }
449
89.2k
  float block00 = coefficients[0] * 0.25f;
450
89.2k
  float block01 = coefficients[1];
451
89.2k
  float block10 = coefficients[8];
452
89.2k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
89.2k
  coefficients[1] = (block00 - block01) * 0.5f;
454
89.2k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
89.2k
}
enc_chroma_from_luma.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Line
Count
Source
410
96.7k
                            float* JXL_RESTRICT coefficients) {
411
96.7k
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
96.7k
  size_t afv_x = afv_kind & 1;
413
96.7k
  size_t afv_y = afv_kind / 2;
414
96.7k
  HWY_ALIGN float block[4 * 8] = {};
415
483k
  for (size_t iy = 0; iy < 4; iy++) {
416
1.93M
    for (size_t ix = 0; ix < 4; ix++) {
417
1.54M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
1.54M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
1.54M
    }
420
386k
  }
421
  // AFV coefficients in (even, even) positions.
422
96.7k
  HWY_ALIGN float coeff[4 * 4];
423
96.7k
  AFVDCT4x4(block, coeff);
424
483k
  for (size_t iy = 0; iy < 4; iy++) {
425
1.93M
    for (size_t ix = 0; ix < 4; ix++) {
426
1.54M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
1.54M
    }
428
386k
  }
429
  // 4x4 DCT of the block with same y and different x.
430
96.7k
  ComputeScaledDCT<4, 4>()(
431
96.7k
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
96.7k
              pixels_stride),
433
96.7k
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
483k
  for (size_t iy = 0; iy < 4; iy++) {
436
3.48M
    for (size_t ix = 0; ix < 8; ix++) {
437
3.09M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
3.09M
    }
439
386k
  }
440
  // 4x8 DCT of the other half of the block.
441
96.7k
  ComputeScaledDCT<4, 8>()(
442
96.7k
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
96.7k
      block, scratch_space);
444
483k
  for (size_t iy = 0; iy < 4; iy++) {
445
3.48M
    for (size_t ix = 0; ix < 8; ix++) {
446
3.09M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
3.09M
    }
448
386k
  }
449
96.7k
  float block00 = coefficients[0] * 0.25f;
450
96.7k
  float block01 = coefficients[1];
451
96.7k
  float block10 = coefficients[8];
452
96.7k
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
96.7k
  coefficients[1] = (block00 - block01) * 0.5f;
454
96.7k
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
96.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
16.2M
                            float* JXL_RESTRICT coefficients) {
411
16.2M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
16.2M
  size_t afv_x = afv_kind & 1;
413
16.2M
  size_t afv_y = afv_kind / 2;
414
16.2M
  HWY_ALIGN float block[4 * 8] = {};
415
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
416
325M
    for (size_t ix = 0; ix < 4; ix++) {
417
260M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
260M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
260M
    }
420
65.1M
  }
421
  // AFV coefficients in (even, even) positions.
422
16.2M
  HWY_ALIGN float coeff[4 * 4];
423
16.2M
  AFVDCT4x4(block, coeff);
424
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
425
325M
    for (size_t ix = 0; ix < 4; ix++) {
426
260M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
260M
    }
428
65.1M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
16.2M
  ComputeScaledDCT<4, 4>()(
431
16.2M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
16.2M
              pixels_stride),
433
16.2M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
436
586M
    for (size_t ix = 0; ix < 8; ix++) {
437
521M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
521M
    }
439
65.1M
  }
440
  // 4x8 DCT of the other half of the block.
441
16.2M
  ComputeScaledDCT<4, 8>()(
442
16.2M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
16.2M
      block, scratch_space);
444
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
445
586M
    for (size_t ix = 0; ix < 8; ix++) {
446
521M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
521M
    }
448
65.1M
  }
449
16.2M
  float block00 = coefficients[0] * 0.25f;
450
16.2M
  float block01 = coefficients[1];
451
16.2M
  float block10 = coefficients[8];
452
16.2M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
16.2M
  coefficients[1] = (block00 - block01) * 0.5f;
454
16.2M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
16.2M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<1ul>(float const*, unsigned long, float*)
Line
Count
Source
410
16.2M
                            float* JXL_RESTRICT coefficients) {
411
16.2M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
16.2M
  size_t afv_x = afv_kind & 1;
413
16.2M
  size_t afv_y = afv_kind / 2;
414
16.2M
  HWY_ALIGN float block[4 * 8] = {};
415
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
416
325M
    for (size_t ix = 0; ix < 4; ix++) {
417
260M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
260M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
260M
    }
420
65.1M
  }
421
  // AFV coefficients in (even, even) positions.
422
16.2M
  HWY_ALIGN float coeff[4 * 4];
423
16.2M
  AFVDCT4x4(block, coeff);
424
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
425
325M
    for (size_t ix = 0; ix < 4; ix++) {
426
260M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
260M
    }
428
65.1M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
16.2M
  ComputeScaledDCT<4, 4>()(
431
16.2M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
16.2M
              pixels_stride),
433
16.2M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
436
586M
    for (size_t ix = 0; ix < 8; ix++) {
437
521M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
521M
    }
439
65.1M
  }
440
  // 4x8 DCT of the other half of the block.
441
16.2M
  ComputeScaledDCT<4, 8>()(
442
16.2M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
16.2M
      block, scratch_space);
444
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
445
586M
    for (size_t ix = 0; ix < 8; ix++) {
446
521M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
521M
    }
448
65.1M
  }
449
16.2M
  float block00 = coefficients[0] * 0.25f;
450
16.2M
  float block01 = coefficients[1];
451
16.2M
  float block10 = coefficients[8];
452
16.2M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
16.2M
  coefficients[1] = (block00 - block01) * 0.5f;
454
16.2M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
16.2M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<2ul>(float const*, unsigned long, float*)
Line
Count
Source
410
16.2M
                            float* JXL_RESTRICT coefficients) {
411
16.2M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
16.2M
  size_t afv_x = afv_kind & 1;
413
16.2M
  size_t afv_y = afv_kind / 2;
414
16.2M
  HWY_ALIGN float block[4 * 8] = {};
415
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
416
325M
    for (size_t ix = 0; ix < 4; ix++) {
417
260M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
260M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
260M
    }
420
65.1M
  }
421
  // AFV coefficients in (even, even) positions.
422
16.2M
  HWY_ALIGN float coeff[4 * 4];
423
16.2M
  AFVDCT4x4(block, coeff);
424
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
425
325M
    for (size_t ix = 0; ix < 4; ix++) {
426
260M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
260M
    }
428
65.1M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
16.2M
  ComputeScaledDCT<4, 4>()(
431
16.2M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
16.2M
              pixels_stride),
433
16.2M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
436
586M
    for (size_t ix = 0; ix < 8; ix++) {
437
521M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
521M
    }
439
65.1M
  }
440
  // 4x8 DCT of the other half of the block.
441
16.2M
  ComputeScaledDCT<4, 8>()(
442
16.2M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
16.2M
      block, scratch_space);
444
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
445
586M
    for (size_t ix = 0; ix < 8; ix++) {
446
521M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
521M
    }
448
65.1M
  }
449
16.2M
  float block00 = coefficients[0] * 0.25f;
450
16.2M
  float block01 = coefficients[1];
451
16.2M
  float block10 = coefficients[8];
452
16.2M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
16.2M
  coefficients[1] = (block00 - block01) * 0.5f;
454
16.2M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
16.2M
}
enc_ac_strategy.cc:void jxl::N_AVX2::(anonymous namespace)::AFVTransformFromPixels<3ul>(float const*, unsigned long, float*)
Line
Count
Source
410
16.2M
                            float* JXL_RESTRICT coefficients) {
411
16.2M
  HWY_ALIGN float scratch_space[4 * 8 * 5];
412
16.2M
  size_t afv_x = afv_kind & 1;
413
16.2M
  size_t afv_y = afv_kind / 2;
414
16.2M
  HWY_ALIGN float block[4 * 8] = {};
415
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
416
325M
    for (size_t ix = 0; ix < 4; ix++) {
417
260M
      block[(afv_y == 1 ? 3 - iy : iy) * 4 + (afv_x == 1 ? 3 - ix : ix)] =
418
260M
          pixels[(iy + 4 * afv_y) * pixels_stride + ix + 4 * afv_x];
419
260M
    }
420
65.1M
  }
421
  // AFV coefficients in (even, even) positions.
422
16.2M
  HWY_ALIGN float coeff[4 * 4];
423
16.2M
  AFVDCT4x4(block, coeff);
424
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
425
325M
    for (size_t ix = 0; ix < 4; ix++) {
426
260M
      coefficients[iy * 2 * 8 + ix * 2] = coeff[iy * 4 + ix];
427
260M
    }
428
65.1M
  }
429
  // 4x4 DCT of the block with same y and different x.
430
16.2M
  ComputeScaledDCT<4, 4>()(
431
16.2M
      DCTFrom(pixels + afv_y * 4 * pixels_stride + (afv_x == 1 ? 0 : 4),
432
16.2M
              pixels_stride),
433
16.2M
      block, scratch_space);
434
  // ... in (odd, even) positions.
435
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
436
586M
    for (size_t ix = 0; ix < 8; ix++) {
437
521M
      coefficients[iy * 2 * 8 + ix * 2 + 1] = block[iy * 4 + ix];
438
521M
    }
439
65.1M
  }
440
  // 4x8 DCT of the other half of the block.
441
16.2M
  ComputeScaledDCT<4, 8>()(
442
16.2M
      DCTFrom(pixels + (afv_y == 1 ? 0 : 4) * pixels_stride, pixels_stride),
443
16.2M
      block, scratch_space);
444
81.4M
  for (size_t iy = 0; iy < 4; iy++) {
445
586M
    for (size_t ix = 0; ix < 8; ix++) {
446
521M
      coefficients[(1 + iy * 2) * 8 + ix] = block[iy * 8 + ix];
447
521M
    }
448
65.1M
  }
449
16.2M
  float block00 = coefficients[0] * 0.25f;
450
16.2M
  float block01 = coefficients[1];
451
16.2M
  float block10 = coefficients[8];
452
16.2M
  coefficients[0] = (block00 + block01 + 2 * block10) * 0.25f;
453
16.2M
  coefficients[1] = (block00 - block01) * 0.5f;
454
16.2M
  coefficients[8] = (block00 + block01 - 2 * block10) * 0.25f;
455
16.2M
}
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
234M
                                          float* JXL_RESTRICT scratch_space) {
462
234M
  using Type = AcStrategyType;
463
234M
  switch (strategy) {
464
17.9M
    case Type::IDENTITY: {
465
53.7M
      for (size_t y = 0; y < 2; y++) {
466
107M
        for (size_t x = 0; x < 2; x++) {
467
71.7M
          float block_dc = 0;
468
358M
          for (size_t iy = 0; iy < 4; iy++) {
469
1.43G
            for (size_t ix = 0; ix < 4; ix++) {
470
1.14G
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
1.14G
            }
472
286M
          }
473
71.7M
          block_dc *= 1.0f / 16;
474
358M
          for (size_t iy = 0; iy < 4; iy++) {
475
1.43G
            for (size_t ix = 0; ix < 4; ix++) {
476
1.14G
              if (ix == 1 && iy == 1) continue;
477
1.07G
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
1.07G
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
1.07G
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
1.07G
            }
481
286M
          }
482
71.7M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
71.7M
          coefficients[y * 8 + x] = block_dc;
484
71.7M
        }
485
35.8M
      }
486
17.9M
      float block00 = coefficients[0];
487
17.9M
      float block01 = coefficients[1];
488
17.9M
      float block10 = coefficients[8];
489
17.9M
      float block11 = coefficients[9];
490
17.9M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
17.9M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
17.9M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
17.9M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
17.9M
      break;
495
0
    }
496
16.6M
    case Type::DCT8X4: {
497
50.0M
      for (size_t x = 0; x < 2; x++) {
498
33.3M
        HWY_ALIGN float block[4 * 8];
499
33.3M
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
33.3M
                                 scratch_space);
501
166M
        for (size_t iy = 0; iy < 4; iy++) {
502
1.20G
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
1.06G
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
1.06G
          }
506
133M
        }
507
33.3M
      }
508
16.6M
      float block0 = coefficients[0];
509
16.6M
      float block1 = coefficients[8];
510
16.6M
      coefficients[0] = (block0 + block1) * 0.5f;
511
16.6M
      coefficients[8] = (block0 - block1) * 0.5f;
512
16.6M
      break;
513
0
    }
514
16.4M
    case Type::DCT4X8: {
515
49.4M
      for (size_t y = 0; y < 2; y++) {
516
32.9M
        HWY_ALIGN float block[4 * 8];
517
32.9M
        ComputeScaledDCT<4, 8>()(
518
32.9M
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
32.9M
            scratch_space);
520
164M
        for (size_t iy = 0; iy < 4; iy++) {
521
1.18G
          for (size_t ix = 0; ix < 8; ix++) {
522
1.05G
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
1.05G
          }
524
131M
        }
525
32.9M
      }
526
16.4M
      float block0 = coefficients[0];
527
16.4M
      float block1 = coefficients[8];
528
16.4M
      coefficients[0] = (block0 + block1) * 0.5f;
529
16.4M
      coefficients[8] = (block0 - block1) * 0.5f;
530
16.4M
      break;
531
0
    }
532
16.2M
    case Type::DCT4X4: {
533
48.8M
      for (size_t y = 0; y < 2; y++) {
534
97.7M
        for (size_t x = 0; x < 2; x++) {
535
65.1M
          HWY_ALIGN float block[4 * 4];
536
65.1M
          ComputeScaledDCT<4, 4>()(
537
65.1M
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
65.1M
              block, scratch_space);
539
325M
          for (size_t iy = 0; iy < 4; iy++) {
540
1.30G
            for (size_t ix = 0; ix < 4; ix++) {
541
1.04G
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
1.04G
            }
543
260M
          }
544
65.1M
        }
545
32.5M
      }
546
16.2M
      float block00 = coefficients[0];
547
16.2M
      float block01 = coefficients[1];
548
16.2M
      float block10 = coefficients[8];
549
16.2M
      float block11 = coefficients[9];
550
16.2M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
16.2M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
16.2M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
16.2M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
16.2M
      break;
555
0
    }
556
21.4M
    case Type::DCT2X2: {
557
21.4M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
21.4M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
21.4M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
21.4M
      break;
561
0
    }
562
6.97M
    case Type::DCT16X16: {
563
6.97M
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
6.97M
                                 scratch_space);
565
6.97M
      break;
566
0
    }
567
13.5M
    case Type::DCT16X8: {
568
13.5M
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
13.5M
                                scratch_space);
570
13.5M
      break;
571
0
    }
572
13.5M
    case Type::DCT8X16: {
573
13.5M
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
13.5M
                                scratch_space);
575
13.5M
      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.70M
    case Type::DCT32X16: {
588
2.70M
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
2.70M
                                 scratch_space);
590
2.70M
      break;
591
0
    }
592
2.68M
    case Type::DCT16X32: {
593
2.68M
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
2.68M
                                 scratch_space);
595
2.68M
      break;
596
0
    }
597
1.56M
    case Type::DCT32X32: {
598
1.56M
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
1.56M
                                 scratch_space);
600
1.56M
      break;
601
0
    }
602
36.7M
    case Type::DCT: {
603
36.7M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
36.7M
                               scratch_space);
605
36.7M
      break;
606
0
    }
607
16.5M
    case Type::AFV0: {
608
16.5M
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
16.5M
      break;
610
0
    }
611
16.4M
    case Type::AFV1: {
612
16.4M
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
16.4M
      break;
614
0
    }
615
16.4M
    case Type::AFV2: {
616
16.4M
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
16.4M
      break;
618
0
    }
619
16.4M
    case Type::AFV3: {
620
16.4M
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
16.4M
      break;
622
0
    }
623
366k
    case Type::DCT64X64: {
624
366k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
366k
                                 scratch_space);
626
366k
      break;
627
0
    }
628
817k
    case Type::DCT64X32: {
629
817k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
817k
                                 scratch_space);
631
817k
      break;
632
0
    }
633
497k
    case Type::DCT32X64: {
634
497k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
497k
                                 scratch_space);
636
497k
      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
234M
  }
669
234M
}
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::TransformFromPixels(jxl::AcStrategyType, float const*, unsigned long, float*, float*)
Line
Count
Source
461
7.23M
                                          float* JXL_RESTRICT scratch_space) {
462
7.23M
  using Type = AcStrategyType;
463
7.23M
  switch (strategy) {
464
814k
    case Type::IDENTITY: {
465
2.44M
      for (size_t y = 0; y < 2; y++) {
466
4.88M
        for (size_t x = 0; x < 2; x++) {
467
3.25M
          float block_dc = 0;
468
16.2M
          for (size_t iy = 0; iy < 4; iy++) {
469
65.1M
            for (size_t ix = 0; ix < 4; ix++) {
470
52.1M
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
52.1M
            }
472
13.0M
          }
473
3.25M
          block_dc *= 1.0f / 16;
474
16.2M
          for (size_t iy = 0; iy < 4; iy++) {
475
65.1M
            for (size_t ix = 0; ix < 4; ix++) {
476
52.1M
              if (ix == 1 && iy == 1) continue;
477
48.8M
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
48.8M
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
48.8M
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
48.8M
            }
481
13.0M
          }
482
3.25M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
3.25M
          coefficients[y * 8 + x] = block_dc;
484
3.25M
        }
485
1.62M
      }
486
814k
      float block00 = coefficients[0];
487
814k
      float block01 = coefficients[1];
488
814k
      float block10 = coefficients[8];
489
814k
      float block11 = coefficients[9];
490
814k
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
814k
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
814k
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
814k
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
814k
      break;
495
0
    }
496
186k
    case Type::DCT8X4: {
497
560k
      for (size_t x = 0; x < 2; x++) {
498
373k
        HWY_ALIGN float block[4 * 8];
499
373k
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
373k
                                 scratch_space);
501
1.86M
        for (size_t iy = 0; iy < 4; iy++) {
502
13.4M
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
11.9M
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
11.9M
          }
506
1.49M
        }
507
373k
      }
508
186k
      float block0 = coefficients[0];
509
186k
      float block1 = coefficients[8];
510
186k
      coefficients[0] = (block0 + block1) * 0.5f;
511
186k
      coefficients[8] = (block0 - block1) * 0.5f;
512
186k
      break;
513
0
    }
514
84.1k
    case Type::DCT4X8: {
515
252k
      for (size_t y = 0; y < 2; y++) {
516
168k
        HWY_ALIGN float block[4 * 8];
517
168k
        ComputeScaledDCT<4, 8>()(
518
168k
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
168k
            scratch_space);
520
841k
        for (size_t iy = 0; iy < 4; iy++) {
521
6.05M
          for (size_t ix = 0; ix < 8; ix++) {
522
5.38M
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
5.38M
          }
524
672k
        }
525
168k
      }
526
84.1k
      float block0 = coefficients[0];
527
84.1k
      float block1 = coefficients[8];
528
84.1k
      coefficients[0] = (block0 + block1) * 0.5f;
529
84.1k
      coefficients[8] = (block0 - block1) * 0.5f;
530
84.1k
      break;
531
0
    }
532
279
    case Type::DCT4X4: {
533
837
      for (size_t y = 0; y < 2; y++) {
534
1.67k
        for (size_t x = 0; x < 2; x++) {
535
1.11k
          HWY_ALIGN float block[4 * 4];
536
1.11k
          ComputeScaledDCT<4, 4>()(
537
1.11k
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
1.11k
              block, scratch_space);
539
5.58k
          for (size_t iy = 0; iy < 4; iy++) {
540
22.3k
            for (size_t ix = 0; ix < 4; ix++) {
541
17.8k
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
17.8k
            }
543
4.46k
          }
544
1.11k
        }
545
558
      }
546
279
      float block00 = coefficients[0];
547
279
      float block01 = coefficients[1];
548
279
      float block10 = coefficients[8];
549
279
      float block11 = coefficients[9];
550
279
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
279
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
279
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
279
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
279
      break;
555
0
    }
556
2.57M
    case Type::DCT2X2: {
557
2.57M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
2.57M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
2.57M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
2.57M
      break;
561
0
    }
562
199k
    case Type::DCT16X16: {
563
199k
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
199k
                                 scratch_space);
565
199k
      break;
566
0
    }
567
271k
    case Type::DCT16X8: {
568
271k
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
271k
                                scratch_space);
570
271k
      break;
571
0
    }
572
287k
    case Type::DCT8X16: {
573
287k
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
287k
                                scratch_space);
575
287k
      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
63.5k
    case Type::DCT32X16: {
588
63.5k
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
63.5k
                                 scratch_space);
590
63.5k
      break;
591
0
    }
592
67.3k
    case Type::DCT16X32: {
593
67.3k
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
67.3k
                                 scratch_space);
595
67.3k
      break;
596
0
    }
597
129k
    case Type::DCT32X32: {
598
129k
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
129k
                                 scratch_space);
600
129k
      break;
601
0
    }
602
2.08M
    case Type::DCT: {
603
2.08M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
2.08M
                               scratch_space);
605
2.08M
      break;
606
0
    }
607
117k
    case Type::AFV0: {
608
117k
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
117k
      break;
610
0
    }
611
71.6k
    case Type::AFV1: {
612
71.6k
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
71.6k
      break;
614
0
    }
615
89.2k
    case Type::AFV2: {
616
89.2k
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
89.2k
      break;
618
0
    }
619
96.7k
    case Type::AFV3: {
620
96.7k
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
96.7k
      break;
622
0
    }
623
69.1k
    case Type::DCT64X64: {
624
69.1k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
69.1k
                                 scratch_space);
626
69.1k
      break;
627
0
    }
628
13.5k
    case Type::DCT64X32: {
629
13.5k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
13.5k
                                 scratch_space);
631
13.5k
      break;
632
0
    }
633
8.48k
    case Type::DCT32X64: {
634
8.48k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
8.48k
                                 scratch_space);
636
8.48k
      break;
637
0
    }
638
0
    case Type::DCT128X128: {
639
0
      ComputeScaledDCT<128, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
640
0
                                   scratch_space);
641
0
      break;
642
0
    }
643
0
    case Type::DCT128X64: {
644
0
      ComputeScaledDCT<128, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
645
0
                                  scratch_space);
646
0
      break;
647
0
    }
648
0
    case Type::DCT64X128: {
649
0
      ComputeScaledDCT<64, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
650
0
                                  scratch_space);
651
0
      break;
652
0
    }
653
0
    case Type::DCT256X256: {
654
0
      ComputeScaledDCT<256, 256>()(DCTFrom(pixels, pixels_stride), coefficients,
655
0
                                   scratch_space);
656
0
      break;
657
0
    }
658
0
    case Type::DCT256X128: {
659
0
      ComputeScaledDCT<256, 128>()(DCTFrom(pixels, pixels_stride), coefficients,
660
0
                                   scratch_space);
661
0
      break;
662
0
    }
663
0
    case Type::DCT128X256: {
664
0
      ComputeScaledDCT<128, 256>()(DCTFrom(pixels, pixels_stride), coefficients,
665
0
                                   scratch_space);
666
0
      break;
667
0
    }
668
7.23M
  }
669
7.23M
}
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
23.5M
                                          float* JXL_RESTRICT scratch_space) {
462
23.5M
  using Type = AcStrategyType;
463
23.5M
  switch (strategy) {
464
814k
    case Type::IDENTITY: {
465
2.44M
      for (size_t y = 0; y < 2; y++) {
466
4.88M
        for (size_t x = 0; x < 2; x++) {
467
3.25M
          float block_dc = 0;
468
16.2M
          for (size_t iy = 0; iy < 4; iy++) {
469
65.1M
            for (size_t ix = 0; ix < 4; ix++) {
470
52.1M
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
52.1M
            }
472
13.0M
          }
473
3.25M
          block_dc *= 1.0f / 16;
474
16.2M
          for (size_t iy = 0; iy < 4; iy++) {
475
65.1M
            for (size_t ix = 0; ix < 4; ix++) {
476
52.1M
              if (ix == 1 && iy == 1) continue;
477
48.8M
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
48.8M
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
48.8M
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
48.8M
            }
481
13.0M
          }
482
3.25M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
3.25M
          coefficients[y * 8 + x] = block_dc;
484
3.25M
        }
485
1.62M
      }
486
814k
      float block00 = coefficients[0];
487
814k
      float block01 = coefficients[1];
488
814k
      float block10 = coefficients[8];
489
814k
      float block11 = coefficients[9];
490
814k
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
814k
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
814k
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
814k
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
814k
      break;
495
0
    }
496
186k
    case Type::DCT8X4: {
497
560k
      for (size_t x = 0; x < 2; x++) {
498
373k
        HWY_ALIGN float block[4 * 8];
499
373k
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
373k
                                 scratch_space);
501
1.86M
        for (size_t iy = 0; iy < 4; iy++) {
502
13.4M
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
11.9M
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
11.9M
          }
506
1.49M
        }
507
373k
      }
508
186k
      float block0 = coefficients[0];
509
186k
      float block1 = coefficients[8];
510
186k
      coefficients[0] = (block0 + block1) * 0.5f;
511
186k
      coefficients[8] = (block0 - block1) * 0.5f;
512
186k
      break;
513
0
    }
514
84.1k
    case Type::DCT4X8: {
515
252k
      for (size_t y = 0; y < 2; y++) {
516
168k
        HWY_ALIGN float block[4 * 8];
517
168k
        ComputeScaledDCT<4, 8>()(
518
168k
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
168k
            scratch_space);
520
841k
        for (size_t iy = 0; iy < 4; iy++) {
521
6.05M
          for (size_t ix = 0; ix < 8; ix++) {
522
5.38M
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
5.38M
          }
524
672k
        }
525
168k
      }
526
84.1k
      float block0 = coefficients[0];
527
84.1k
      float block1 = coefficients[8];
528
84.1k
      coefficients[0] = (block0 + block1) * 0.5f;
529
84.1k
      coefficients[8] = (block0 - block1) * 0.5f;
530
84.1k
      break;
531
0
    }
532
279
    case Type::DCT4X4: {
533
837
      for (size_t y = 0; y < 2; y++) {
534
1.67k
        for (size_t x = 0; x < 2; x++) {
535
1.11k
          HWY_ALIGN float block[4 * 4];
536
1.11k
          ComputeScaledDCT<4, 4>()(
537
1.11k
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
1.11k
              block, scratch_space);
539
5.58k
          for (size_t iy = 0; iy < 4; iy++) {
540
22.3k
            for (size_t ix = 0; ix < 4; ix++) {
541
17.8k
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
17.8k
            }
543
4.46k
          }
544
1.11k
        }
545
558
      }
546
279
      float block00 = coefficients[0];
547
279
      float block01 = coefficients[1];
548
279
      float block10 = coefficients[8];
549
279
      float block11 = coefficients[9];
550
279
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
279
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
279
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
279
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
279
      break;
555
0
    }
556
2.57M
    case Type::DCT2X2: {
557
2.57M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
2.57M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
2.57M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
2.57M
      break;
561
0
    }
562
199k
    case Type::DCT16X16: {
563
199k
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
199k
                                 scratch_space);
565
199k
      break;
566
0
    }
567
271k
    case Type::DCT16X8: {
568
271k
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
271k
                                scratch_space);
570
271k
      break;
571
0
    }
572
287k
    case Type::DCT8X16: {
573
287k
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
287k
                                scratch_space);
575
287k
      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
63.5k
    case Type::DCT32X16: {
588
63.5k
      ComputeScaledDCT<32, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
589
63.5k
                                 scratch_space);
590
63.5k
      break;
591
0
    }
592
67.3k
    case Type::DCT16X32: {
593
67.3k
      ComputeScaledDCT<16, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
594
67.3k
                                 scratch_space);
595
67.3k
      break;
596
0
    }
597
129k
    case Type::DCT32X32: {
598
129k
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
129k
                                 scratch_space);
600
129k
      break;
601
0
    }
602
18.3M
    case Type::DCT: {
603
18.3M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
18.3M
                               scratch_space);
605
18.3M
      break;
606
0
    }
607
117k
    case Type::AFV0: {
608
117k
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
117k
      break;
610
0
    }
611
71.6k
    case Type::AFV1: {
612
71.6k
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
71.6k
      break;
614
0
    }
615
89.2k
    case Type::AFV2: {
616
89.2k
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
89.2k
      break;
618
0
    }
619
96.7k
    case Type::AFV3: {
620
96.7k
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
96.7k
      break;
622
0
    }
623
69.1k
    case Type::DCT64X64: {
624
69.1k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
69.1k
                                 scratch_space);
626
69.1k
      break;
627
0
    }
628
13.5k
    case Type::DCT64X32: {
629
13.5k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
13.5k
                                 scratch_space);
631
13.5k
      break;
632
0
    }
633
8.48k
    case Type::DCT32X64: {
634
8.48k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
8.48k
                                 scratch_space);
636
8.48k
      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
23.5M
  }
669
23.5M
}
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
203M
                                          float* JXL_RESTRICT scratch_space) {
462
203M
  using Type = AcStrategyType;
463
203M
  switch (strategy) {
464
16.2M
    case Type::IDENTITY: {
465
48.8M
      for (size_t y = 0; y < 2; y++) {
466
97.7M
        for (size_t x = 0; x < 2; x++) {
467
65.1M
          float block_dc = 0;
468
325M
          for (size_t iy = 0; iy < 4; iy++) {
469
1.30G
            for (size_t ix = 0; ix < 4; ix++) {
470
1.04G
              block_dc += pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix];
471
1.04G
            }
472
260M
          }
473
65.1M
          block_dc *= 1.0f / 16;
474
325M
          for (size_t iy = 0; iy < 4; iy++) {
475
1.30G
            for (size_t ix = 0; ix < 4; ix++) {
476
1.04G
              if (ix == 1 && iy == 1) continue;
477
977M
              coefficients[(y + iy * 2) * 8 + x + ix * 2] =
478
977M
                  pixels[(y * 4 + iy) * pixels_stride + x * 4 + ix] -
479
977M
                  pixels[(y * 4 + 1) * pixels_stride + x * 4 + 1];
480
977M
            }
481
260M
          }
482
65.1M
          coefficients[(y + 2) * 8 + x + 2] = coefficients[y * 8 + x];
483
65.1M
          coefficients[y * 8 + x] = block_dc;
484
65.1M
        }
485
32.5M
      }
486
16.2M
      float block00 = coefficients[0];
487
16.2M
      float block01 = coefficients[1];
488
16.2M
      float block10 = coefficients[8];
489
16.2M
      float block11 = coefficients[9];
490
16.2M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
491
16.2M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
492
16.2M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
493
16.2M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
494
16.2M
      break;
495
0
    }
496
16.2M
    case Type::DCT8X4: {
497
48.8M
      for (size_t x = 0; x < 2; x++) {
498
32.5M
        HWY_ALIGN float block[4 * 8];
499
32.5M
        ComputeScaledDCT<8, 4>()(DCTFrom(pixels + x * 4, pixels_stride), block,
500
32.5M
                                 scratch_space);
501
162M
        for (size_t iy = 0; iy < 4; iy++) {
502
1.17G
          for (size_t ix = 0; ix < 8; ix++) {
503
            // Store transposed.
504
1.04G
            coefficients[(x + iy * 2) * 8 + ix] = block[iy * 8 + ix];
505
1.04G
          }
506
130M
        }
507
32.5M
      }
508
16.2M
      float block0 = coefficients[0];
509
16.2M
      float block1 = coefficients[8];
510
16.2M
      coefficients[0] = (block0 + block1) * 0.5f;
511
16.2M
      coefficients[8] = (block0 - block1) * 0.5f;
512
16.2M
      break;
513
0
    }
514
16.2M
    case Type::DCT4X8: {
515
48.8M
      for (size_t y = 0; y < 2; y++) {
516
32.5M
        HWY_ALIGN float block[4 * 8];
517
32.5M
        ComputeScaledDCT<4, 8>()(
518
32.5M
            DCTFrom(pixels + y * 4 * pixels_stride, pixels_stride), block,
519
32.5M
            scratch_space);
520
162M
        for (size_t iy = 0; iy < 4; iy++) {
521
1.17G
          for (size_t ix = 0; ix < 8; ix++) {
522
1.04G
            coefficients[(y + iy * 2) * 8 + ix] = block[iy * 8 + ix];
523
1.04G
          }
524
130M
        }
525
32.5M
      }
526
16.2M
      float block0 = coefficients[0];
527
16.2M
      float block1 = coefficients[8];
528
16.2M
      coefficients[0] = (block0 + block1) * 0.5f;
529
16.2M
      coefficients[8] = (block0 - block1) * 0.5f;
530
16.2M
      break;
531
0
    }
532
16.2M
    case Type::DCT4X4: {
533
48.8M
      for (size_t y = 0; y < 2; y++) {
534
97.7M
        for (size_t x = 0; x < 2; x++) {
535
65.1M
          HWY_ALIGN float block[4 * 4];
536
65.1M
          ComputeScaledDCT<4, 4>()(
537
65.1M
              DCTFrom(pixels + y * 4 * pixels_stride + x * 4, pixels_stride),
538
65.1M
              block, scratch_space);
539
325M
          for (size_t iy = 0; iy < 4; iy++) {
540
1.30G
            for (size_t ix = 0; ix < 4; ix++) {
541
1.04G
              coefficients[(y + iy * 2) * 8 + x + ix * 2] = block[iy * 4 + ix];
542
1.04G
            }
543
260M
          }
544
65.1M
        }
545
32.5M
      }
546
16.2M
      float block00 = coefficients[0];
547
16.2M
      float block01 = coefficients[1];
548
16.2M
      float block10 = coefficients[8];
549
16.2M
      float block11 = coefficients[9];
550
16.2M
      coefficients[0] = (block00 + block01 + block10 + block11) * 0.25f;
551
16.2M
      coefficients[1] = (block00 + block01 - block10 - block11) * 0.25f;
552
16.2M
      coefficients[8] = (block00 - block01 + block10 - block11) * 0.25f;
553
16.2M
      coefficients[9] = (block00 - block01 - block10 + block11) * 0.25f;
554
16.2M
      break;
555
0
    }
556
16.2M
    case Type::DCT2X2: {
557
16.2M
      DCT2TopBlock<8>(pixels, pixels_stride, coefficients);
558
16.2M
      DCT2TopBlock<4>(coefficients, kBlockDim, coefficients);
559
16.2M
      DCT2TopBlock<2>(coefficients, kBlockDim, coefficients);
560
16.2M
      break;
561
0
    }
562
6.57M
    case Type::DCT16X16: {
563
6.57M
      ComputeScaledDCT<16, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
564
6.57M
                                 scratch_space);
565
6.57M
      break;
566
0
    }
567
13.0M
    case Type::DCT16X8: {
568
13.0M
      ComputeScaledDCT<16, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
569
13.0M
                                scratch_space);
570
13.0M
      break;
571
0
    }
572
12.9M
    case Type::DCT8X16: {
573
12.9M
      ComputeScaledDCT<8, 16>()(DCTFrom(pixels, pixels_stride), coefficients,
574
12.9M
                                scratch_space);
575
12.9M
      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.30M
    case Type::DCT32X32: {
598
1.30M
      ComputeScaledDCT<32, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
599
1.30M
                                 scratch_space);
600
1.30M
      break;
601
0
    }
602
16.2M
    case Type::DCT: {
603
16.2M
      ComputeScaledDCT<8, 8>()(DCTFrom(pixels, pixels_stride), coefficients,
604
16.2M
                               scratch_space);
605
16.2M
      break;
606
0
    }
607
16.2M
    case Type::AFV0: {
608
16.2M
      AFVTransformFromPixels<0>(pixels, pixels_stride, coefficients);
609
16.2M
      break;
610
0
    }
611
16.2M
    case Type::AFV1: {
612
16.2M
      AFVTransformFromPixels<1>(pixels, pixels_stride, coefficients);
613
16.2M
      break;
614
0
    }
615
16.2M
    case Type::AFV2: {
616
16.2M
      AFVTransformFromPixels<2>(pixels, pixels_stride, coefficients);
617
16.2M
      break;
618
0
    }
619
16.2M
    case Type::AFV3: {
620
16.2M
      AFVTransformFromPixels<3>(pixels, pixels_stride, coefficients);
621
16.2M
      break;
622
0
    }
623
227k
    case Type::DCT64X64: {
624
227k
      ComputeScaledDCT<64, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
625
227k
                                 scratch_space);
626
227k
      break;
627
0
    }
628
790k
    case Type::DCT64X32: {
629
790k
      ComputeScaledDCT<64, 32>()(DCTFrom(pixels, pixels_stride), coefficients,
630
790k
                                 scratch_space);
631
790k
      break;
632
0
    }
633
480k
    case Type::DCT32X64: {
634
480k
      ComputeScaledDCT<32, 64>()(DCTFrom(pixels, pixels_stride), coefficients,
635
480k
                                 scratch_space);
636
480k
      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
203M
  }
669
203M
}
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
30.7M
                                              float* scratch_space) {
676
30.7M
  using Type = AcStrategyType;
677
30.7M
  switch (strategy) {
678
542k
    case Type::DCT16X8: {
679
542k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
542k
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
542k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
542k
      break;
683
0
    }
684
575k
    case Type::DCT8X16: {
685
575k
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
575k
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
575k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
575k
      break;
689
0
    }
690
399k
    case Type::DCT16X16: {
691
399k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
399k
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
399k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
399k
      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
127k
    case Type::DCT32X16: {
709
127k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
127k
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
127k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
127k
      break;
713
0
    }
714
134k
    case Type::DCT16X32: {
715
134k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
134k
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
134k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
134k
      break;
719
0
    }
720
259k
    case Type::DCT32X32: {
721
259k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
259k
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
259k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
259k
      break;
725
0
    }
726
27.1k
    case Type::DCT64X32: {
727
27.1k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
27.1k
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
27.1k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
27.1k
      break;
731
0
    }
732
16.9k
    case Type::DCT32X64: {
733
16.9k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
16.9k
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
16.9k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
16.9k
      break;
737
0
    }
738
138k
    case Type::DCT64X64: {
739
138k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
138k
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
138k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
138k
      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
20.4M
    case Type::DCT:
787
25.6M
    case Type::DCT2X2:
788
25.6M
    case Type::DCT4X4:
789
25.7M
    case Type::DCT4X8:
790
26.1M
    case Type::DCT8X4:
791
26.4M
    case Type::AFV0:
792
26.5M
    case Type::AFV1:
793
26.7M
    case Type::AFV2:
794
26.9M
    case Type::AFV3:
795
28.5M
    case Type::IDENTITY:
796
28.5M
      dc[0] = block[0];
797
28.5M
      break;
798
30.7M
  }
799
30.7M
}
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE4::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_AVX2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Unexecuted instantiation: enc_adaptive_quantization.cc:jxl::N_SSE2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Unexecuted instantiation: enc_group.cc:jxl::N_SSE4::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
enc_group.cc:jxl::N_AVX2::(anonymous namespace)::DCFromLowestFrequencies(jxl::AcStrategyType, float const*, float*, unsigned long, float*)
Line
Count
Source
675
7.23M
                                              float* scratch_space) {
676
7.23M
  using Type = AcStrategyType;
677
7.23M
  switch (strategy) {
678
271k
    case Type::DCT16X8: {
679
271k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
271k
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
271k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
271k
      break;
683
0
    }
684
287k
    case Type::DCT8X16: {
685
287k
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
287k
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
287k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
287k
      break;
689
0
    }
690
199k
    case Type::DCT16X16: {
691
199k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
199k
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
199k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
199k
      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
63.5k
    case Type::DCT32X16: {
709
63.5k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
63.5k
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
63.5k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
63.5k
      break;
713
0
    }
714
67.3k
    case Type::DCT16X32: {
715
67.3k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
67.3k
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
67.3k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
67.3k
      break;
719
0
    }
720
129k
    case Type::DCT32X32: {
721
129k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
129k
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
129k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
129k
      break;
725
0
    }
726
13.5k
    case Type::DCT64X32: {
727
13.5k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
13.5k
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
13.5k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
13.5k
      break;
731
0
    }
732
8.48k
    case Type::DCT32X64: {
733
8.48k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
8.48k
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
8.48k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
8.48k
      break;
737
0
    }
738
69.1k
    case Type::DCT64X64: {
739
69.1k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
69.1k
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
69.1k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
69.1k
      break;
743
0
    }
744
0
    case Type::DCT128X64: {
745
0
      ReinterpretingIDCT<
746
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
747
0
          /*LF_ROWS=*/16, /*LF_COLS=*/8, /*ROWS=*/16, /*COLS=*/8>(
748
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
749
0
      break;
750
0
    }
751
0
    case Type::DCT64X128: {
752
0
      ReinterpretingIDCT<
753
0
          /*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
754
0
          /*LF_ROWS=*/8, /*LF_COLS=*/16, /*ROWS=*/8, /*COLS=*/16>(
755
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
756
0
      break;
757
0
    }
758
0
    case Type::DCT128X128: {
759
0
      ReinterpretingIDCT<
760
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
761
0
          /*LF_ROWS=*/16, /*LF_COLS=*/16, /*ROWS=*/16, /*COLS=*/16>(
762
0
          block, 16 * kBlockDim, dc, dc_stride, scratch_space);
763
0
      break;
764
0
    }
765
0
    case Type::DCT256X128: {
766
0
      ReinterpretingIDCT<
767
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/16 * kBlockDim,
768
0
          /*LF_ROWS=*/32, /*LF_COLS=*/16, /*ROWS=*/32, /*COLS=*/16>(
769
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
770
0
      break;
771
0
    }
772
0
    case Type::DCT128X256: {
773
0
      ReinterpretingIDCT<
774
0
          /*DCT_ROWS=*/16 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
775
0
          /*LF_ROWS=*/16, /*LF_COLS=*/32, /*ROWS=*/16, /*COLS=*/32>(
776
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
777
0
      break;
778
0
    }
779
0
    case Type::DCT256X256: {
780
0
      ReinterpretingIDCT<
781
0
          /*DCT_ROWS=*/32 * kBlockDim, /*DCT_COLS=*/32 * kBlockDim,
782
0
          /*LF_ROWS=*/32, /*LF_COLS=*/32, /*ROWS=*/32, /*COLS=*/32>(
783
0
          block, 32 * kBlockDim, dc, dc_stride, scratch_space);
784
0
      break;
785
0
    }
786
2.08M
    case Type::DCT:
787
4.66M
    case Type::DCT2X2:
788
4.66M
    case Type::DCT4X4:
789
4.75M
    case Type::DCT4X8:
790
4.93M
    case Type::DCT8X4:
791
5.05M
    case Type::AFV0:
792
5.12M
    case Type::AFV1:
793
5.21M
    case Type::AFV2:
794
5.31M
    case Type::AFV3:
795
6.12M
    case Type::IDENTITY:
796
6.12M
      dc[0] = block[0];
797
6.12M
      break;
798
7.23M
  }
799
7.23M
}
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
23.5M
                                              float* scratch_space) {
676
23.5M
  using Type = AcStrategyType;
677
23.5M
  switch (strategy) {
678
271k
    case Type::DCT16X8: {
679
271k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/kBlockDim,
680
271k
                         /*LF_ROWS=*/2, /*LF_COLS=*/1, /*ROWS=*/2, /*COLS=*/1>(
681
271k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
682
271k
      break;
683
0
    }
684
287k
    case Type::DCT8X16: {
685
287k
      ReinterpretingIDCT</*DCT_ROWS=*/kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
686
287k
                         /*LF_ROWS=*/1, /*LF_COLS=*/2, /*ROWS=*/1, /*COLS=*/2>(
687
287k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
688
287k
      break;
689
0
    }
690
199k
    case Type::DCT16X16: {
691
199k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
692
199k
                         /*LF_ROWS=*/2, /*LF_COLS=*/2, /*ROWS=*/2, /*COLS=*/2>(
693
199k
          block, 2 * kBlockDim, dc, dc_stride, scratch_space);
694
199k
      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
63.5k
    case Type::DCT32X16: {
709
63.5k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/2 * kBlockDim,
710
63.5k
                         /*LF_ROWS=*/4, /*LF_COLS=*/2, /*ROWS=*/4, /*COLS=*/2>(
711
63.5k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
712
63.5k
      break;
713
0
    }
714
67.3k
    case Type::DCT16X32: {
715
67.3k
      ReinterpretingIDCT</*DCT_ROWS=*/2 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
716
67.3k
                         /*LF_ROWS=*/2, /*LF_COLS=*/4, /*ROWS=*/2, /*COLS=*/4>(
717
67.3k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
718
67.3k
      break;
719
0
    }
720
129k
    case Type::DCT32X32: {
721
129k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
722
129k
                         /*LF_ROWS=*/4, /*LF_COLS=*/4, /*ROWS=*/4, /*COLS=*/4>(
723
129k
          block, 4 * kBlockDim, dc, dc_stride, scratch_space);
724
129k
      break;
725
0
    }
726
13.5k
    case Type::DCT64X32: {
727
13.5k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/4 * kBlockDim,
728
13.5k
                         /*LF_ROWS=*/8, /*LF_COLS=*/4, /*ROWS=*/8, /*COLS=*/4>(
729
13.5k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
730
13.5k
      break;
731
0
    }
732
8.48k
    case Type::DCT32X64: {
733
8.48k
      ReinterpretingIDCT</*DCT_ROWS=*/4 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
734
8.48k
                         /*LF_ROWS=*/4, /*LF_COLS=*/8, /*ROWS=*/4, /*COLS=*/8>(
735
8.48k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
736
8.48k
      break;
737
0
    }
738
69.1k
    case Type::DCT64X64: {
739
69.1k
      ReinterpretingIDCT</*DCT_ROWS=*/8 * kBlockDim, /*DCT_COLS=*/8 * kBlockDim,
740
69.1k
                         /*LF_ROWS=*/8, /*LF_COLS=*/8, /*ROWS=*/8, /*COLS=*/8>(
741
69.1k
          block, 8 * kBlockDim, dc, dc_stride, scratch_space);
742
69.1k
      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
18.3M
    case Type::DCT:
787
20.9M
    case Type::DCT2X2:
788
20.9M
    case Type::DCT4X4:
789
21.0M
    case Type::DCT4X8:
790
21.2M
    case Type::DCT8X4:
791
21.3M
    case Type::AFV0:
792
21.4M
    case Type::AFV1:
793
21.5M
    case Type::AFV2:
794
21.6M
    case Type::AFV3:
795
22.4M
    case Type::IDENTITY:
796
22.4M
      dc[0] = block[0];
797
22.4M
      break;
798
23.5M
  }
799
23.5M
}
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_