/*
 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
 *
 * This source code is subject to the terms of the BSD 2 Clause License and
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
 * was not distributed with this source code in the LICENSE file, you can
 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
 * Media Patent License 1.0 was not distributed with this source code in the
 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
 */

#include <emmintrin.h>  // SSE2

#include "./av1_rtcd.h"
#include "av1/common/av1_fwd_txfm.h"
#include "aom_dsp/txfm_common.h"
#include "aom_dsp/x86/txfm_common_sse2.h"

// TODO(jingning) The high bit-depth version needs re-work for performance.
// The current SSE2 implementation also causes cross reference to the static
// functions in the C implementation file.
#if DCT_HIGH_BIT_DEPTH
#define ADD_EPI16 _mm_adds_epi16
#define SUB_EPI16 _mm_subs_epi16
#if FDCT32x32_HIGH_PRECISION
void av1_fdct32x32_rows_c(const int16_t *intermediate, tran_low_t *out) {
  int i, j;
  for (i = 0; i < 32; ++i) {
    tran_high_t temp_in[32], temp_out[32];
    for (j = 0; j < 32; ++j) temp_in[j] = intermediate[j * 32 + i];
    av1_fdct32(temp_in, temp_out, 0);
    for (j = 0; j < 32; ++j)
      out[j + i * 32] =
          (tran_low_t)((temp_out[j] + 1 + (temp_out[j] < 0)) >> 2);
  }
}
#define HIGH_FDCT32x32_2D_C av1_highbd_fdct32x32_c
#define HIGH_FDCT32x32_2D_ROWS_C av1_fdct32x32_rows_c
#else
void av1_fdct32x32_rd_rows_c(const int16_t *intermediate, tran_low_t *out) {
  int i, j;
  for (i = 0; i < 32; ++i) {
    tran_high_t temp_in[32], temp_out[32];
    for (j = 0; j < 32; ++j) temp_in[j] = intermediate[j * 32 + i];
    av1_fdct32(temp_in, temp_out, 1);
    for (j = 0; j < 32; ++j) out[j + i * 32] = (tran_low_t)temp_out[j];
  }
}
#define HIGH_FDCT32x32_2D_C av1_highbd_fdct32x32_rd_c
#define HIGH_FDCT32x32_2D_ROWS_C av1_fdct32x32_rd_rows_c
#endif  // FDCT32x32_HIGH_PRECISION
#else
#define ADD_EPI16 _mm_add_epi16
#define SUB_EPI16 _mm_sub_epi16
#endif  // DCT_HIGH_BIT_DEPTH

void FDCT32x32_2D(const int16_t *input, tran_low_t *output_org, int stride) {
  // Calculate pre-multiplied strides
  const int str1 = stride;
  const int str2 = 2 * stride;
  const int str3 = 2 * stride + str1;
  // We need an intermediate buffer between passes.
  DECLARE_ALIGNED(16, int16_t, intermediate[32 * 32]);
  // Constants
  //    When we use them, in one case, they are all the same. In all others
  //    it's a pair of them that we need to repeat four times. This is done
  //    by constructing the 32 bit constant corresponding to that pair.
  const __m128i k__cospi_p16_p16 = _mm_set1_epi16((int16_t)cospi_16_64);
  const __m128i k__cospi_p16_m16 = pair_set_epi16(+cospi_16_64, -cospi_16_64);
  const __m128i k__cospi_m08_p24 = pair_set_epi16(-cospi_8_64, cospi_24_64);
  const __m128i k__cospi_m24_m08 = pair_set_epi16(-cospi_24_64, -cospi_8_64);
  const __m128i k__cospi_p24_p08 = pair_set_epi16(+cospi_24_64, cospi_8_64);
  const __m128i k__cospi_p12_p20 = pair_set_epi16(+cospi_12_64, cospi_20_64);
  const __m128i k__cospi_m20_p12 = pair_set_epi16(-cospi_20_64, cospi_12_64);
  const __m128i k__cospi_m04_p28 = pair_set_epi16(-cospi_4_64, cospi_28_64);
  const __m128i k__cospi_p28_p04 = pair_set_epi16(+cospi_28_64, cospi_4_64);
  const __m128i k__cospi_m28_m04 = pair_set_epi16(-cospi_28_64, -cospi_4_64);
  const __m128i k__cospi_m12_m20 = pair_set_epi16(-cospi_12_64, -cospi_20_64);
  const __m128i k__cospi_p30_p02 = pair_set_epi16(+cospi_30_64, cospi_2_64);
  const __m128i k__cospi_p14_p18 = pair_set_epi16(+cospi_14_64, cospi_18_64);
  const __m128i k__cospi_p22_p10 = pair_set_epi16(+cospi_22_64, cospi_10_64);
  const __m128i k__cospi_p06_p26 = pair_set_epi16(+cospi_6_64, cospi_26_64);
  const __m128i k__cospi_m26_p06 = pair_set_epi16(-cospi_26_64, cospi_6_64);
  const __m128i k__cospi_m10_p22 = pair_set_epi16(-cospi_10_64, cospi_22_64);
  const __m128i k__cospi_m18_p14 = pair_set_epi16(-cospi_18_64, cospi_14_64);
  const __m128i k__cospi_m02_p30 = pair_set_epi16(-cospi_2_64, cospi_30_64);
  const __m128i k__cospi_p31_p01 = pair_set_epi16(+cospi_31_64, cospi_1_64);
  const __m128i k__cospi_p15_p17 = pair_set_epi16(+cospi_15_64, cospi_17_64);
  const __m128i k__cospi_p23_p09 = pair_set_epi16(+cospi_23_64, cospi_9_64);
  const __m128i k__cospi_p07_p25 = pair_set_epi16(+cospi_7_64, cospi_25_64);
  const __m128i k__cospi_m25_p07 = pair_set_epi16(-cospi_25_64, cospi_7_64);
  const __m128i k__cospi_m09_p23 = pair_set_epi16(-cospi_9_64, cospi_23_64);
  const __m128i k__cospi_m17_p15 = pair_set_epi16(-cospi_17_64, cospi_15_64);
  const __m128i k__cospi_m01_p31 = pair_set_epi16(-cospi_1_64, cospi_31_64);
  const __m128i k__cospi_p27_p05 = pair_set_epi16(+cospi_27_64, cospi_5_64);
  const __m128i k__cospi_p11_p21 = pair_set_epi16(+cospi_11_64, cospi_21_64);
  const __m128i k__cospi_p19_p13 = pair_set_epi16(+cospi_19_64, cospi_13_64);
  const __m128i k__cospi_p03_p29 = pair_set_epi16(+cospi_3_64, cospi_29_64);
  const __m128i k__cospi_m29_p03 = pair_set_epi16(-cospi_29_64, cospi_3_64);
  const __m128i k__cospi_m13_p19 = pair_set_epi16(-cospi_13_64, cospi_19_64);
  const __m128i k__cospi_m21_p11 = pair_set_epi16(-cospi_21_64, cospi_11_64);
  const __m128i k__cospi_m05_p27 = pair_set_epi16(-cospi_5_64, cospi_27_64);
  const __m128i k__DCT_CONST_ROUNDING = _mm_set1_epi32(DCT_CONST_ROUNDING);
  const __m128i kZero = _mm_set1_epi16(0);
  const __m128i kOne = _mm_set1_epi16(1);
  // Do the two transform/transpose passes
  int pass;
#if DCT_HIGH_BIT_DEPTH
  int overflow;
#endif
  for (pass = 0; pass < 2; ++pass) {
    // We process eight columns (transposed rows in second pass) at a time.
    int column_start;
    for (column_start = 0; column_start < 32; column_start += 8) {
      __m128i step1[32];
      __m128i step2[32];
      __m128i step3[32];
      __m128i out[32];
      // Stage 1
      // Note: even though all the loads below are aligned, using the aligned
      //       intrinsic make the code slightly slower.
      if (0 == pass) {
        const int16_t *in = &input[column_start];
        // step1[i] =  (in[ 0 * stride] + in[(32 -  1) * stride]) << 2;
        // Note: the next four blocks could be in a loop. That would help the
        //       instruction cache but is actually slower.
        {
          const int16_t *ina = in + 0 * str1;
          const int16_t *inb = in + 31 * str1;
          __m128i *step1a = &step1[0];
          __m128i *step1b = &step1[31];
          const __m128i ina0 = _mm_loadu_si128((const __m128i *)(ina));
          const __m128i ina1 = _mm_loadu_si128((const __m128i *)(ina + str1));
          const __m128i ina2 = _mm_loadu_si128((const __m128i *)(ina + str2));
          const __m128i ina3 = _mm_loadu_si128((const __m128i *)(ina + str3));
          const __m128i inb3 = _mm_loadu_si128((const __m128i *)(inb - str3));
          const __m128i inb2 = _mm_loadu_si128((const __m128i *)(inb - str2));
          const __m128i inb1 = _mm_loadu_si128((const __m128i *)(inb - str1));
          const __m128i inb0 = _mm_loadu_si128((const __m128i *)(inb));
          step1a[0] = _mm_add_epi16(ina0, inb0);
          step1a[1] = _mm_add_epi16(ina1, inb1);
          step1a[2] = _mm_add_epi16(ina2, inb2);
          step1a[3] = _mm_add_epi16(ina3, inb3);
          step1b[-3] = _mm_sub_epi16(ina3, inb3);
          step1b[-2] = _mm_sub_epi16(ina2, inb2);
          step1b[-1] = _mm_sub_epi16(ina1, inb1);
          step1b[-0] = _mm_sub_epi16(ina0, inb0);
          step1a[0] = _mm_slli_epi16(step1a[0], 2);
          step1a[1] = _mm_slli_epi16(step1a[1], 2);
          step1a[2] = _mm_slli_epi16(step1a[2], 2);
          step1a[3] = _mm_slli_epi16(step1a[3], 2);
          step1b[-3] = _mm_slli_epi16(step1b[-3], 2);
          step1b[-2] = _mm_slli_epi16(step1b[-2], 2);
          step1b[-1] = _mm_slli_epi16(step1b[-1], 2);
          step1b[-0] = _mm_slli_epi16(step1b[-0], 2);
        }
        {
          const int16_t *ina = in + 4 * str1;
          const int16_t *inb = in + 27 * str1;
          __m128i *step1a = &step1[4];
          __m128i *step1b = &step1[27];
          const __m128i ina0 = _mm_loadu_si128((const __m128i *)(ina));
          const __m128i ina1 = _mm_loadu_si128((const __m128i *)(ina + str1));
          const __m128i ina2 = _mm_loadu_si128((const __m128i *)(ina + str2));
          const __m128i ina3 = _mm_loadu_si128((const __m128i *)(ina + str3));
          const __m128i inb3 = _mm_loadu_si128((const __m128i *)(inb - str3));
          const __m128i inb2 = _mm_loadu_si128((const __m128i *)(inb - str2));
          const __m128i inb1 = _mm_loadu_si128((const __m128i *)(inb - str1));
          const __m128i inb0 = _mm_loadu_si128((const __m128i *)(inb));
          step1a[0] = _mm_add_epi16(ina0, inb0);
          step1a[1] = _mm_add_epi16(ina1, inb1);
          step1a[2] = _mm_add_epi16(ina2, inb2);
          step1a[3] = _mm_add_epi16(ina3, inb3);
          step1b[-3] = _mm_sub_epi16(ina3, inb3);
          step1b[-2] = _mm_sub_epi16(ina2, inb2);
          step1b[-1] = _mm_sub_epi16(ina1, inb1);
          step1b[-0] = _mm_sub_epi16(ina0, inb0);
          step1a[0] = _mm_slli_epi16(step1a[0], 2);
          step1a[1] = _mm_slli_epi16(step1a[1], 2);
          step1a[2] = _mm_slli_epi16(step1a[2], 2);
          step1a[3] = _mm_slli_epi16(step1a[3], 2);
          step1b[-3] = _mm_slli_epi16(step1b[-3], 2);
          step1b[-2] = _mm_slli_epi16(step1b[-2], 2);
          step1b[-1] = _mm_slli_epi16(step1b[-1], 2);
          step1b[-0] = _mm_slli_epi16(step1b[-0], 2);
        }
        {
          const int16_t *ina = in + 8 * str1;
          const int16_t *inb = in + 23 * str1;
          __m128i *step1a = &step1[8];
          __m128i *step1b = &step1[23];
          const __m128i ina0 = _mm_loadu_si128((const __m128i *)(ina));
          const __m128i ina1 = _mm_loadu_si128((const __m128i *)(ina + str1));
          const __m128i ina2 = _mm_loadu_si128((const __m128i *)(ina + str2));
          const __m128i ina3 = _mm_loadu_si128((const __m128i *)(ina + str3));
          const __m128i inb3 = _mm_loadu_si128((const __m128i *)(inb - str3));
          const __m128i inb2 = _mm_loadu_si128((const __m128i *)(inb - str2));
          const __m128i inb1 = _mm_loadu_si128((const __m128i *)(inb - str1));
          const __m128i inb0 = _mm_loadu_si128((const __m128i *)(inb));
          step1a[0] = _mm_add_epi16(ina0, inb0);
          step1a[1] = _mm_add_epi16(ina1, inb1);
          step1a[2] = _mm_add_epi16(ina2, inb2);
          step1a[3] = _mm_add_epi16(ina3, inb3);
          step1b[-3] = _mm_sub_epi16(ina3, inb3);
          step1b[-2] = _mm_sub_epi16(ina2, inb2);
          step1b[-1] = _mm_sub_epi16(ina1, inb1);
          step1b[-0] = _mm_sub_epi16(ina0, inb0);
          step1a[0] = _mm_slli_epi16(step1a[0], 2);
          step1a[1] = _mm_slli_epi16(step1a[1], 2);
          step1a[2] = _mm_slli_epi16(step1a[2], 2);
          step1a[3] = _mm_slli_epi16(step1a[3], 2);
          step1b[-3] = _mm_slli_epi16(step1b[-3], 2);
          step1b[-2] = _mm_slli_epi16(step1b[-2], 2);
          step1b[-1] = _mm_slli_epi16(step1b[-1], 2);
          step1b[-0] = _mm_slli_epi16(step1b[-0], 2);
        }
        {
          const int16_t *ina = in + 12 * str1;
          const int16_t *inb = in + 19 * str1;
          __m128i *step1a = &step1[12];
          __m128i *step1b = &step1[19];
          const __m128i ina0 = _mm_loadu_si128((const __m128i *)(ina));
          const __m128i ina1 = _mm_loadu_si128((const __m128i *)(ina + str1));
          const __m128i ina2 = _mm_loadu_si128((const __m128i *)(ina + str2));
          const __m128i ina3 = _mm_loadu_si128((const __m128i *)(ina + str3));
          const __m128i inb3 = _mm_loadu_si128((const __m128i *)(inb - str3));
          const __m128i inb2 = _mm_loadu_si128((const __m128i *)(inb - str2));
          const __m128i inb1 = _mm_loadu_si128((const __m128i *)(inb - str1));
          const __m128i inb0 = _mm_loadu_si128((const __m128i *)(inb));
          step1a[0] = _mm_add_epi16(ina0, inb0);
          step1a[1] = _mm_add_epi16(ina1, inb1);
          step1a[2] = _mm_add_epi16(ina2, inb2);
          step1a[3] = _mm_add_epi16(ina3, inb3);
          step1b[-3] = _mm_sub_epi16(ina3, inb3);
          step1b[-2] = _mm_sub_epi16(ina2, inb2);
          step1b[-1] = _mm_sub_epi16(ina1, inb1);
          step1b[-0] = _mm_sub_epi16(ina0, inb0);
          step1a[0] = _mm_slli_epi16(step1a[0], 2);
          step1a[1] = _mm_slli_epi16(step1a[1], 2);
          step1a[2] = _mm_slli_epi16(step1a[2], 2);
          step1a[3] = _mm_slli_epi16(step1a[3], 2);
          step1b[-3] = _mm_slli_epi16(step1b[-3], 2);
          step1b[-2] = _mm_slli_epi16(step1b[-2], 2);
          step1b[-1] = _mm_slli_epi16(step1b[-1], 2);
          step1b[-0] = _mm_slli_epi16(step1b[-0], 2);
        }
      } else {
        int16_t *in = &intermediate[column_start];
        // step1[i] =  in[ 0 * 32] + in[(32 -  1) * 32];
        // Note: using the same approach as above to have common offset is
        //       counter-productive as all offsets can be calculated at compile
        //       time.
        // Note: the next four blocks could be in a loop. That would help the
        //       instruction cache but is actually slower.
        {
          __m128i in00 = _mm_loadu_si128((const __m128i *)(in + 0 * 32));
          __m128i in01 = _mm_loadu_si128((const __m128i *)(in + 1 * 32));
          __m128i in02 = _mm_loadu_si128((const __m128i *)(in + 2 * 32));
          __m128i in03 = _mm_loadu_si128((const __m128i *)(in + 3 * 32));
          __m128i in28 = _mm_loadu_si128((const __m128i *)(in + 28 * 32));
          __m128i in29 = _mm_loadu_si128((const __m128i *)(in + 29 * 32));
          __m128i in30 = _mm_loadu_si128((const __m128i *)(in + 30 * 32));
          __m128i in31 = _mm_loadu_si128((const __m128i *)(in + 31 * 32));
          step1[0] = ADD_EPI16(in00, in31);
          step1[1] = ADD_EPI16(in01, in30);
          step1[2] = ADD_EPI16(in02, in29);
          step1[3] = ADD_EPI16(in03, in28);
          step1[28] = SUB_EPI16(in03, in28);
          step1[29] = SUB_EPI16(in02, in29);
          step1[30] = SUB_EPI16(in01, in30);
          step1[31] = SUB_EPI16(in00, in31);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x8(&step1[0], &step1[1], &step1[2],
                                             &step1[3], &step1[28], &step1[29],
                                             &step1[30], &step1[31]);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          __m128i in04 = _mm_loadu_si128((const __m128i *)(in + 4 * 32));
          __m128i in05 = _mm_loadu_si128((const __m128i *)(in + 5 * 32));
          __m128i in06 = _mm_loadu_si128((const __m128i *)(in + 6 * 32));
          __m128i in07 = _mm_loadu_si128((const __m128i *)(in + 7 * 32));
          __m128i in24 = _mm_loadu_si128((const __m128i *)(in + 24 * 32));
          __m128i in25 = _mm_loadu_si128((const __m128i *)(in + 25 * 32));
          __m128i in26 = _mm_loadu_si128((const __m128i *)(in + 26 * 32));
          __m128i in27 = _mm_loadu_si128((const __m128i *)(in + 27 * 32));
          step1[4] = ADD_EPI16(in04, in27);
          step1[5] = ADD_EPI16(in05, in26);
          step1[6] = ADD_EPI16(in06, in25);
          step1[7] = ADD_EPI16(in07, in24);
          step1[24] = SUB_EPI16(in07, in24);
          step1[25] = SUB_EPI16(in06, in25);
          step1[26] = SUB_EPI16(in05, in26);
          step1[27] = SUB_EPI16(in04, in27);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x8(&step1[4], &step1[5], &step1[6],
                                             &step1[7], &step1[24], &step1[25],
                                             &step1[26], &step1[27]);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          __m128i in08 = _mm_loadu_si128((const __m128i *)(in + 8 * 32));
          __m128i in09 = _mm_loadu_si128((const __m128i *)(in + 9 * 32));
          __m128i in10 = _mm_loadu_si128((const __m128i *)(in + 10 * 32));
          __m128i in11 = _mm_loadu_si128((const __m128i *)(in + 11 * 32));
          __m128i in20 = _mm_loadu_si128((const __m128i *)(in + 20 * 32));
          __m128i in21 = _mm_loadu_si128((const __m128i *)(in + 21 * 32));
          __m128i in22 = _mm_loadu_si128((const __m128i *)(in + 22 * 32));
          __m128i in23 = _mm_loadu_si128((const __m128i *)(in + 23 * 32));
          step1[8] = ADD_EPI16(in08, in23);
          step1[9] = ADD_EPI16(in09, in22);
          step1[10] = ADD_EPI16(in10, in21);
          step1[11] = ADD_EPI16(in11, in20);
          step1[20] = SUB_EPI16(in11, in20);
          step1[21] = SUB_EPI16(in10, in21);
          step1[22] = SUB_EPI16(in09, in22);
          step1[23] = SUB_EPI16(in08, in23);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x8(&step1[8], &step1[9], &step1[10],
                                             &step1[11], &step1[20], &step1[21],
                                             &step1[22], &step1[23]);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          __m128i in12 = _mm_loadu_si128((const __m128i *)(in + 12 * 32));
          __m128i in13 = _mm_loadu_si128((const __m128i *)(in + 13 * 32));
          __m128i in14 = _mm_loadu_si128((const __m128i *)(in + 14 * 32));
          __m128i in15 = _mm_loadu_si128((const __m128i *)(in + 15 * 32));
          __m128i in16 = _mm_loadu_si128((const __m128i *)(in + 16 * 32));
          __m128i in17 = _mm_loadu_si128((const __m128i *)(in + 17 * 32));
          __m128i in18 = _mm_loadu_si128((const __m128i *)(in + 18 * 32));
          __m128i in19 = _mm_loadu_si128((const __m128i *)(in + 19 * 32));
          step1[12] = ADD_EPI16(in12, in19);
          step1[13] = ADD_EPI16(in13, in18);
          step1[14] = ADD_EPI16(in14, in17);
          step1[15] = ADD_EPI16(in15, in16);
          step1[16] = SUB_EPI16(in15, in16);
          step1[17] = SUB_EPI16(in14, in17);
          step1[18] = SUB_EPI16(in13, in18);
          step1[19] = SUB_EPI16(in12, in19);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x8(&step1[12], &step1[13], &step1[14],
                                             &step1[15], &step1[16], &step1[17],
                                             &step1[18], &step1[19]);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
      }
      // Stage 2
      {
        step2[0] = ADD_EPI16(step1[0], step1[15]);
        step2[1] = ADD_EPI16(step1[1], step1[14]);
        step2[2] = ADD_EPI16(step1[2], step1[13]);
        step2[3] = ADD_EPI16(step1[3], step1[12]);
        step2[4] = ADD_EPI16(step1[4], step1[11]);
        step2[5] = ADD_EPI16(step1[5], step1[10]);
        step2[6] = ADD_EPI16(step1[6], step1[9]);
        step2[7] = ADD_EPI16(step1[7], step1[8]);
        step2[8] = SUB_EPI16(step1[7], step1[8]);
        step2[9] = SUB_EPI16(step1[6], step1[9]);
        step2[10] = SUB_EPI16(step1[5], step1[10]);
        step2[11] = SUB_EPI16(step1[4], step1[11]);
        step2[12] = SUB_EPI16(step1[3], step1[12]);
        step2[13] = SUB_EPI16(step1[2], step1[13]);
        step2[14] = SUB_EPI16(step1[1], step1[14]);
        step2[15] = SUB_EPI16(step1[0], step1[15]);
#if DCT_HIGH_BIT_DEPTH
        overflow = check_epi16_overflow_x16(
            &step2[0], &step2[1], &step2[2], &step2[3], &step2[4], &step2[5],
            &step2[6], &step2[7], &step2[8], &step2[9], &step2[10], &step2[11],
            &step2[12], &step2[13], &step2[14], &step2[15]);
        if (overflow) {
          if (pass == 0)
            HIGH_FDCT32x32_2D_C(input, output_org, stride);
          else
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
          return;
        }
#endif  // DCT_HIGH_BIT_DEPTH
      }
      {
        const __m128i s2_20_0 = _mm_unpacklo_epi16(step1[27], step1[20]);
        const __m128i s2_20_1 = _mm_unpackhi_epi16(step1[27], step1[20]);
        const __m128i s2_21_0 = _mm_unpacklo_epi16(step1[26], step1[21]);
        const __m128i s2_21_1 = _mm_unpackhi_epi16(step1[26], step1[21]);
        const __m128i s2_22_0 = _mm_unpacklo_epi16(step1[25], step1[22]);
        const __m128i s2_22_1 = _mm_unpackhi_epi16(step1[25], step1[22]);
        const __m128i s2_23_0 = _mm_unpacklo_epi16(step1[24], step1[23]);
        const __m128i s2_23_1 = _mm_unpackhi_epi16(step1[24], step1[23]);
        const __m128i s2_20_2 = _mm_madd_epi16(s2_20_0, k__cospi_p16_m16);
        const __m128i s2_20_3 = _mm_madd_epi16(s2_20_1, k__cospi_p16_m16);
        const __m128i s2_21_2 = _mm_madd_epi16(s2_21_0, k__cospi_p16_m16);
        const __m128i s2_21_3 = _mm_madd_epi16(s2_21_1, k__cospi_p16_m16);
        const __m128i s2_22_2 = _mm_madd_epi16(s2_22_0, k__cospi_p16_m16);
        const __m128i s2_22_3 = _mm_madd_epi16(s2_22_1, k__cospi_p16_m16);
        const __m128i s2_23_2 = _mm_madd_epi16(s2_23_0, k__cospi_p16_m16);
        const __m128i s2_23_3 = _mm_madd_epi16(s2_23_1, k__cospi_p16_m16);
        const __m128i s2_24_2 = _mm_madd_epi16(s2_23_0, k__cospi_p16_p16);
        const __m128i s2_24_3 = _mm_madd_epi16(s2_23_1, k__cospi_p16_p16);
        const __m128i s2_25_2 = _mm_madd_epi16(s2_22_0, k__cospi_p16_p16);
        const __m128i s2_25_3 = _mm_madd_epi16(s2_22_1, k__cospi_p16_p16);
        const __m128i s2_26_2 = _mm_madd_epi16(s2_21_0, k__cospi_p16_p16);
        const __m128i s2_26_3 = _mm_madd_epi16(s2_21_1, k__cospi_p16_p16);
        const __m128i s2_27_2 = _mm_madd_epi16(s2_20_0, k__cospi_p16_p16);
        const __m128i s2_27_3 = _mm_madd_epi16(s2_20_1, k__cospi_p16_p16);
        // dct_const_round_shift
        const __m128i s2_20_4 = _mm_add_epi32(s2_20_2, k__DCT_CONST_ROUNDING);
        const __m128i s2_20_5 = _mm_add_epi32(s2_20_3, k__DCT_CONST_ROUNDING);
        const __m128i s2_21_4 = _mm_add_epi32(s2_21_2, k__DCT_CONST_ROUNDING);
        const __m128i s2_21_5 = _mm_add_epi32(s2_21_3, k__DCT_CONST_ROUNDING);
        const __m128i s2_22_4 = _mm_add_epi32(s2_22_2, k__DCT_CONST_ROUNDING);
        const __m128i s2_22_5 = _mm_add_epi32(s2_22_3, k__DCT_CONST_ROUNDING);
        const __m128i s2_23_4 = _mm_add_epi32(s2_23_2, k__DCT_CONST_ROUNDING);
        const __m128i s2_23_5 = _mm_add_epi32(s2_23_3, k__DCT_CONST_ROUNDING);
        const __m128i s2_24_4 = _mm_add_epi32(s2_24_2, k__DCT_CONST_ROUNDING);
        const __m128i s2_24_5 = _mm_add_epi32(s2_24_3, k__DCT_CONST_ROUNDING);
        const __m128i s2_25_4 = _mm_add_epi32(s2_25_2, k__DCT_CONST_ROUNDING);
        const __m128i s2_25_5 = _mm_add_epi32(s2_25_3, k__DCT_CONST_ROUNDING);
        const __m128i s2_26_4 = _mm_add_epi32(s2_26_2, k__DCT_CONST_ROUNDING);
        const __m128i s2_26_5 = _mm_add_epi32(s2_26_3, k__DCT_CONST_ROUNDING);
        const __m128i s2_27_4 = _mm_add_epi32(s2_27_2, k__DCT_CONST_ROUNDING);
        const __m128i s2_27_5 = _mm_add_epi32(s2_27_3, k__DCT_CONST_ROUNDING);
        const __m128i s2_20_6 = _mm_srai_epi32(s2_20_4, DCT_CONST_BITS);
        const __m128i s2_20_7 = _mm_srai_epi32(s2_20_5, DCT_CONST_BITS);
        const __m128i s2_21_6 = _mm_srai_epi32(s2_21_4, DCT_CONST_BITS);
        const __m128i s2_21_7 = _mm_srai_epi32(s2_21_5, DCT_CONST_BITS);
        const __m128i s2_22_6 = _mm_srai_epi32(s2_22_4, DCT_CONST_BITS);
        const __m128i s2_22_7 = _mm_srai_epi32(s2_22_5, DCT_CONST_BITS);
        const __m128i s2_23_6 = _mm_srai_epi32(s2_23_4, DCT_CONST_BITS);
        const __m128i s2_23_7 = _mm_srai_epi32(s2_23_5, DCT_CONST_BITS);
        const __m128i s2_24_6 = _mm_srai_epi32(s2_24_4, DCT_CONST_BITS);
        const __m128i s2_24_7 = _mm_srai_epi32(s2_24_5, DCT_CONST_BITS);
        const __m128i s2_25_6 = _mm_srai_epi32(s2_25_4, DCT_CONST_BITS);
        const __m128i s2_25_7 = _mm_srai_epi32(s2_25_5, DCT_CONST_BITS);
        const __m128i s2_26_6 = _mm_srai_epi32(s2_26_4, DCT_CONST_BITS);
        const __m128i s2_26_7 = _mm_srai_epi32(s2_26_5, DCT_CONST_BITS);
        const __m128i s2_27_6 = _mm_srai_epi32(s2_27_4, DCT_CONST_BITS);
        const __m128i s2_27_7 = _mm_srai_epi32(s2_27_5, DCT_CONST_BITS);
        // Combine
        step2[20] = _mm_packs_epi32(s2_20_6, s2_20_7);
        step2[21] = _mm_packs_epi32(s2_21_6, s2_21_7);
        step2[22] = _mm_packs_epi32(s2_22_6, s2_22_7);
        step2[23] = _mm_packs_epi32(s2_23_6, s2_23_7);
        step2[24] = _mm_packs_epi32(s2_24_6, s2_24_7);
        step2[25] = _mm_packs_epi32(s2_25_6, s2_25_7);
        step2[26] = _mm_packs_epi32(s2_26_6, s2_26_7);
        step2[27] = _mm_packs_epi32(s2_27_6, s2_27_7);
#if DCT_HIGH_BIT_DEPTH
        overflow = check_epi16_overflow_x8(&step2[20], &step2[21], &step2[22],
                                           &step2[23], &step2[24], &step2[25],
                                           &step2[26], &step2[27]);
        if (overflow) {
          if (pass == 0)
            HIGH_FDCT32x32_2D_C(input, output_org, stride);
          else
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
          return;
        }
#endif  // DCT_HIGH_BIT_DEPTH
      }

#if !FDCT32x32_HIGH_PRECISION
      // dump the magnitude by half, hence the intermediate values are within
      // the range of 16 bits.
      if (1 == pass) {
        __m128i s3_00_0 = _mm_cmplt_epi16(step2[0], kZero);
        __m128i s3_01_0 = _mm_cmplt_epi16(step2[1], kZero);
        __m128i s3_02_0 = _mm_cmplt_epi16(step2[2], kZero);
        __m128i s3_03_0 = _mm_cmplt_epi16(step2[3], kZero);
        __m128i s3_04_0 = _mm_cmplt_epi16(step2[4], kZero);
        __m128i s3_05_0 = _mm_cmplt_epi16(step2[5], kZero);
        __m128i s3_06_0 = _mm_cmplt_epi16(step2[6], kZero);
        __m128i s3_07_0 = _mm_cmplt_epi16(step2[7], kZero);
        __m128i s2_08_0 = _mm_cmplt_epi16(step2[8], kZero);
        __m128i s2_09_0 = _mm_cmplt_epi16(step2[9], kZero);
        __m128i s3_10_0 = _mm_cmplt_epi16(step2[10], kZero);
        __m128i s3_11_0 = _mm_cmplt_epi16(step2[11], kZero);
        __m128i s3_12_0 = _mm_cmplt_epi16(step2[12], kZero);
        __m128i s3_13_0 = _mm_cmplt_epi16(step2[13], kZero);
        __m128i s2_14_0 = _mm_cmplt_epi16(step2[14], kZero);
        __m128i s2_15_0 = _mm_cmplt_epi16(step2[15], kZero);
        __m128i s3_16_0 = _mm_cmplt_epi16(step1[16], kZero);
        __m128i s3_17_0 = _mm_cmplt_epi16(step1[17], kZero);
        __m128i s3_18_0 = _mm_cmplt_epi16(step1[18], kZero);
        __m128i s3_19_0 = _mm_cmplt_epi16(step1[19], kZero);
        __m128i s3_20_0 = _mm_cmplt_epi16(step2[20], kZero);
        __m128i s3_21_0 = _mm_cmplt_epi16(step2[21], kZero);
        __m128i s3_22_0 = _mm_cmplt_epi16(step2[22], kZero);
        __m128i s3_23_0 = _mm_cmplt_epi16(step2[23], kZero);
        __m128i s3_24_0 = _mm_cmplt_epi16(step2[24], kZero);
        __m128i s3_25_0 = _mm_cmplt_epi16(step2[25], kZero);
        __m128i s3_26_0 = _mm_cmplt_epi16(step2[26], kZero);
        __m128i s3_27_0 = _mm_cmplt_epi16(step2[27], kZero);
        __m128i s3_28_0 = _mm_cmplt_epi16(step1[28], kZero);
        __m128i s3_29_0 = _mm_cmplt_epi16(step1[29], kZero);
        __m128i s3_30_0 = _mm_cmplt_epi16(step1[30], kZero);
        __m128i s3_31_0 = _mm_cmplt_epi16(step1[31], kZero);

        step2[0] = SUB_EPI16(step2[0], s3_00_0);
        step2[1] = SUB_EPI16(step2[1], s3_01_0);
        step2[2] = SUB_EPI16(step2[2], s3_02_0);
        step2[3] = SUB_EPI16(step2[3], s3_03_0);
        step2[4] = SUB_EPI16(step2[4], s3_04_0);
        step2[5] = SUB_EPI16(step2[5], s3_05_0);
        step2[6] = SUB_EPI16(step2[6], s3_06_0);
        step2[7] = SUB_EPI16(step2[7], s3_07_0);
        step2[8] = SUB_EPI16(step2[8], s2_08_0);
        step2[9] = SUB_EPI16(step2[9], s2_09_0);
        step2[10] = SUB_EPI16(step2[10], s3_10_0);
        step2[11] = SUB_EPI16(step2[11], s3_11_0);
        step2[12] = SUB_EPI16(step2[12], s3_12_0);
        step2[13] = SUB_EPI16(step2[13], s3_13_0);
        step2[14] = SUB_EPI16(step2[14], s2_14_0);
        step2[15] = SUB_EPI16(step2[15], s2_15_0);
        step1[16] = SUB_EPI16(step1[16], s3_16_0);
        step1[17] = SUB_EPI16(step1[17], s3_17_0);
        step1[18] = SUB_EPI16(step1[18], s3_18_0);
        step1[19] = SUB_EPI16(step1[19], s3_19_0);
        step2[20] = SUB_EPI16(step2[20], s3_20_0);
        step2[21] = SUB_EPI16(step2[21], s3_21_0);
        step2[22] = SUB_EPI16(step2[22], s3_22_0);
        step2[23] = SUB_EPI16(step2[23], s3_23_0);
        step2[24] = SUB_EPI16(step2[24], s3_24_0);
        step2[25] = SUB_EPI16(step2[25], s3_25_0);
        step2[26] = SUB_EPI16(step2[26], s3_26_0);
        step2[27] = SUB_EPI16(step2[27], s3_27_0);
        step1[28] = SUB_EPI16(step1[28], s3_28_0);
        step1[29] = SUB_EPI16(step1[29], s3_29_0);
        step1[30] = SUB_EPI16(step1[30], s3_30_0);
        step1[31] = SUB_EPI16(step1[31], s3_31_0);
#if DCT_HIGH_BIT_DEPTH
        overflow = check_epi16_overflow_x32(
            &step2[0], &step2[1], &step2[2], &step2[3], &step2[4], &step2[5],
            &step2[6], &step2[7], &step2[8], &step2[9], &step2[10], &step2[11],
            &step2[12], &step2[13], &step2[14], &step2[15], &step1[16],
            &step1[17], &step1[18], &step1[19], &step2[20], &step2[21],
            &step2[22], &step2[23], &step2[24], &step2[25], &step2[26],
            &step2[27], &step1[28], &step1[29], &step1[30], &step1[31]);
        if (overflow) {
          HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
          return;
        }
#endif  // DCT_HIGH_BIT_DEPTH
        step2[0] = _mm_add_epi16(step2[0], kOne);
        step2[1] = _mm_add_epi16(step2[1], kOne);
        step2[2] = _mm_add_epi16(step2[2], kOne);
        step2[3] = _mm_add_epi16(step2[3], kOne);
        step2[4] = _mm_add_epi16(step2[4], kOne);
        step2[5] = _mm_add_epi16(step2[5], kOne);
        step2[6] = _mm_add_epi16(step2[6], kOne);
        step2[7] = _mm_add_epi16(step2[7], kOne);
        step2[8] = _mm_add_epi16(step2[8], kOne);
        step2[9] = _mm_add_epi16(step2[9], kOne);
        step2[10] = _mm_add_epi16(step2[10], kOne);
        step2[11] = _mm_add_epi16(step2[11], kOne);
        step2[12] = _mm_add_epi16(step2[12], kOne);
        step2[13] = _mm_add_epi16(step2[13], kOne);
        step2[14] = _mm_add_epi16(step2[14], kOne);
        step2[15] = _mm_add_epi16(step2[15], kOne);
        step1[16] = _mm_add_epi16(step1[16], kOne);
        step1[17] = _mm_add_epi16(step1[17], kOne);
        step1[18] = _mm_add_epi16(step1[18], kOne);
        step1[19] = _mm_add_epi16(step1[19], kOne);
        step2[20] = _mm_add_epi16(step2[20], kOne);
        step2[21] = _mm_add_epi16(step2[21], kOne);
        step2[22] = _mm_add_epi16(step2[22], kOne);
        step2[23] = _mm_add_epi16(step2[23], kOne);
        step2[24] = _mm_add_epi16(step2[24], kOne);
        step2[25] = _mm_add_epi16(step2[25], kOne);
        step2[26] = _mm_add_epi16(step2[26], kOne);
        step2[27] = _mm_add_epi16(step2[27], kOne);
        step1[28] = _mm_add_epi16(step1[28], kOne);
        step1[29] = _mm_add_epi16(step1[29], kOne);
        step1[30] = _mm_add_epi16(step1[30], kOne);
        step1[31] = _mm_add_epi16(step1[31], kOne);

        step2[0] = _mm_srai_epi16(step2[0], 2);
        step2[1] = _mm_srai_epi16(step2[1], 2);
        step2[2] = _mm_srai_epi16(step2[2], 2);
        step2[3] = _mm_srai_epi16(step2[3], 2);
        step2[4] = _mm_srai_epi16(step2[4], 2);
        step2[5] = _mm_srai_epi16(step2[5], 2);
        step2[6] = _mm_srai_epi16(step2[6], 2);
        step2[7] = _mm_srai_epi16(step2[7], 2);
        step2[8] = _mm_srai_epi16(step2[8], 2);
        step2[9] = _mm_srai_epi16(step2[9], 2);
        step2[10] = _mm_srai_epi16(step2[10], 2);
        step2[11] = _mm_srai_epi16(step2[11], 2);
        step2[12] = _mm_srai_epi16(step2[12], 2);
        step2[13] = _mm_srai_epi16(step2[13], 2);
        step2[14] = _mm_srai_epi16(step2[14], 2);
        step2[15] = _mm_srai_epi16(step2[15], 2);
        step1[16] = _mm_srai_epi16(step1[16], 2);
        step1[17] = _mm_srai_epi16(step1[17], 2);
        step1[18] = _mm_srai_epi16(step1[18], 2);
        step1[19] = _mm_srai_epi16(step1[19], 2);
        step2[20] = _mm_srai_epi16(step2[20], 2);
        step2[21] = _mm_srai_epi16(step2[21], 2);
        step2[22] = _mm_srai_epi16(step2[22], 2);
        step2[23] = _mm_srai_epi16(step2[23], 2);
        step2[24] = _mm_srai_epi16(step2[24], 2);
        step2[25] = _mm_srai_epi16(step2[25], 2);
        step2[26] = _mm_srai_epi16(step2[26], 2);
        step2[27] = _mm_srai_epi16(step2[27], 2);
        step1[28] = _mm_srai_epi16(step1[28], 2);
        step1[29] = _mm_srai_epi16(step1[29], 2);
        step1[30] = _mm_srai_epi16(step1[30], 2);
        step1[31] = _mm_srai_epi16(step1[31], 2);
      }
#endif  // !FDCT32x32_HIGH_PRECISION

#if FDCT32x32_HIGH_PRECISION
      if (pass == 0) {
#endif
        // Stage 3
        {
          step3[0] = ADD_EPI16(step2[(8 - 1)], step2[0]);
          step3[1] = ADD_EPI16(step2[(8 - 2)], step2[1]);
          step3[2] = ADD_EPI16(step2[(8 - 3)], step2[2]);
          step3[3] = ADD_EPI16(step2[(8 - 4)], step2[3]);
          step3[4] = SUB_EPI16(step2[(8 - 5)], step2[4]);
          step3[5] = SUB_EPI16(step2[(8 - 6)], step2[5]);
          step3[6] = SUB_EPI16(step2[(8 - 7)], step2[6]);
          step3[7] = SUB_EPI16(step2[(8 - 8)], step2[7]);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x8(&step3[0], &step3[1], &step3[2],
                                             &step3[3], &step3[4], &step3[5],
                                             &step3[6], &step3[7]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          const __m128i s3_10_0 = _mm_unpacklo_epi16(step2[13], step2[10]);
          const __m128i s3_10_1 = _mm_unpackhi_epi16(step2[13], step2[10]);
          const __m128i s3_11_0 = _mm_unpacklo_epi16(step2[12], step2[11]);
          const __m128i s3_11_1 = _mm_unpackhi_epi16(step2[12], step2[11]);
          const __m128i s3_10_2 = _mm_madd_epi16(s3_10_0, k__cospi_p16_m16);
          const __m128i s3_10_3 = _mm_madd_epi16(s3_10_1, k__cospi_p16_m16);
          const __m128i s3_11_2 = _mm_madd_epi16(s3_11_0, k__cospi_p16_m16);
          const __m128i s3_11_3 = _mm_madd_epi16(s3_11_1, k__cospi_p16_m16);
          const __m128i s3_12_2 = _mm_madd_epi16(s3_11_0, k__cospi_p16_p16);
          const __m128i s3_12_3 = _mm_madd_epi16(s3_11_1, k__cospi_p16_p16);
          const __m128i s3_13_2 = _mm_madd_epi16(s3_10_0, k__cospi_p16_p16);
          const __m128i s3_13_3 = _mm_madd_epi16(s3_10_1, k__cospi_p16_p16);
          // dct_const_round_shift
          const __m128i s3_10_4 = _mm_add_epi32(s3_10_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_10_5 = _mm_add_epi32(s3_10_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_11_4 = _mm_add_epi32(s3_11_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_11_5 = _mm_add_epi32(s3_11_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_12_4 = _mm_add_epi32(s3_12_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_12_5 = _mm_add_epi32(s3_12_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_13_4 = _mm_add_epi32(s3_13_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_13_5 = _mm_add_epi32(s3_13_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_10_6 = _mm_srai_epi32(s3_10_4, DCT_CONST_BITS);
          const __m128i s3_10_7 = _mm_srai_epi32(s3_10_5, DCT_CONST_BITS);
          const __m128i s3_11_6 = _mm_srai_epi32(s3_11_4, DCT_CONST_BITS);
          const __m128i s3_11_7 = _mm_srai_epi32(s3_11_5, DCT_CONST_BITS);
          const __m128i s3_12_6 = _mm_srai_epi32(s3_12_4, DCT_CONST_BITS);
          const __m128i s3_12_7 = _mm_srai_epi32(s3_12_5, DCT_CONST_BITS);
          const __m128i s3_13_6 = _mm_srai_epi32(s3_13_4, DCT_CONST_BITS);
          const __m128i s3_13_7 = _mm_srai_epi32(s3_13_5, DCT_CONST_BITS);
          // Combine
          step3[10] = _mm_packs_epi32(s3_10_6, s3_10_7);
          step3[11] = _mm_packs_epi32(s3_11_6, s3_11_7);
          step3[12] = _mm_packs_epi32(s3_12_6, s3_12_7);
          step3[13] = _mm_packs_epi32(s3_13_6, s3_13_7);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x4(&step3[10], &step3[11], &step3[12],
                                             &step3[13]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          step3[16] = ADD_EPI16(step2[23], step1[16]);
          step3[17] = ADD_EPI16(step2[22], step1[17]);
          step3[18] = ADD_EPI16(step2[21], step1[18]);
          step3[19] = ADD_EPI16(step2[20], step1[19]);
          step3[20] = SUB_EPI16(step1[19], step2[20]);
          step3[21] = SUB_EPI16(step1[18], step2[21]);
          step3[22] = SUB_EPI16(step1[17], step2[22]);
          step3[23] = SUB_EPI16(step1[16], step2[23]);
          step3[24] = SUB_EPI16(step1[31], step2[24]);
          step3[25] = SUB_EPI16(step1[30], step2[25]);
          step3[26] = SUB_EPI16(step1[29], step2[26]);
          step3[27] = SUB_EPI16(step1[28], step2[27]);
          step3[28] = ADD_EPI16(step2[27], step1[28]);
          step3[29] = ADD_EPI16(step2[26], step1[29]);
          step3[30] = ADD_EPI16(step2[25], step1[30]);
          step3[31] = ADD_EPI16(step2[24], step1[31]);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x16(
              &step3[16], &step3[17], &step3[18], &step3[19], &step3[20],
              &step3[21], &step3[22], &step3[23], &step3[24], &step3[25],
              &step3[26], &step3[27], &step3[28], &step3[29], &step3[30],
              &step3[31]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }

        // Stage 4
        {
          step1[0] = ADD_EPI16(step3[3], step3[0]);
          step1[1] = ADD_EPI16(step3[2], step3[1]);
          step1[2] = SUB_EPI16(step3[1], step3[2]);
          step1[3] = SUB_EPI16(step3[0], step3[3]);
          step1[8] = ADD_EPI16(step3[11], step2[8]);
          step1[9] = ADD_EPI16(step3[10], step2[9]);
          step1[10] = SUB_EPI16(step2[9], step3[10]);
          step1[11] = SUB_EPI16(step2[8], step3[11]);
          step1[12] = SUB_EPI16(step2[15], step3[12]);
          step1[13] = SUB_EPI16(step2[14], step3[13]);
          step1[14] = ADD_EPI16(step3[13], step2[14]);
          step1[15] = ADD_EPI16(step3[12], step2[15]);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x16(
              &step1[0], &step1[1], &step1[2], &step1[3], &step1[4], &step1[5],
              &step1[6], &step1[7], &step1[8], &step1[9], &step1[10],
              &step1[11], &step1[12], &step1[13], &step1[14], &step1[15]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          const __m128i s1_05_0 = _mm_unpacklo_epi16(step3[6], step3[5]);
          const __m128i s1_05_1 = _mm_unpackhi_epi16(step3[6], step3[5]);
          const __m128i s1_05_2 = _mm_madd_epi16(s1_05_0, k__cospi_p16_m16);
          const __m128i s1_05_3 = _mm_madd_epi16(s1_05_1, k__cospi_p16_m16);
          const __m128i s1_06_2 = _mm_madd_epi16(s1_05_0, k__cospi_p16_p16);
          const __m128i s1_06_3 = _mm_madd_epi16(s1_05_1, k__cospi_p16_p16);
          // dct_const_round_shift
          const __m128i s1_05_4 = _mm_add_epi32(s1_05_2, k__DCT_CONST_ROUNDING);
          const __m128i s1_05_5 = _mm_add_epi32(s1_05_3, k__DCT_CONST_ROUNDING);
          const __m128i s1_06_4 = _mm_add_epi32(s1_06_2, k__DCT_CONST_ROUNDING);
          const __m128i s1_06_5 = _mm_add_epi32(s1_06_3, k__DCT_CONST_ROUNDING);
          const __m128i s1_05_6 = _mm_srai_epi32(s1_05_4, DCT_CONST_BITS);
          const __m128i s1_05_7 = _mm_srai_epi32(s1_05_5, DCT_CONST_BITS);
          const __m128i s1_06_6 = _mm_srai_epi32(s1_06_4, DCT_CONST_BITS);
          const __m128i s1_06_7 = _mm_srai_epi32(s1_06_5, DCT_CONST_BITS);
          // Combine
          step1[5] = _mm_packs_epi32(s1_05_6, s1_05_7);
          step1[6] = _mm_packs_epi32(s1_06_6, s1_06_7);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x2(&step1[5], &step1[6]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          const __m128i s1_18_0 = _mm_unpacklo_epi16(step3[18], step3[29]);
          const __m128i s1_18_1 = _mm_unpackhi_epi16(step3[18], step3[29]);
          const __m128i s1_19_0 = _mm_unpacklo_epi16(step3[19], step3[28]);
          const __m128i s1_19_1 = _mm_unpackhi_epi16(step3[19], step3[28]);
          const __m128i s1_20_0 = _mm_unpacklo_epi16(step3[20], step3[27]);
          const __m128i s1_20_1 = _mm_unpackhi_epi16(step3[20], step3[27]);
          const __m128i s1_21_0 = _mm_unpacklo_epi16(step3[21], step3[26]);
          const __m128i s1_21_1 = _mm_unpackhi_epi16(step3[21], step3[26]);
          const __m128i s1_18_2 = _mm_madd_epi16(s1_18_0, k__cospi_m08_p24);
          const __m128i s1_18_3 = _mm_madd_epi16(s1_18_1, k__cospi_m08_p24);
          const __m128i s1_19_2 = _mm_madd_epi16(s1_19_0, k__cospi_m08_p24);
          const __m128i s1_19_3 = _mm_madd_epi16(s1_19_1, k__cospi_m08_p24);
          const __m128i s1_20_2 = _mm_madd_epi16(s1_20_0, k__cospi_m24_m08);
          const __m128i s1_20_3 = _mm_madd_epi16(s1_20_1, k__cospi_m24_m08);
          const __m128i s1_21_2 = _mm_madd_epi16(s1_21_0, k__cospi_m24_m08);
          const __m128i s1_21_3 = _mm_madd_epi16(s1_21_1, k__cospi_m24_m08);
          const __m128i s1_26_2 = _mm_madd_epi16(s1_21_0, k__cospi_m08_p24);
          const __m128i s1_26_3 = _mm_madd_epi16(s1_21_1, k__cospi_m08_p24);
          const __m128i s1_27_2 = _mm_madd_epi16(s1_20_0, k__cospi_m08_p24);
          const __m128i s1_27_3 = _mm_madd_epi16(s1_20_1, k__cospi_m08_p24);
          const __m128i s1_28_2 = _mm_madd_epi16(s1_19_0, k__cospi_p24_p08);
          const __m128i s1_28_3 = _mm_madd_epi16(s1_19_1, k__cospi_p24_p08);
          const __m128i s1_29_2 = _mm_madd_epi16(s1_18_0, k__cospi_p24_p08);
          const __m128i s1_29_3 = _mm_madd_epi16(s1_18_1, k__cospi_p24_p08);
          // dct_const_round_shift
          const __m128i s1_18_4 = _mm_add_epi32(s1_18_2, k__DCT_CONST_ROUNDING);
          const __m128i s1_18_5 = _mm_add_epi32(s1_18_3, k__DCT_CONST_ROUNDING);
          const __m128i s1_19_4 = _mm_add_epi32(s1_19_2, k__DCT_CONST_ROUNDING);
          const __m128i s1_19_5 = _mm_add_epi32(s1_19_3, k__DCT_CONST_ROUNDING);
          const __m128i s1_20_4 = _mm_add_epi32(s1_20_2, k__DCT_CONST_ROUNDING);
          const __m128i s1_20_5 = _mm_add_epi32(s1_20_3, k__DCT_CONST_ROUNDING);
          const __m128i s1_21_4 = _mm_add_epi32(s1_21_2, k__DCT_CONST_ROUNDING);
          const __m128i s1_21_5 = _mm_add_epi32(s1_21_3, k__DCT_CONST_ROUNDING);
          const __m128i s1_26_4 = _mm_add_epi32(s1_26_2, k__DCT_CONST_ROUNDING);
          const __m128i s1_26_5 = _mm_add_epi32(s1_26_3, k__DCT_CONST_ROUNDING);
          const __m128i s1_27_4 = _mm_add_epi32(s1_27_2, k__DCT_CONST_ROUNDING);
          const __m128i s1_27_5 = _mm_add_epi32(s1_27_3, k__DCT_CONST_ROUNDING);
          const __m128i s1_28_4 = _mm_add_epi32(s1_28_2, k__DCT_CONST_ROUNDING);
          const __m128i s1_28_5 = _mm_add_epi32(s1_28_3, k__DCT_CONST_ROUNDING);
          const __m128i s1_29_4 = _mm_add_epi32(s1_29_2, k__DCT_CONST_ROUNDING);
          const __m128i s1_29_5 = _mm_add_epi32(s1_29_3, k__DCT_CONST_ROUNDING);
          const __m128i s1_18_6 = _mm_srai_epi32(s1_18_4, DCT_CONST_BITS);
          const __m128i s1_18_7 = _mm_srai_epi32(s1_18_5, DCT_CONST_BITS);
          const __m128i s1_19_6 = _mm_srai_epi32(s1_19_4, DCT_CONST_BITS);
          const __m128i s1_19_7 = _mm_srai_epi32(s1_19_5, DCT_CONST_BITS);
          const __m128i s1_20_6 = _mm_srai_epi32(s1_20_4, DCT_CONST_BITS);
          const __m128i s1_20_7 = _mm_srai_epi32(s1_20_5, DCT_CONST_BITS);
          const __m128i s1_21_6 = _mm_srai_epi32(s1_21_4, DCT_CONST_BITS);
          const __m128i s1_21_7 = _mm_srai_epi32(s1_21_5, DCT_CONST_BITS);
          const __m128i s1_26_6 = _mm_srai_epi32(s1_26_4, DCT_CONST_BITS);
          const __m128i s1_26_7 = _mm_srai_epi32(s1_26_5, DCT_CONST_BITS);
          const __m128i s1_27_6 = _mm_srai_epi32(s1_27_4, DCT_CONST_BITS);
          const __m128i s1_27_7 = _mm_srai_epi32(s1_27_5, DCT_CONST_BITS);
          const __m128i s1_28_6 = _mm_srai_epi32(s1_28_4, DCT_CONST_BITS);
          const __m128i s1_28_7 = _mm_srai_epi32(s1_28_5, DCT_CONST_BITS);
          const __m128i s1_29_6 = _mm_srai_epi32(s1_29_4, DCT_CONST_BITS);
          const __m128i s1_29_7 = _mm_srai_epi32(s1_29_5, DCT_CONST_BITS);
          // Combine
          step1[18] = _mm_packs_epi32(s1_18_6, s1_18_7);
          step1[19] = _mm_packs_epi32(s1_19_6, s1_19_7);
          step1[20] = _mm_packs_epi32(s1_20_6, s1_20_7);
          step1[21] = _mm_packs_epi32(s1_21_6, s1_21_7);
          step1[26] = _mm_packs_epi32(s1_26_6, s1_26_7);
          step1[27] = _mm_packs_epi32(s1_27_6, s1_27_7);
          step1[28] = _mm_packs_epi32(s1_28_6, s1_28_7);
          step1[29] = _mm_packs_epi32(s1_29_6, s1_29_7);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x8(&step1[18], &step1[19], &step1[20],
                                             &step1[21], &step1[26], &step1[27],
                                             &step1[28], &step1[29]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        // Stage 5
        {
          step2[4] = ADD_EPI16(step1[5], step3[4]);
          step2[5] = SUB_EPI16(step3[4], step1[5]);
          step2[6] = SUB_EPI16(step3[7], step1[6]);
          step2[7] = ADD_EPI16(step1[6], step3[7]);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x4(&step2[4], &step2[5], &step2[6],
                                             &step2[7]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          const __m128i out_00_0 = _mm_unpacklo_epi16(step1[0], step1[1]);
          const __m128i out_00_1 = _mm_unpackhi_epi16(step1[0], step1[1]);
          const __m128i out_08_0 = _mm_unpacklo_epi16(step1[2], step1[3]);
          const __m128i out_08_1 = _mm_unpackhi_epi16(step1[2], step1[3]);
          const __m128i out_00_2 = _mm_madd_epi16(out_00_0, k__cospi_p16_p16);
          const __m128i out_00_3 = _mm_madd_epi16(out_00_1, k__cospi_p16_p16);
          const __m128i out_16_2 = _mm_madd_epi16(out_00_0, k__cospi_p16_m16);
          const __m128i out_16_3 = _mm_madd_epi16(out_00_1, k__cospi_p16_m16);
          const __m128i out_08_2 = _mm_madd_epi16(out_08_0, k__cospi_p24_p08);
          const __m128i out_08_3 = _mm_madd_epi16(out_08_1, k__cospi_p24_p08);
          const __m128i out_24_2 = _mm_madd_epi16(out_08_0, k__cospi_m08_p24);
          const __m128i out_24_3 = _mm_madd_epi16(out_08_1, k__cospi_m08_p24);
          // dct_const_round_shift
          const __m128i out_00_4 =
              _mm_add_epi32(out_00_2, k__DCT_CONST_ROUNDING);
          const __m128i out_00_5 =
              _mm_add_epi32(out_00_3, k__DCT_CONST_ROUNDING);
          const __m128i out_16_4 =
              _mm_add_epi32(out_16_2, k__DCT_CONST_ROUNDING);
          const __m128i out_16_5 =
              _mm_add_epi32(out_16_3, k__DCT_CONST_ROUNDING);
          const __m128i out_08_4 =
              _mm_add_epi32(out_08_2, k__DCT_CONST_ROUNDING);
          const __m128i out_08_5 =
              _mm_add_epi32(out_08_3, k__DCT_CONST_ROUNDING);
          const __m128i out_24_4 =
              _mm_add_epi32(out_24_2, k__DCT_CONST_ROUNDING);
          const __m128i out_24_5 =
              _mm_add_epi32(out_24_3, k__DCT_CONST_ROUNDING);
          const __m128i out_00_6 = _mm_srai_epi32(out_00_4, DCT_CONST_BITS);
          const __m128i out_00_7 = _mm_srai_epi32(out_00_5, DCT_CONST_BITS);
          const __m128i out_16_6 = _mm_srai_epi32(out_16_4, DCT_CONST_BITS);
          const __m128i out_16_7 = _mm_srai_epi32(out_16_5, DCT_CONST_BITS);
          const __m128i out_08_6 = _mm_srai_epi32(out_08_4, DCT_CONST_BITS);
          const __m128i out_08_7 = _mm_srai_epi32(out_08_5, DCT_CONST_BITS);
          const __m128i out_24_6 = _mm_srai_epi32(out_24_4, DCT_CONST_BITS);
          const __m128i out_24_7 = _mm_srai_epi32(out_24_5, DCT_CONST_BITS);
          // Combine
          out[0] = _mm_packs_epi32(out_00_6, out_00_7);
          out[16] = _mm_packs_epi32(out_16_6, out_16_7);
          out[8] = _mm_packs_epi32(out_08_6, out_08_7);
          out[24] = _mm_packs_epi32(out_24_6, out_24_7);
#if DCT_HIGH_BIT_DEPTH
          overflow =
              check_epi16_overflow_x4(&out[0], &out[16], &out[8], &out[24]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          const __m128i s2_09_0 = _mm_unpacklo_epi16(step1[9], step1[14]);
          const __m128i s2_09_1 = _mm_unpackhi_epi16(step1[9], step1[14]);
          const __m128i s2_10_0 = _mm_unpacklo_epi16(step1[10], step1[13]);
          const __m128i s2_10_1 = _mm_unpackhi_epi16(step1[10], step1[13]);
          const __m128i s2_09_2 = _mm_madd_epi16(s2_09_0, k__cospi_m08_p24);
          const __m128i s2_09_3 = _mm_madd_epi16(s2_09_1, k__cospi_m08_p24);
          const __m128i s2_10_2 = _mm_madd_epi16(s2_10_0, k__cospi_m24_m08);
          const __m128i s2_10_3 = _mm_madd_epi16(s2_10_1, k__cospi_m24_m08);
          const __m128i s2_13_2 = _mm_madd_epi16(s2_10_0, k__cospi_m08_p24);
          const __m128i s2_13_3 = _mm_madd_epi16(s2_10_1, k__cospi_m08_p24);
          const __m128i s2_14_2 = _mm_madd_epi16(s2_09_0, k__cospi_p24_p08);
          const __m128i s2_14_3 = _mm_madd_epi16(s2_09_1, k__cospi_p24_p08);
          // dct_const_round_shift
          const __m128i s2_09_4 = _mm_add_epi32(s2_09_2, k__DCT_CONST_ROUNDING);
          const __m128i s2_09_5 = _mm_add_epi32(s2_09_3, k__DCT_CONST_ROUNDING);
          const __m128i s2_10_4 = _mm_add_epi32(s2_10_2, k__DCT_CONST_ROUNDING);
          const __m128i s2_10_5 = _mm_add_epi32(s2_10_3, k__DCT_CONST_ROUNDING);
          const __m128i s2_13_4 = _mm_add_epi32(s2_13_2, k__DCT_CONST_ROUNDING);
          const __m128i s2_13_5 = _mm_add_epi32(s2_13_3, k__DCT_CONST_ROUNDING);
          const __m128i s2_14_4 = _mm_add_epi32(s2_14_2, k__DCT_CONST_ROUNDING);
          const __m128i s2_14_5 = _mm_add_epi32(s2_14_3, k__DCT_CONST_ROUNDING);
          const __m128i s2_09_6 = _mm_srai_epi32(s2_09_4, DCT_CONST_BITS);
          const __m128i s2_09_7 = _mm_srai_epi32(s2_09_5, DCT_CONST_BITS);
          const __m128i s2_10_6 = _mm_srai_epi32(s2_10_4, DCT_CONST_BITS);
          const __m128i s2_10_7 = _mm_srai_epi32(s2_10_5, DCT_CONST_BITS);
          const __m128i s2_13_6 = _mm_srai_epi32(s2_13_4, DCT_CONST_BITS);
          const __m128i s2_13_7 = _mm_srai_epi32(s2_13_5, DCT_CONST_BITS);
          const __m128i s2_14_6 = _mm_srai_epi32(s2_14_4, DCT_CONST_BITS);
          const __m128i s2_14_7 = _mm_srai_epi32(s2_14_5, DCT_CONST_BITS);
          // Combine
          step2[9] = _mm_packs_epi32(s2_09_6, s2_09_7);
          step2[10] = _mm_packs_epi32(s2_10_6, s2_10_7);
          step2[13] = _mm_packs_epi32(s2_13_6, s2_13_7);
          step2[14] = _mm_packs_epi32(s2_14_6, s2_14_7);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x4(&step2[9], &step2[10], &step2[13],
                                             &step2[14]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          step2[16] = ADD_EPI16(step1[19], step3[16]);
          step2[17] = ADD_EPI16(step1[18], step3[17]);
          step2[18] = SUB_EPI16(step3[17], step1[18]);
          step2[19] = SUB_EPI16(step3[16], step1[19]);
          step2[20] = SUB_EPI16(step3[23], step1[20]);
          step2[21] = SUB_EPI16(step3[22], step1[21]);
          step2[22] = ADD_EPI16(step1[21], step3[22]);
          step2[23] = ADD_EPI16(step1[20], step3[23]);
          step2[24] = ADD_EPI16(step1[27], step3[24]);
          step2[25] = ADD_EPI16(step1[26], step3[25]);
          step2[26] = SUB_EPI16(step3[25], step1[26]);
          step2[27] = SUB_EPI16(step3[24], step1[27]);
          step2[28] = SUB_EPI16(step3[31], step1[28]);
          step2[29] = SUB_EPI16(step3[30], step1[29]);
          step2[30] = ADD_EPI16(step1[29], step3[30]);
          step2[31] = ADD_EPI16(step1[28], step3[31]);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x16(
              &step2[16], &step2[17], &step2[18], &step2[19], &step2[20],
              &step2[21], &step2[22], &step2[23], &step2[24], &step2[25],
              &step2[26], &step2[27], &step2[28], &step2[29], &step2[30],
              &step2[31]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        // Stage 6
        {
          const __m128i out_04_0 = _mm_unpacklo_epi16(step2[4], step2[7]);
          const __m128i out_04_1 = _mm_unpackhi_epi16(step2[4], step2[7]);
          const __m128i out_20_0 = _mm_unpacklo_epi16(step2[5], step2[6]);
          const __m128i out_20_1 = _mm_unpackhi_epi16(step2[5], step2[6]);
          const __m128i out_12_0 = _mm_unpacklo_epi16(step2[5], step2[6]);
          const __m128i out_12_1 = _mm_unpackhi_epi16(step2[5], step2[6]);
          const __m128i out_28_0 = _mm_unpacklo_epi16(step2[4], step2[7]);
          const __m128i out_28_1 = _mm_unpackhi_epi16(step2[4], step2[7]);
          const __m128i out_04_2 = _mm_madd_epi16(out_04_0, k__cospi_p28_p04);
          const __m128i out_04_3 = _mm_madd_epi16(out_04_1, k__cospi_p28_p04);
          const __m128i out_20_2 = _mm_madd_epi16(out_20_0, k__cospi_p12_p20);
          const __m128i out_20_3 = _mm_madd_epi16(out_20_1, k__cospi_p12_p20);
          const __m128i out_12_2 = _mm_madd_epi16(out_12_0, k__cospi_m20_p12);
          const __m128i out_12_3 = _mm_madd_epi16(out_12_1, k__cospi_m20_p12);
          const __m128i out_28_2 = _mm_madd_epi16(out_28_0, k__cospi_m04_p28);
          const __m128i out_28_3 = _mm_madd_epi16(out_28_1, k__cospi_m04_p28);
          // dct_const_round_shift
          const __m128i out_04_4 =
              _mm_add_epi32(out_04_2, k__DCT_CONST_ROUNDING);
          const __m128i out_04_5 =
              _mm_add_epi32(out_04_3, k__DCT_CONST_ROUNDING);
          const __m128i out_20_4 =
              _mm_add_epi32(out_20_2, k__DCT_CONST_ROUNDING);
          const __m128i out_20_5 =
              _mm_add_epi32(out_20_3, k__DCT_CONST_ROUNDING);
          const __m128i out_12_4 =
              _mm_add_epi32(out_12_2, k__DCT_CONST_ROUNDING);
          const __m128i out_12_5 =
              _mm_add_epi32(out_12_3, k__DCT_CONST_ROUNDING);
          const __m128i out_28_4 =
              _mm_add_epi32(out_28_2, k__DCT_CONST_ROUNDING);
          const __m128i out_28_5 =
              _mm_add_epi32(out_28_3, k__DCT_CONST_ROUNDING);
          const __m128i out_04_6 = _mm_srai_epi32(out_04_4, DCT_CONST_BITS);
          const __m128i out_04_7 = _mm_srai_epi32(out_04_5, DCT_CONST_BITS);
          const __m128i out_20_6 = _mm_srai_epi32(out_20_4, DCT_CONST_BITS);
          const __m128i out_20_7 = _mm_srai_epi32(out_20_5, DCT_CONST_BITS);
          const __m128i out_12_6 = _mm_srai_epi32(out_12_4, DCT_CONST_BITS);
          const __m128i out_12_7 = _mm_srai_epi32(out_12_5, DCT_CONST_BITS);
          const __m128i out_28_6 = _mm_srai_epi32(out_28_4, DCT_CONST_BITS);
          const __m128i out_28_7 = _mm_srai_epi32(out_28_5, DCT_CONST_BITS);
          // Combine
          out[4] = _mm_packs_epi32(out_04_6, out_04_7);
          out[20] = _mm_packs_epi32(out_20_6, out_20_7);
          out[12] = _mm_packs_epi32(out_12_6, out_12_7);
          out[28] = _mm_packs_epi32(out_28_6, out_28_7);
#if DCT_HIGH_BIT_DEPTH
          overflow =
              check_epi16_overflow_x4(&out[4], &out[20], &out[12], &out[28]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          step3[8] = ADD_EPI16(step2[9], step1[8]);
          step3[9] = SUB_EPI16(step1[8], step2[9]);
          step3[10] = SUB_EPI16(step1[11], step2[10]);
          step3[11] = ADD_EPI16(step2[10], step1[11]);
          step3[12] = ADD_EPI16(step2[13], step1[12]);
          step3[13] = SUB_EPI16(step1[12], step2[13]);
          step3[14] = SUB_EPI16(step1[15], step2[14]);
          step3[15] = ADD_EPI16(step2[14], step1[15]);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x8(&step3[8], &step3[9], &step3[10],
                                             &step3[11], &step3[12], &step3[13],
                                             &step3[14], &step3[15]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          const __m128i s3_17_0 = _mm_unpacklo_epi16(step2[17], step2[30]);
          const __m128i s3_17_1 = _mm_unpackhi_epi16(step2[17], step2[30]);
          const __m128i s3_18_0 = _mm_unpacklo_epi16(step2[18], step2[29]);
          const __m128i s3_18_1 = _mm_unpackhi_epi16(step2[18], step2[29]);
          const __m128i s3_21_0 = _mm_unpacklo_epi16(step2[21], step2[26]);
          const __m128i s3_21_1 = _mm_unpackhi_epi16(step2[21], step2[26]);
          const __m128i s3_22_0 = _mm_unpacklo_epi16(step2[22], step2[25]);
          const __m128i s3_22_1 = _mm_unpackhi_epi16(step2[22], step2[25]);
          const __m128i s3_17_2 = _mm_madd_epi16(s3_17_0, k__cospi_m04_p28);
          const __m128i s3_17_3 = _mm_madd_epi16(s3_17_1, k__cospi_m04_p28);
          const __m128i s3_18_2 = _mm_madd_epi16(s3_18_0, k__cospi_m28_m04);
          const __m128i s3_18_3 = _mm_madd_epi16(s3_18_1, k__cospi_m28_m04);
          const __m128i s3_21_2 = _mm_madd_epi16(s3_21_0, k__cospi_m20_p12);
          const __m128i s3_21_3 = _mm_madd_epi16(s3_21_1, k__cospi_m20_p12);
          const __m128i s3_22_2 = _mm_madd_epi16(s3_22_0, k__cospi_m12_m20);
          const __m128i s3_22_3 = _mm_madd_epi16(s3_22_1, k__cospi_m12_m20);
          const __m128i s3_25_2 = _mm_madd_epi16(s3_22_0, k__cospi_m20_p12);
          const __m128i s3_25_3 = _mm_madd_epi16(s3_22_1, k__cospi_m20_p12);
          const __m128i s3_26_2 = _mm_madd_epi16(s3_21_0, k__cospi_p12_p20);
          const __m128i s3_26_3 = _mm_madd_epi16(s3_21_1, k__cospi_p12_p20);
          const __m128i s3_29_2 = _mm_madd_epi16(s3_18_0, k__cospi_m04_p28);
          const __m128i s3_29_3 = _mm_madd_epi16(s3_18_1, k__cospi_m04_p28);
          const __m128i s3_30_2 = _mm_madd_epi16(s3_17_0, k__cospi_p28_p04);
          const __m128i s3_30_3 = _mm_madd_epi16(s3_17_1, k__cospi_p28_p04);
          // dct_const_round_shift
          const __m128i s3_17_4 = _mm_add_epi32(s3_17_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_17_5 = _mm_add_epi32(s3_17_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_18_4 = _mm_add_epi32(s3_18_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_18_5 = _mm_add_epi32(s3_18_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_21_4 = _mm_add_epi32(s3_21_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_21_5 = _mm_add_epi32(s3_21_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_22_4 = _mm_add_epi32(s3_22_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_22_5 = _mm_add_epi32(s3_22_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_17_6 = _mm_srai_epi32(s3_17_4, DCT_CONST_BITS);
          const __m128i s3_17_7 = _mm_srai_epi32(s3_17_5, DCT_CONST_BITS);
          const __m128i s3_18_6 = _mm_srai_epi32(s3_18_4, DCT_CONST_BITS);
          const __m128i s3_18_7 = _mm_srai_epi32(s3_18_5, DCT_CONST_BITS);
          const __m128i s3_21_6 = _mm_srai_epi32(s3_21_4, DCT_CONST_BITS);
          const __m128i s3_21_7 = _mm_srai_epi32(s3_21_5, DCT_CONST_BITS);
          const __m128i s3_22_6 = _mm_srai_epi32(s3_22_4, DCT_CONST_BITS);
          const __m128i s3_22_7 = _mm_srai_epi32(s3_22_5, DCT_CONST_BITS);
          const __m128i s3_25_4 = _mm_add_epi32(s3_25_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_25_5 = _mm_add_epi32(s3_25_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_26_4 = _mm_add_epi32(s3_26_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_26_5 = _mm_add_epi32(s3_26_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_29_4 = _mm_add_epi32(s3_29_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_29_5 = _mm_add_epi32(s3_29_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_30_4 = _mm_add_epi32(s3_30_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_30_5 = _mm_add_epi32(s3_30_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_25_6 = _mm_srai_epi32(s3_25_4, DCT_CONST_BITS);
          const __m128i s3_25_7 = _mm_srai_epi32(s3_25_5, DCT_CONST_BITS);
          const __m128i s3_26_6 = _mm_srai_epi32(s3_26_4, DCT_CONST_BITS);
          const __m128i s3_26_7 = _mm_srai_epi32(s3_26_5, DCT_CONST_BITS);
          const __m128i s3_29_6 = _mm_srai_epi32(s3_29_4, DCT_CONST_BITS);
          const __m128i s3_29_7 = _mm_srai_epi32(s3_29_5, DCT_CONST_BITS);
          const __m128i s3_30_6 = _mm_srai_epi32(s3_30_4, DCT_CONST_BITS);
          const __m128i s3_30_7 = _mm_srai_epi32(s3_30_5, DCT_CONST_BITS);
          // Combine
          step3[17] = _mm_packs_epi32(s3_17_6, s3_17_7);
          step3[18] = _mm_packs_epi32(s3_18_6, s3_18_7);
          step3[21] = _mm_packs_epi32(s3_21_6, s3_21_7);
          step3[22] = _mm_packs_epi32(s3_22_6, s3_22_7);
          // Combine
          step3[25] = _mm_packs_epi32(s3_25_6, s3_25_7);
          step3[26] = _mm_packs_epi32(s3_26_6, s3_26_7);
          step3[29] = _mm_packs_epi32(s3_29_6, s3_29_7);
          step3[30] = _mm_packs_epi32(s3_30_6, s3_30_7);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x8(&step3[17], &step3[18], &step3[21],
                                             &step3[22], &step3[25], &step3[26],
                                             &step3[29], &step3[30]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        // Stage 7
        {
          const __m128i out_02_0 = _mm_unpacklo_epi16(step3[8], step3[15]);
          const __m128i out_02_1 = _mm_unpackhi_epi16(step3[8], step3[15]);
          const __m128i out_18_0 = _mm_unpacklo_epi16(step3[9], step3[14]);
          const __m128i out_18_1 = _mm_unpackhi_epi16(step3[9], step3[14]);
          const __m128i out_10_0 = _mm_unpacklo_epi16(step3[10], step3[13]);
          const __m128i out_10_1 = _mm_unpackhi_epi16(step3[10], step3[13]);
          const __m128i out_26_0 = _mm_unpacklo_epi16(step3[11], step3[12]);
          const __m128i out_26_1 = _mm_unpackhi_epi16(step3[11], step3[12]);
          const __m128i out_02_2 = _mm_madd_epi16(out_02_0, k__cospi_p30_p02);
          const __m128i out_02_3 = _mm_madd_epi16(out_02_1, k__cospi_p30_p02);
          const __m128i out_18_2 = _mm_madd_epi16(out_18_0, k__cospi_p14_p18);
          const __m128i out_18_3 = _mm_madd_epi16(out_18_1, k__cospi_p14_p18);
          const __m128i out_10_2 = _mm_madd_epi16(out_10_0, k__cospi_p22_p10);
          const __m128i out_10_3 = _mm_madd_epi16(out_10_1, k__cospi_p22_p10);
          const __m128i out_26_2 = _mm_madd_epi16(out_26_0, k__cospi_p06_p26);
          const __m128i out_26_3 = _mm_madd_epi16(out_26_1, k__cospi_p06_p26);
          const __m128i out_06_2 = _mm_madd_epi16(out_26_0, k__cospi_m26_p06);
          const __m128i out_06_3 = _mm_madd_epi16(out_26_1, k__cospi_m26_p06);
          const __m128i out_22_2 = _mm_madd_epi16(out_10_0, k__cospi_m10_p22);
          const __m128i out_22_3 = _mm_madd_epi16(out_10_1, k__cospi_m10_p22);
          const __m128i out_14_2 = _mm_madd_epi16(out_18_0, k__cospi_m18_p14);
          const __m128i out_14_3 = _mm_madd_epi16(out_18_1, k__cospi_m18_p14);
          const __m128i out_30_2 = _mm_madd_epi16(out_02_0, k__cospi_m02_p30);
          const __m128i out_30_3 = _mm_madd_epi16(out_02_1, k__cospi_m02_p30);
          // dct_const_round_shift
          const __m128i out_02_4 =
              _mm_add_epi32(out_02_2, k__DCT_CONST_ROUNDING);
          const __m128i out_02_5 =
              _mm_add_epi32(out_02_3, k__DCT_CONST_ROUNDING);
          const __m128i out_18_4 =
              _mm_add_epi32(out_18_2, k__DCT_CONST_ROUNDING);
          const __m128i out_18_5 =
              _mm_add_epi32(out_18_3, k__DCT_CONST_ROUNDING);
          const __m128i out_10_4 =
              _mm_add_epi32(out_10_2, k__DCT_CONST_ROUNDING);
          const __m128i out_10_5 =
              _mm_add_epi32(out_10_3, k__DCT_CONST_ROUNDING);
          const __m128i out_26_4 =
              _mm_add_epi32(out_26_2, k__DCT_CONST_ROUNDING);
          const __m128i out_26_5 =
              _mm_add_epi32(out_26_3, k__DCT_CONST_ROUNDING);
          const __m128i out_06_4 =
              _mm_add_epi32(out_06_2, k__DCT_CONST_ROUNDING);
          const __m128i out_06_5 =
              _mm_add_epi32(out_06_3, k__DCT_CONST_ROUNDING);
          const __m128i out_22_4 =
              _mm_add_epi32(out_22_2, k__DCT_CONST_ROUNDING);
          const __m128i out_22_5 =
              _mm_add_epi32(out_22_3, k__DCT_CONST_ROUNDING);
          const __m128i out_14_4 =
              _mm_add_epi32(out_14_2, k__DCT_CONST_ROUNDING);
          const __m128i out_14_5 =
              _mm_add_epi32(out_14_3, k__DCT_CONST_ROUNDING);
          const __m128i out_30_4 =
              _mm_add_epi32(out_30_2, k__DCT_CONST_ROUNDING);
          const __m128i out_30_5 =
              _mm_add_epi32(out_30_3, k__DCT_CONST_ROUNDING);
          const __m128i out_02_6 = _mm_srai_epi32(out_02_4, DCT_CONST_BITS);
          const __m128i out_02_7 = _mm_srai_epi32(out_02_5, DCT_CONST_BITS);
          const __m128i out_18_6 = _mm_srai_epi32(out_18_4, DCT_CONST_BITS);
          const __m128i out_18_7 = _mm_srai_epi32(out_18_5, DCT_CONST_BITS);
          const __m128i out_10_6 = _mm_srai_epi32(out_10_4, DCT_CONST_BITS);
          const __m128i out_10_7 = _mm_srai_epi32(out_10_5, DCT_CONST_BITS);
          const __m128i out_26_6 = _mm_srai_epi32(out_26_4, DCT_CONST_BITS);
          const __m128i out_26_7 = _mm_srai_epi32(out_26_5, DCT_CONST_BITS);
          const __m128i out_06_6 = _mm_srai_epi32(out_06_4, DCT_CONST_BITS);
          const __m128i out_06_7 = _mm_srai_epi32(out_06_5, DCT_CONST_BITS);
          const __m128i out_22_6 = _mm_srai_epi32(out_22_4, DCT_CONST_BITS);
          const __m128i out_22_7 = _mm_srai_epi32(out_22_5, DCT_CONST_BITS);
          const __m128i out_14_6 = _mm_srai_epi32(out_14_4, DCT_CONST_BITS);
          const __m128i out_14_7 = _mm_srai_epi32(out_14_5, DCT_CONST_BITS);
          const __m128i out_30_6 = _mm_srai_epi32(out_30_4, DCT_CONST_BITS);
          const __m128i out_30_7 = _mm_srai_epi32(out_30_5, DCT_CONST_BITS);
          // Combine
          out[2] = _mm_packs_epi32(out_02_6, out_02_7);
          out[18] = _mm_packs_epi32(out_18_6, out_18_7);
          out[10] = _mm_packs_epi32(out_10_6, out_10_7);
          out[26] = _mm_packs_epi32(out_26_6, out_26_7);
          out[6] = _mm_packs_epi32(out_06_6, out_06_7);
          out[22] = _mm_packs_epi32(out_22_6, out_22_7);
          out[14] = _mm_packs_epi32(out_14_6, out_14_7);
          out[30] = _mm_packs_epi32(out_30_6, out_30_7);
#if DCT_HIGH_BIT_DEPTH
          overflow =
              check_epi16_overflow_x8(&out[2], &out[18], &out[10], &out[26],
                                      &out[6], &out[22], &out[14], &out[30]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          step1[16] = ADD_EPI16(step3[17], step2[16]);
          step1[17] = SUB_EPI16(step2[16], step3[17]);
          step1[18] = SUB_EPI16(step2[19], step3[18]);
          step1[19] = ADD_EPI16(step3[18], step2[19]);
          step1[20] = ADD_EPI16(step3[21], step2[20]);
          step1[21] = SUB_EPI16(step2[20], step3[21]);
          step1[22] = SUB_EPI16(step2[23], step3[22]);
          step1[23] = ADD_EPI16(step3[22], step2[23]);
          step1[24] = ADD_EPI16(step3[25], step2[24]);
          step1[25] = SUB_EPI16(step2[24], step3[25]);
          step1[26] = SUB_EPI16(step2[27], step3[26]);
          step1[27] = ADD_EPI16(step3[26], step2[27]);
          step1[28] = ADD_EPI16(step3[29], step2[28]);
          step1[29] = SUB_EPI16(step2[28], step3[29]);
          step1[30] = SUB_EPI16(step2[31], step3[30]);
          step1[31] = ADD_EPI16(step3[30], step2[31]);
#if DCT_HIGH_BIT_DEPTH
          overflow = check_epi16_overflow_x16(
              &step1[16], &step1[17], &step1[18], &step1[19], &step1[20],
              &step1[21], &step1[22], &step1[23], &step1[24], &step1[25],
              &step1[26], &step1[27], &step1[28], &step1[29], &step1[30],
              &step1[31]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        // Final stage --- outputs indices are bit-reversed.
        {
          const __m128i out_01_0 = _mm_unpacklo_epi16(step1[16], step1[31]);
          const __m128i out_01_1 = _mm_unpackhi_epi16(step1[16], step1[31]);
          const __m128i out_17_0 = _mm_unpacklo_epi16(step1[17], step1[30]);
          const __m128i out_17_1 = _mm_unpackhi_epi16(step1[17], step1[30]);
          const __m128i out_09_0 = _mm_unpacklo_epi16(step1[18], step1[29]);
          const __m128i out_09_1 = _mm_unpackhi_epi16(step1[18], step1[29]);
          const __m128i out_25_0 = _mm_unpacklo_epi16(step1[19], step1[28]);
          const __m128i out_25_1 = _mm_unpackhi_epi16(step1[19], step1[28]);
          const __m128i out_01_2 = _mm_madd_epi16(out_01_0, k__cospi_p31_p01);
          const __m128i out_01_3 = _mm_madd_epi16(out_01_1, k__cospi_p31_p01);
          const __m128i out_17_2 = _mm_madd_epi16(out_17_0, k__cospi_p15_p17);
          const __m128i out_17_3 = _mm_madd_epi16(out_17_1, k__cospi_p15_p17);
          const __m128i out_09_2 = _mm_madd_epi16(out_09_0, k__cospi_p23_p09);
          const __m128i out_09_3 = _mm_madd_epi16(out_09_1, k__cospi_p23_p09);
          const __m128i out_25_2 = _mm_madd_epi16(out_25_0, k__cospi_p07_p25);
          const __m128i out_25_3 = _mm_madd_epi16(out_25_1, k__cospi_p07_p25);
          const __m128i out_07_2 = _mm_madd_epi16(out_25_0, k__cospi_m25_p07);
          const __m128i out_07_3 = _mm_madd_epi16(out_25_1, k__cospi_m25_p07);
          const __m128i out_23_2 = _mm_madd_epi16(out_09_0, k__cospi_m09_p23);
          const __m128i out_23_3 = _mm_madd_epi16(out_09_1, k__cospi_m09_p23);
          const __m128i out_15_2 = _mm_madd_epi16(out_17_0, k__cospi_m17_p15);
          const __m128i out_15_3 = _mm_madd_epi16(out_17_1, k__cospi_m17_p15);
          const __m128i out_31_2 = _mm_madd_epi16(out_01_0, k__cospi_m01_p31);
          const __m128i out_31_3 = _mm_madd_epi16(out_01_1, k__cospi_m01_p31);
          // dct_const_round_shift
          const __m128i out_01_4 =
              _mm_add_epi32(out_01_2, k__DCT_CONST_ROUNDING);
          const __m128i out_01_5 =
              _mm_add_epi32(out_01_3, k__DCT_CONST_ROUNDING);
          const __m128i out_17_4 =
              _mm_add_epi32(out_17_2, k__DCT_CONST_ROUNDING);
          const __m128i out_17_5 =
              _mm_add_epi32(out_17_3, k__DCT_CONST_ROUNDING);
          const __m128i out_09_4 =
              _mm_add_epi32(out_09_2, k__DCT_CONST_ROUNDING);
          const __m128i out_09_5 =
              _mm_add_epi32(out_09_3, k__DCT_CONST_ROUNDING);
          const __m128i out_25_4 =
              _mm_add_epi32(out_25_2, k__DCT_CONST_ROUNDING);
          const __m128i out_25_5 =
              _mm_add_epi32(out_25_3, k__DCT_CONST_ROUNDING);
          const __m128i out_07_4 =
              _mm_add_epi32(out_07_2, k__DCT_CONST_ROUNDING);
          const __m128i out_07_5 =
              _mm_add_epi32(out_07_3, k__DCT_CONST_ROUNDING);
          const __m128i out_23_4 =
              _mm_add_epi32(out_23_2, k__DCT_CONST_ROUNDING);
          const __m128i out_23_5 =
              _mm_add_epi32(out_23_3, k__DCT_CONST_ROUNDING);
          const __m128i out_15_4 =
              _mm_add_epi32(out_15_2, k__DCT_CONST_ROUNDING);
          const __m128i out_15_5 =
              _mm_add_epi32(out_15_3, k__DCT_CONST_ROUNDING);
          const __m128i out_31_4 =
              _mm_add_epi32(out_31_2, k__DCT_CONST_ROUNDING);
          const __m128i out_31_5 =
              _mm_add_epi32(out_31_3, k__DCT_CONST_ROUNDING);
          const __m128i out_01_6 = _mm_srai_epi32(out_01_4, DCT_CONST_BITS);
          const __m128i out_01_7 = _mm_srai_epi32(out_01_5, DCT_CONST_BITS);
          const __m128i out_17_6 = _mm_srai_epi32(out_17_4, DCT_CONST_BITS);
          const __m128i out_17_7 = _mm_srai_epi32(out_17_5, DCT_CONST_BITS);
          const __m128i out_09_6 = _mm_srai_epi32(out_09_4, DCT_CONST_BITS);
          const __m128i out_09_7 = _mm_srai_epi32(out_09_5, DCT_CONST_BITS);
          const __m128i out_25_6 = _mm_srai_epi32(out_25_4, DCT_CONST_BITS);
          const __m128i out_25_7 = _mm_srai_epi32(out_25_5, DCT_CONST_BITS);
          const __m128i out_07_6 = _mm_srai_epi32(out_07_4, DCT_CONST_BITS);
          const __m128i out_07_7 = _mm_srai_epi32(out_07_5, DCT_CONST_BITS);
          const __m128i out_23_6 = _mm_srai_epi32(out_23_4, DCT_CONST_BITS);
          const __m128i out_23_7 = _mm_srai_epi32(out_23_5, DCT_CONST_BITS);
          const __m128i out_15_6 = _mm_srai_epi32(out_15_4, DCT_CONST_BITS);
          const __m128i out_15_7 = _mm_srai_epi32(out_15_5, DCT_CONST_BITS);
          const __m128i out_31_6 = _mm_srai_epi32(out_31_4, DCT_CONST_BITS);
          const __m128i out_31_7 = _mm_srai_epi32(out_31_5, DCT_CONST_BITS);
          // Combine
          out[1] = _mm_packs_epi32(out_01_6, out_01_7);
          out[17] = _mm_packs_epi32(out_17_6, out_17_7);
          out[9] = _mm_packs_epi32(out_09_6, out_09_7);
          out[25] = _mm_packs_epi32(out_25_6, out_25_7);
          out[7] = _mm_packs_epi32(out_07_6, out_07_7);
          out[23] = _mm_packs_epi32(out_23_6, out_23_7);
          out[15] = _mm_packs_epi32(out_15_6, out_15_7);
          out[31] = _mm_packs_epi32(out_31_6, out_31_7);
#if DCT_HIGH_BIT_DEPTH
          overflow =
              check_epi16_overflow_x8(&out[1], &out[17], &out[9], &out[25],
                                      &out[7], &out[23], &out[15], &out[31]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          const __m128i out_05_0 = _mm_unpacklo_epi16(step1[20], step1[27]);
          const __m128i out_05_1 = _mm_unpackhi_epi16(step1[20], step1[27]);
          const __m128i out_21_0 = _mm_unpacklo_epi16(step1[21], step1[26]);
          const __m128i out_21_1 = _mm_unpackhi_epi16(step1[21], step1[26]);
          const __m128i out_13_0 = _mm_unpacklo_epi16(step1[22], step1[25]);
          const __m128i out_13_1 = _mm_unpackhi_epi16(step1[22], step1[25]);
          const __m128i out_29_0 = _mm_unpacklo_epi16(step1[23], step1[24]);
          const __m128i out_29_1 = _mm_unpackhi_epi16(step1[23], step1[24]);
          const __m128i out_05_2 = _mm_madd_epi16(out_05_0, k__cospi_p27_p05);
          const __m128i out_05_3 = _mm_madd_epi16(out_05_1, k__cospi_p27_p05);
          const __m128i out_21_2 = _mm_madd_epi16(out_21_0, k__cospi_p11_p21);
          const __m128i out_21_3 = _mm_madd_epi16(out_21_1, k__cospi_p11_p21);
          const __m128i out_13_2 = _mm_madd_epi16(out_13_0, k__cospi_p19_p13);
          const __m128i out_13_3 = _mm_madd_epi16(out_13_1, k__cospi_p19_p13);
          const __m128i out_29_2 = _mm_madd_epi16(out_29_0, k__cospi_p03_p29);
          const __m128i out_29_3 = _mm_madd_epi16(out_29_1, k__cospi_p03_p29);
          const __m128i out_03_2 = _mm_madd_epi16(out_29_0, k__cospi_m29_p03);
          const __m128i out_03_3 = _mm_madd_epi16(out_29_1, k__cospi_m29_p03);
          const __m128i out_19_2 = _mm_madd_epi16(out_13_0, k__cospi_m13_p19);
          const __m128i out_19_3 = _mm_madd_epi16(out_13_1, k__cospi_m13_p19);
          const __m128i out_11_2 = _mm_madd_epi16(out_21_0, k__cospi_m21_p11);
          const __m128i out_11_3 = _mm_madd_epi16(out_21_1, k__cospi_m21_p11);
          const __m128i out_27_2 = _mm_madd_epi16(out_05_0, k__cospi_m05_p27);
          const __m128i out_27_3 = _mm_madd_epi16(out_05_1, k__cospi_m05_p27);
          // dct_const_round_shift
          const __m128i out_05_4 =
              _mm_add_epi32(out_05_2, k__DCT_CONST_ROUNDING);
          const __m128i out_05_5 =
              _mm_add_epi32(out_05_3, k__DCT_CONST_ROUNDING);
          const __m128i out_21_4 =
              _mm_add_epi32(out_21_2, k__DCT_CONST_ROUNDING);
          const __m128i out_21_5 =
              _mm_add_epi32(out_21_3, k__DCT_CONST_ROUNDING);
          const __m128i out_13_4 =
              _mm_add_epi32(out_13_2, k__DCT_CONST_ROUNDING);
          const __m128i out_13_5 =
              _mm_add_epi32(out_13_3, k__DCT_CONST_ROUNDING);
          const __m128i out_29_4 =
              _mm_add_epi32(out_29_2, k__DCT_CONST_ROUNDING);
          const __m128i out_29_5 =
              _mm_add_epi32(out_29_3, k__DCT_CONST_ROUNDING);
          const __m128i out_03_4 =
              _mm_add_epi32(out_03_2, k__DCT_CONST_ROUNDING);
          const __m128i out_03_5 =
              _mm_add_epi32(out_03_3, k__DCT_CONST_ROUNDING);
          const __m128i out_19_4 =
              _mm_add_epi32(out_19_2, k__DCT_CONST_ROUNDING);
          const __m128i out_19_5 =
              _mm_add_epi32(out_19_3, k__DCT_CONST_ROUNDING);
          const __m128i out_11_4 =
              _mm_add_epi32(out_11_2, k__DCT_CONST_ROUNDING);
          const __m128i out_11_5 =
              _mm_add_epi32(out_11_3, k__DCT_CONST_ROUNDING);
          const __m128i out_27_4 =
              _mm_add_epi32(out_27_2, k__DCT_CONST_ROUNDING);
          const __m128i out_27_5 =
              _mm_add_epi32(out_27_3, k__DCT_CONST_ROUNDING);
          const __m128i out_05_6 = _mm_srai_epi32(out_05_4, DCT_CONST_BITS);
          const __m128i out_05_7 = _mm_srai_epi32(out_05_5, DCT_CONST_BITS);
          const __m128i out_21_6 = _mm_srai_epi32(out_21_4, DCT_CONST_BITS);
          const __m128i out_21_7 = _mm_srai_epi32(out_21_5, DCT_CONST_BITS);
          const __m128i out_13_6 = _mm_srai_epi32(out_13_4, DCT_CONST_BITS);
          const __m128i out_13_7 = _mm_srai_epi32(out_13_5, DCT_CONST_BITS);
          const __m128i out_29_6 = _mm_srai_epi32(out_29_4, DCT_CONST_BITS);
          const __m128i out_29_7 = _mm_srai_epi32(out_29_5, DCT_CONST_BITS);
          const __m128i out_03_6 = _mm_srai_epi32(out_03_4, DCT_CONST_BITS);
          const __m128i out_03_7 = _mm_srai_epi32(out_03_5, DCT_CONST_BITS);
          const __m128i out_19_6 = _mm_srai_epi32(out_19_4, DCT_CONST_BITS);
          const __m128i out_19_7 = _mm_srai_epi32(out_19_5, DCT_CONST_BITS);
          const __m128i out_11_6 = _mm_srai_epi32(out_11_4, DCT_CONST_BITS);
          const __m128i out_11_7 = _mm_srai_epi32(out_11_5, DCT_CONST_BITS);
          const __m128i out_27_6 = _mm_srai_epi32(out_27_4, DCT_CONST_BITS);
          const __m128i out_27_7 = _mm_srai_epi32(out_27_5, DCT_CONST_BITS);
          // Combine
          out[5] = _mm_packs_epi32(out_05_6, out_05_7);
          out[21] = _mm_packs_epi32(out_21_6, out_21_7);
          out[13] = _mm_packs_epi32(out_13_6, out_13_7);
          out[29] = _mm_packs_epi32(out_29_6, out_29_7);
          out[3] = _mm_packs_epi32(out_03_6, out_03_7);
          out[19] = _mm_packs_epi32(out_19_6, out_19_7);
          out[11] = _mm_packs_epi32(out_11_6, out_11_7);
          out[27] = _mm_packs_epi32(out_27_6, out_27_7);
#if DCT_HIGH_BIT_DEPTH
          overflow =
              check_epi16_overflow_x8(&out[5], &out[21], &out[13], &out[29],
                                      &out[3], &out[19], &out[11], &out[27]);
          if (overflow) {
            if (pass == 0)
              HIGH_FDCT32x32_2D_C(input, output_org, stride);
            else
              HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
#if FDCT32x32_HIGH_PRECISION
      } else {
        __m128i lstep1[64], lstep2[64], lstep3[64];
        __m128i u[32], v[32], sign[16];
        const __m128i K32One = _mm_set_epi32(1, 1, 1, 1);
        // start using 32-bit operations
        // stage 3
        {
          // expanding to 32-bit length priori to addition operations
          lstep2[0] = _mm_unpacklo_epi16(step2[0], kZero);
          lstep2[1] = _mm_unpackhi_epi16(step2[0], kZero);
          lstep2[2] = _mm_unpacklo_epi16(step2[1], kZero);
          lstep2[3] = _mm_unpackhi_epi16(step2[1], kZero);
          lstep2[4] = _mm_unpacklo_epi16(step2[2], kZero);
          lstep2[5] = _mm_unpackhi_epi16(step2[2], kZero);
          lstep2[6] = _mm_unpacklo_epi16(step2[3], kZero);
          lstep2[7] = _mm_unpackhi_epi16(step2[3], kZero);
          lstep2[8] = _mm_unpacklo_epi16(step2[4], kZero);
          lstep2[9] = _mm_unpackhi_epi16(step2[4], kZero);
          lstep2[10] = _mm_unpacklo_epi16(step2[5], kZero);
          lstep2[11] = _mm_unpackhi_epi16(step2[5], kZero);
          lstep2[12] = _mm_unpacklo_epi16(step2[6], kZero);
          lstep2[13] = _mm_unpackhi_epi16(step2[6], kZero);
          lstep2[14] = _mm_unpacklo_epi16(step2[7], kZero);
          lstep2[15] = _mm_unpackhi_epi16(step2[7], kZero);
          lstep2[0] = _mm_madd_epi16(lstep2[0], kOne);
          lstep2[1] = _mm_madd_epi16(lstep2[1], kOne);
          lstep2[2] = _mm_madd_epi16(lstep2[2], kOne);
          lstep2[3] = _mm_madd_epi16(lstep2[3], kOne);
          lstep2[4] = _mm_madd_epi16(lstep2[4], kOne);
          lstep2[5] = _mm_madd_epi16(lstep2[5], kOne);
          lstep2[6] = _mm_madd_epi16(lstep2[6], kOne);
          lstep2[7] = _mm_madd_epi16(lstep2[7], kOne);
          lstep2[8] = _mm_madd_epi16(lstep2[8], kOne);
          lstep2[9] = _mm_madd_epi16(lstep2[9], kOne);
          lstep2[10] = _mm_madd_epi16(lstep2[10], kOne);
          lstep2[11] = _mm_madd_epi16(lstep2[11], kOne);
          lstep2[12] = _mm_madd_epi16(lstep2[12], kOne);
          lstep2[13] = _mm_madd_epi16(lstep2[13], kOne);
          lstep2[14] = _mm_madd_epi16(lstep2[14], kOne);
          lstep2[15] = _mm_madd_epi16(lstep2[15], kOne);

          lstep3[0] = _mm_add_epi32(lstep2[14], lstep2[0]);
          lstep3[1] = _mm_add_epi32(lstep2[15], lstep2[1]);
          lstep3[2] = _mm_add_epi32(lstep2[12], lstep2[2]);
          lstep3[3] = _mm_add_epi32(lstep2[13], lstep2[3]);
          lstep3[4] = _mm_add_epi32(lstep2[10], lstep2[4]);
          lstep3[5] = _mm_add_epi32(lstep2[11], lstep2[5]);
          lstep3[6] = _mm_add_epi32(lstep2[8], lstep2[6]);
          lstep3[7] = _mm_add_epi32(lstep2[9], lstep2[7]);
          lstep3[8] = _mm_sub_epi32(lstep2[6], lstep2[8]);
          lstep3[9] = _mm_sub_epi32(lstep2[7], lstep2[9]);
          lstep3[10] = _mm_sub_epi32(lstep2[4], lstep2[10]);
          lstep3[11] = _mm_sub_epi32(lstep2[5], lstep2[11]);
          lstep3[12] = _mm_sub_epi32(lstep2[2], lstep2[12]);
          lstep3[13] = _mm_sub_epi32(lstep2[3], lstep2[13]);
          lstep3[14] = _mm_sub_epi32(lstep2[0], lstep2[14]);
          lstep3[15] = _mm_sub_epi32(lstep2[1], lstep2[15]);
        }
        {
          const __m128i s3_10_0 = _mm_unpacklo_epi16(step2[13], step2[10]);
          const __m128i s3_10_1 = _mm_unpackhi_epi16(step2[13], step2[10]);
          const __m128i s3_11_0 = _mm_unpacklo_epi16(step2[12], step2[11]);
          const __m128i s3_11_1 = _mm_unpackhi_epi16(step2[12], step2[11]);
          const __m128i s3_10_2 = _mm_madd_epi16(s3_10_0, k__cospi_p16_m16);
          const __m128i s3_10_3 = _mm_madd_epi16(s3_10_1, k__cospi_p16_m16);
          const __m128i s3_11_2 = _mm_madd_epi16(s3_11_0, k__cospi_p16_m16);
          const __m128i s3_11_3 = _mm_madd_epi16(s3_11_1, k__cospi_p16_m16);
          const __m128i s3_12_2 = _mm_madd_epi16(s3_11_0, k__cospi_p16_p16);
          const __m128i s3_12_3 = _mm_madd_epi16(s3_11_1, k__cospi_p16_p16);
          const __m128i s3_13_2 = _mm_madd_epi16(s3_10_0, k__cospi_p16_p16);
          const __m128i s3_13_3 = _mm_madd_epi16(s3_10_1, k__cospi_p16_p16);
          // dct_const_round_shift
          const __m128i s3_10_4 = _mm_add_epi32(s3_10_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_10_5 = _mm_add_epi32(s3_10_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_11_4 = _mm_add_epi32(s3_11_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_11_5 = _mm_add_epi32(s3_11_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_12_4 = _mm_add_epi32(s3_12_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_12_5 = _mm_add_epi32(s3_12_3, k__DCT_CONST_ROUNDING);
          const __m128i s3_13_4 = _mm_add_epi32(s3_13_2, k__DCT_CONST_ROUNDING);
          const __m128i s3_13_5 = _mm_add_epi32(s3_13_3, k__DCT_CONST_ROUNDING);
          lstep3[20] = _mm_srai_epi32(s3_10_4, DCT_CONST_BITS);
          lstep3[21] = _mm_srai_epi32(s3_10_5, DCT_CONST_BITS);
          lstep3[22] = _mm_srai_epi32(s3_11_4, DCT_CONST_BITS);
          lstep3[23] = _mm_srai_epi32(s3_11_5, DCT_CONST_BITS);
          lstep3[24] = _mm_srai_epi32(s3_12_4, DCT_CONST_BITS);
          lstep3[25] = _mm_srai_epi32(s3_12_5, DCT_CONST_BITS);
          lstep3[26] = _mm_srai_epi32(s3_13_4, DCT_CONST_BITS);
          lstep3[27] = _mm_srai_epi32(s3_13_5, DCT_CONST_BITS);
        }
        {
          lstep2[40] = _mm_unpacklo_epi16(step2[20], kZero);
          lstep2[41] = _mm_unpackhi_epi16(step2[20], kZero);
          lstep2[42] = _mm_unpacklo_epi16(step2[21], kZero);
          lstep2[43] = _mm_unpackhi_epi16(step2[21], kZero);
          lstep2[44] = _mm_unpacklo_epi16(step2[22], kZero);
          lstep2[45] = _mm_unpackhi_epi16(step2[22], kZero);
          lstep2[46] = _mm_unpacklo_epi16(step2[23], kZero);
          lstep2[47] = _mm_unpackhi_epi16(step2[23], kZero);
          lstep2[48] = _mm_unpacklo_epi16(step2[24], kZero);
          lstep2[49] = _mm_unpackhi_epi16(step2[24], kZero);
          lstep2[50] = _mm_unpacklo_epi16(step2[25], kZero);
          lstep2[51] = _mm_unpackhi_epi16(step2[25], kZero);
          lstep2[52] = _mm_unpacklo_epi16(step2[26], kZero);
          lstep2[53] = _mm_unpackhi_epi16(step2[26], kZero);
          lstep2[54] = _mm_unpacklo_epi16(step2[27], kZero);
          lstep2[55] = _mm_unpackhi_epi16(step2[27], kZero);
          lstep2[40] = _mm_madd_epi16(lstep2[40], kOne);
          lstep2[41] = _mm_madd_epi16(lstep2[41], kOne);
          lstep2[42] = _mm_madd_epi16(lstep2[42], kOne);
          lstep2[43] = _mm_madd_epi16(lstep2[43], kOne);
          lstep2[44] = _mm_madd_epi16(lstep2[44], kOne);
          lstep2[45] = _mm_madd_epi16(lstep2[45], kOne);
          lstep2[46] = _mm_madd_epi16(lstep2[46], kOne);
          lstep2[47] = _mm_madd_epi16(lstep2[47], kOne);
          lstep2[48] = _mm_madd_epi16(lstep2[48], kOne);
          lstep2[49] = _mm_madd_epi16(lstep2[49], kOne);
          lstep2[50] = _mm_madd_epi16(lstep2[50], kOne);
          lstep2[51] = _mm_madd_epi16(lstep2[51], kOne);
          lstep2[52] = _mm_madd_epi16(lstep2[52], kOne);
          lstep2[53] = _mm_madd_epi16(lstep2[53], kOne);
          lstep2[54] = _mm_madd_epi16(lstep2[54], kOne);
          lstep2[55] = _mm_madd_epi16(lstep2[55], kOne);

          lstep1[32] = _mm_unpacklo_epi16(step1[16], kZero);
          lstep1[33] = _mm_unpackhi_epi16(step1[16], kZero);
          lstep1[34] = _mm_unpacklo_epi16(step1[17], kZero);
          lstep1[35] = _mm_unpackhi_epi16(step1[17], kZero);
          lstep1[36] = _mm_unpacklo_epi16(step1[18], kZero);
          lstep1[37] = _mm_unpackhi_epi16(step1[18], kZero);
          lstep1[38] = _mm_unpacklo_epi16(step1[19], kZero);
          lstep1[39] = _mm_unpackhi_epi16(step1[19], kZero);
          lstep1[56] = _mm_unpacklo_epi16(step1[28], kZero);
          lstep1[57] = _mm_unpackhi_epi16(step1[28], kZero);
          lstep1[58] = _mm_unpacklo_epi16(step1[29], kZero);
          lstep1[59] = _mm_unpackhi_epi16(step1[29], kZero);
          lstep1[60] = _mm_unpacklo_epi16(step1[30], kZero);
          lstep1[61] = _mm_unpackhi_epi16(step1[30], kZero);
          lstep1[62] = _mm_unpacklo_epi16(step1[31], kZero);
          lstep1[63] = _mm_unpackhi_epi16(step1[31], kZero);
          lstep1[32] = _mm_madd_epi16(lstep1[32], kOne);
          lstep1[33] = _mm_madd_epi16(lstep1[33], kOne);
          lstep1[34] = _mm_madd_epi16(lstep1[34], kOne);
          lstep1[35] = _mm_madd_epi16(lstep1[35], kOne);
          lstep1[36] = _mm_madd_epi16(lstep1[36], kOne);
          lstep1[37] = _mm_madd_epi16(lstep1[37], kOne);
          lstep1[38] = _mm_madd_epi16(lstep1[38], kOne);
          lstep1[39] = _mm_madd_epi16(lstep1[39], kOne);
          lstep1[56] = _mm_madd_epi16(lstep1[56], kOne);
          lstep1[57] = _mm_madd_epi16(lstep1[57], kOne);
          lstep1[58] = _mm_madd_epi16(lstep1[58], kOne);
          lstep1[59] = _mm_madd_epi16(lstep1[59], kOne);
          lstep1[60] = _mm_madd_epi16(lstep1[60], kOne);
          lstep1[61] = _mm_madd_epi16(lstep1[61], kOne);
          lstep1[62] = _mm_madd_epi16(lstep1[62], kOne);
          lstep1[63] = _mm_madd_epi16(lstep1[63], kOne);

          lstep3[32] = _mm_add_epi32(lstep2[46], lstep1[32]);
          lstep3[33] = _mm_add_epi32(lstep2[47], lstep1[33]);

          lstep3[34] = _mm_add_epi32(lstep2[44], lstep1[34]);
          lstep3[35] = _mm_add_epi32(lstep2[45], lstep1[35]);
          lstep3[36] = _mm_add_epi32(lstep2[42], lstep1[36]);
          lstep3[37] = _mm_add_epi32(lstep2[43], lstep1[37]);
          lstep3[38] = _mm_add_epi32(lstep2[40], lstep1[38]);
          lstep3[39] = _mm_add_epi32(lstep2[41], lstep1[39]);
          lstep3[40] = _mm_sub_epi32(lstep1[38], lstep2[40]);
          lstep3[41] = _mm_sub_epi32(lstep1[39], lstep2[41]);
          lstep3[42] = _mm_sub_epi32(lstep1[36], lstep2[42]);
          lstep3[43] = _mm_sub_epi32(lstep1[37], lstep2[43]);
          lstep3[44] = _mm_sub_epi32(lstep1[34], lstep2[44]);
          lstep3[45] = _mm_sub_epi32(lstep1[35], lstep2[45]);
          lstep3[46] = _mm_sub_epi32(lstep1[32], lstep2[46]);
          lstep3[47] = _mm_sub_epi32(lstep1[33], lstep2[47]);
          lstep3[48] = _mm_sub_epi32(lstep1[62], lstep2[48]);
          lstep3[49] = _mm_sub_epi32(lstep1[63], lstep2[49]);
          lstep3[50] = _mm_sub_epi32(lstep1[60], lstep2[50]);
          lstep3[51] = _mm_sub_epi32(lstep1[61], lstep2[51]);
          lstep3[52] = _mm_sub_epi32(lstep1[58], lstep2[52]);
          lstep3[53] = _mm_sub_epi32(lstep1[59], lstep2[53]);
          lstep3[54] = _mm_sub_epi32(lstep1[56], lstep2[54]);
          lstep3[55] = _mm_sub_epi32(lstep1[57], lstep2[55]);
          lstep3[56] = _mm_add_epi32(lstep2[54], lstep1[56]);
          lstep3[57] = _mm_add_epi32(lstep2[55], lstep1[57]);
          lstep3[58] = _mm_add_epi32(lstep2[52], lstep1[58]);
          lstep3[59] = _mm_add_epi32(lstep2[53], lstep1[59]);
          lstep3[60] = _mm_add_epi32(lstep2[50], lstep1[60]);
          lstep3[61] = _mm_add_epi32(lstep2[51], lstep1[61]);
          lstep3[62] = _mm_add_epi32(lstep2[48], lstep1[62]);
          lstep3[63] = _mm_add_epi32(lstep2[49], lstep1[63]);
        }

        // stage 4
        {
          // expanding to 32-bit length priori to addition operations
          lstep2[16] = _mm_unpacklo_epi16(step2[8], kZero);
          lstep2[17] = _mm_unpackhi_epi16(step2[8], kZero);
          lstep2[18] = _mm_unpacklo_epi16(step2[9], kZero);
          lstep2[19] = _mm_unpackhi_epi16(step2[9], kZero);
          lstep2[28] = _mm_unpacklo_epi16(step2[14], kZero);
          lstep2[29] = _mm_unpackhi_epi16(step2[14], kZero);
          lstep2[30] = _mm_unpacklo_epi16(step2[15], kZero);
          lstep2[31] = _mm_unpackhi_epi16(step2[15], kZero);
          lstep2[16] = _mm_madd_epi16(lstep2[16], kOne);
          lstep2[17] = _mm_madd_epi16(lstep2[17], kOne);
          lstep2[18] = _mm_madd_epi16(lstep2[18], kOne);
          lstep2[19] = _mm_madd_epi16(lstep2[19], kOne);
          lstep2[28] = _mm_madd_epi16(lstep2[28], kOne);
          lstep2[29] = _mm_madd_epi16(lstep2[29], kOne);
          lstep2[30] = _mm_madd_epi16(lstep2[30], kOne);
          lstep2[31] = _mm_madd_epi16(lstep2[31], kOne);

          lstep1[0] = _mm_add_epi32(lstep3[6], lstep3[0]);
          lstep1[1] = _mm_add_epi32(lstep3[7], lstep3[1]);
          lstep1[2] = _mm_add_epi32(lstep3[4], lstep3[2]);
          lstep1[3] = _mm_add_epi32(lstep3[5], lstep3[3]);
          lstep1[4] = _mm_sub_epi32(lstep3[2], lstep3[4]);
          lstep1[5] = _mm_sub_epi32(lstep3[3], lstep3[5]);
          lstep1[6] = _mm_sub_epi32(lstep3[0], lstep3[6]);
          lstep1[7] = _mm_sub_epi32(lstep3[1], lstep3[7]);
          lstep1[16] = _mm_add_epi32(lstep3[22], lstep2[16]);
          lstep1[17] = _mm_add_epi32(lstep3[23], lstep2[17]);
          lstep1[18] = _mm_add_epi32(lstep3[20], lstep2[18]);
          lstep1[19] = _mm_add_epi32(lstep3[21], lstep2[19]);
          lstep1[20] = _mm_sub_epi32(lstep2[18], lstep3[20]);
          lstep1[21] = _mm_sub_epi32(lstep2[19], lstep3[21]);
          lstep1[22] = _mm_sub_epi32(lstep2[16], lstep3[22]);
          lstep1[23] = _mm_sub_epi32(lstep2[17], lstep3[23]);
          lstep1[24] = _mm_sub_epi32(lstep2[30], lstep3[24]);
          lstep1[25] = _mm_sub_epi32(lstep2[31], lstep3[25]);
          lstep1[26] = _mm_sub_epi32(lstep2[28], lstep3[26]);
          lstep1[27] = _mm_sub_epi32(lstep2[29], lstep3[27]);
          lstep1[28] = _mm_add_epi32(lstep3[26], lstep2[28]);
          lstep1[29] = _mm_add_epi32(lstep3[27], lstep2[29]);
          lstep1[30] = _mm_add_epi32(lstep3[24], lstep2[30]);
          lstep1[31] = _mm_add_epi32(lstep3[25], lstep2[31]);
        }
        {
          // to be continued...
          //
          const __m128i k32_p16_p16 = pair_set_epi32(cospi_16_64, cospi_16_64);
          const __m128i k32_p16_m16 = pair_set_epi32(cospi_16_64, -cospi_16_64);

          u[0] = _mm_unpacklo_epi32(lstep3[12], lstep3[10]);
          u[1] = _mm_unpackhi_epi32(lstep3[12], lstep3[10]);
          u[2] = _mm_unpacklo_epi32(lstep3[13], lstep3[11]);
          u[3] = _mm_unpackhi_epi32(lstep3[13], lstep3[11]);

          // TODO(jingning): manually inline k_madd_epi32_ to further hide
          // instruction latency.
          v[0] = k_madd_epi32(u[0], k32_p16_m16);
          v[1] = k_madd_epi32(u[1], k32_p16_m16);
          v[2] = k_madd_epi32(u[2], k32_p16_m16);
          v[3] = k_madd_epi32(u[3], k32_p16_m16);
          v[4] = k_madd_epi32(u[0], k32_p16_p16);
          v[5] = k_madd_epi32(u[1], k32_p16_p16);
          v[6] = k_madd_epi32(u[2], k32_p16_p16);
          v[7] = k_madd_epi32(u[3], k32_p16_p16);
#if DCT_HIGH_BIT_DEPTH
          overflow = k_check_epi32_overflow_8(&v[0], &v[1], &v[2], &v[3], &v[4],
                                              &v[5], &v[6], &v[7], &kZero);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
          u[0] = k_packs_epi64(v[0], v[1]);
          u[1] = k_packs_epi64(v[2], v[3]);
          u[2] = k_packs_epi64(v[4], v[5]);
          u[3] = k_packs_epi64(v[6], v[7]);

          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);

          lstep1[10] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
          lstep1[11] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
          lstep1[12] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
          lstep1[13] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
        }
        {
          const __m128i k32_m08_p24 = pair_set_epi32(-cospi_8_64, cospi_24_64);
          const __m128i k32_m24_m08 = pair_set_epi32(-cospi_24_64, -cospi_8_64);
          const __m128i k32_p24_p08 = pair_set_epi32(cospi_24_64, cospi_8_64);

          u[0] = _mm_unpacklo_epi32(lstep3[36], lstep3[58]);
          u[1] = _mm_unpackhi_epi32(lstep3[36], lstep3[58]);
          u[2] = _mm_unpacklo_epi32(lstep3[37], lstep3[59]);
          u[3] = _mm_unpackhi_epi32(lstep3[37], lstep3[59]);
          u[4] = _mm_unpacklo_epi32(lstep3[38], lstep3[56]);
          u[5] = _mm_unpackhi_epi32(lstep3[38], lstep3[56]);
          u[6] = _mm_unpacklo_epi32(lstep3[39], lstep3[57]);
          u[7] = _mm_unpackhi_epi32(lstep3[39], lstep3[57]);
          u[8] = _mm_unpacklo_epi32(lstep3[40], lstep3[54]);
          u[9] = _mm_unpackhi_epi32(lstep3[40], lstep3[54]);
          u[10] = _mm_unpacklo_epi32(lstep3[41], lstep3[55]);
          u[11] = _mm_unpackhi_epi32(lstep3[41], lstep3[55]);
          u[12] = _mm_unpacklo_epi32(lstep3[42], lstep3[52]);
          u[13] = _mm_unpackhi_epi32(lstep3[42], lstep3[52]);
          u[14] = _mm_unpacklo_epi32(lstep3[43], lstep3[53]);
          u[15] = _mm_unpackhi_epi32(lstep3[43], lstep3[53]);

          v[0] = k_madd_epi32(u[0], k32_m08_p24);
          v[1] = k_madd_epi32(u[1], k32_m08_p24);
          v[2] = k_madd_epi32(u[2], k32_m08_p24);
          v[3] = k_madd_epi32(u[3], k32_m08_p24);
          v[4] = k_madd_epi32(u[4], k32_m08_p24);
          v[5] = k_madd_epi32(u[5], k32_m08_p24);
          v[6] = k_madd_epi32(u[6], k32_m08_p24);
          v[7] = k_madd_epi32(u[7], k32_m08_p24);
          v[8] = k_madd_epi32(u[8], k32_m24_m08);
          v[9] = k_madd_epi32(u[9], k32_m24_m08);
          v[10] = k_madd_epi32(u[10], k32_m24_m08);
          v[11] = k_madd_epi32(u[11], k32_m24_m08);
          v[12] = k_madd_epi32(u[12], k32_m24_m08);
          v[13] = k_madd_epi32(u[13], k32_m24_m08);
          v[14] = k_madd_epi32(u[14], k32_m24_m08);
          v[15] = k_madd_epi32(u[15], k32_m24_m08);
          v[16] = k_madd_epi32(u[12], k32_m08_p24);
          v[17] = k_madd_epi32(u[13], k32_m08_p24);
          v[18] = k_madd_epi32(u[14], k32_m08_p24);
          v[19] = k_madd_epi32(u[15], k32_m08_p24);
          v[20] = k_madd_epi32(u[8], k32_m08_p24);
          v[21] = k_madd_epi32(u[9], k32_m08_p24);
          v[22] = k_madd_epi32(u[10], k32_m08_p24);
          v[23] = k_madd_epi32(u[11], k32_m08_p24);
          v[24] = k_madd_epi32(u[4], k32_p24_p08);
          v[25] = k_madd_epi32(u[5], k32_p24_p08);
          v[26] = k_madd_epi32(u[6], k32_p24_p08);
          v[27] = k_madd_epi32(u[7], k32_p24_p08);
          v[28] = k_madd_epi32(u[0], k32_p24_p08);
          v[29] = k_madd_epi32(u[1], k32_p24_p08);
          v[30] = k_madd_epi32(u[2], k32_p24_p08);
          v[31] = k_madd_epi32(u[3], k32_p24_p08);

#if DCT_HIGH_BIT_DEPTH
          overflow = k_check_epi32_overflow_32(
              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &v[16],
              &v[17], &v[18], &v[19], &v[20], &v[21], &v[22], &v[23], &v[24],
              &v[25], &v[26], &v[27], &v[28], &v[29], &v[30], &v[31], &kZero);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
          u[0] = k_packs_epi64(v[0], v[1]);
          u[1] = k_packs_epi64(v[2], v[3]);
          u[2] = k_packs_epi64(v[4], v[5]);
          u[3] = k_packs_epi64(v[6], v[7]);
          u[4] = k_packs_epi64(v[8], v[9]);
          u[5] = k_packs_epi64(v[10], v[11]);
          u[6] = k_packs_epi64(v[12], v[13]);
          u[7] = k_packs_epi64(v[14], v[15]);
          u[8] = k_packs_epi64(v[16], v[17]);
          u[9] = k_packs_epi64(v[18], v[19]);
          u[10] = k_packs_epi64(v[20], v[21]);
          u[11] = k_packs_epi64(v[22], v[23]);
          u[12] = k_packs_epi64(v[24], v[25]);
          u[13] = k_packs_epi64(v[26], v[27]);
          u[14] = k_packs_epi64(v[28], v[29]);
          u[15] = k_packs_epi64(v[30], v[31]);

          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
          v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
          v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
          v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
          v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
          v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
          v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
          v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
          v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);

          lstep1[36] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
          lstep1[37] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
          lstep1[38] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
          lstep1[39] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
          lstep1[40] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
          lstep1[41] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
          lstep1[42] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
          lstep1[43] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
          lstep1[52] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
          lstep1[53] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
          lstep1[54] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
          lstep1[55] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
          lstep1[56] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
          lstep1[57] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
          lstep1[58] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
          lstep1[59] = _mm_srai_epi32(v[15], DCT_CONST_BITS);
        }
        // stage 5
        {
          lstep2[8] = _mm_add_epi32(lstep1[10], lstep3[8]);
          lstep2[9] = _mm_add_epi32(lstep1[11], lstep3[9]);
          lstep2[10] = _mm_sub_epi32(lstep3[8], lstep1[10]);
          lstep2[11] = _mm_sub_epi32(lstep3[9], lstep1[11]);
          lstep2[12] = _mm_sub_epi32(lstep3[14], lstep1[12]);
          lstep2[13] = _mm_sub_epi32(lstep3[15], lstep1[13]);
          lstep2[14] = _mm_add_epi32(lstep1[12], lstep3[14]);
          lstep2[15] = _mm_add_epi32(lstep1[13], lstep3[15]);
        }
        {
          const __m128i k32_p16_p16 = pair_set_epi32(cospi_16_64, cospi_16_64);
          const __m128i k32_p16_m16 = pair_set_epi32(cospi_16_64, -cospi_16_64);
          const __m128i k32_p24_p08 = pair_set_epi32(cospi_24_64, cospi_8_64);
          const __m128i k32_m08_p24 = pair_set_epi32(-cospi_8_64, cospi_24_64);

          u[0] = _mm_unpacklo_epi32(lstep1[0], lstep1[2]);
          u[1] = _mm_unpackhi_epi32(lstep1[0], lstep1[2]);
          u[2] = _mm_unpacklo_epi32(lstep1[1], lstep1[3]);
          u[3] = _mm_unpackhi_epi32(lstep1[1], lstep1[3]);
          u[4] = _mm_unpacklo_epi32(lstep1[4], lstep1[6]);
          u[5] = _mm_unpackhi_epi32(lstep1[4], lstep1[6]);
          u[6] = _mm_unpacklo_epi32(lstep1[5], lstep1[7]);
          u[7] = _mm_unpackhi_epi32(lstep1[5], lstep1[7]);

          // TODO(jingning): manually inline k_madd_epi32_ to further hide
          // instruction latency.
          v[0] = k_madd_epi32(u[0], k32_p16_p16);
          v[1] = k_madd_epi32(u[1], k32_p16_p16);
          v[2] = k_madd_epi32(u[2], k32_p16_p16);
          v[3] = k_madd_epi32(u[3], k32_p16_p16);
          v[4] = k_madd_epi32(u[0], k32_p16_m16);
          v[5] = k_madd_epi32(u[1], k32_p16_m16);
          v[6] = k_madd_epi32(u[2], k32_p16_m16);
          v[7] = k_madd_epi32(u[3], k32_p16_m16);
          v[8] = k_madd_epi32(u[4], k32_p24_p08);
          v[9] = k_madd_epi32(u[5], k32_p24_p08);
          v[10] = k_madd_epi32(u[6], k32_p24_p08);
          v[11] = k_madd_epi32(u[7], k32_p24_p08);
          v[12] = k_madd_epi32(u[4], k32_m08_p24);
          v[13] = k_madd_epi32(u[5], k32_m08_p24);
          v[14] = k_madd_epi32(u[6], k32_m08_p24);
          v[15] = k_madd_epi32(u[7], k32_m08_p24);

#if DCT_HIGH_BIT_DEPTH
          overflow = k_check_epi32_overflow_16(
              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &kZero);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
          u[0] = k_packs_epi64(v[0], v[1]);
          u[1] = k_packs_epi64(v[2], v[3]);
          u[2] = k_packs_epi64(v[4], v[5]);
          u[3] = k_packs_epi64(v[6], v[7]);
          u[4] = k_packs_epi64(v[8], v[9]);
          u[5] = k_packs_epi64(v[10], v[11]);
          u[6] = k_packs_epi64(v[12], v[13]);
          u[7] = k_packs_epi64(v[14], v[15]);

          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);

          u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
          u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
          u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
          u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
          u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
          u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
          u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
          u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);

          sign[0] = _mm_cmplt_epi32(u[0], kZero);
          sign[1] = _mm_cmplt_epi32(u[1], kZero);
          sign[2] = _mm_cmplt_epi32(u[2], kZero);
          sign[3] = _mm_cmplt_epi32(u[3], kZero);
          sign[4] = _mm_cmplt_epi32(u[4], kZero);
          sign[5] = _mm_cmplt_epi32(u[5], kZero);
          sign[6] = _mm_cmplt_epi32(u[6], kZero);
          sign[7] = _mm_cmplt_epi32(u[7], kZero);

          u[0] = _mm_sub_epi32(u[0], sign[0]);
          u[1] = _mm_sub_epi32(u[1], sign[1]);
          u[2] = _mm_sub_epi32(u[2], sign[2]);
          u[3] = _mm_sub_epi32(u[3], sign[3]);
          u[4] = _mm_sub_epi32(u[4], sign[4]);
          u[5] = _mm_sub_epi32(u[5], sign[5]);
          u[6] = _mm_sub_epi32(u[6], sign[6]);
          u[7] = _mm_sub_epi32(u[7], sign[7]);

          u[0] = _mm_add_epi32(u[0], K32One);
          u[1] = _mm_add_epi32(u[1], K32One);
          u[2] = _mm_add_epi32(u[2], K32One);
          u[3] = _mm_add_epi32(u[3], K32One);
          u[4] = _mm_add_epi32(u[4], K32One);
          u[5] = _mm_add_epi32(u[5], K32One);
          u[6] = _mm_add_epi32(u[6], K32One);
          u[7] = _mm_add_epi32(u[7], K32One);

          u[0] = _mm_srai_epi32(u[0], 2);
          u[1] = _mm_srai_epi32(u[1], 2);
          u[2] = _mm_srai_epi32(u[2], 2);
          u[3] = _mm_srai_epi32(u[3], 2);
          u[4] = _mm_srai_epi32(u[4], 2);
          u[5] = _mm_srai_epi32(u[5], 2);
          u[6] = _mm_srai_epi32(u[6], 2);
          u[7] = _mm_srai_epi32(u[7], 2);

          // Combine
          out[0] = _mm_packs_epi32(u[0], u[1]);
          out[16] = _mm_packs_epi32(u[2], u[3]);
          out[8] = _mm_packs_epi32(u[4], u[5]);
          out[24] = _mm_packs_epi32(u[6], u[7]);
#if DCT_HIGH_BIT_DEPTH
          overflow =
              check_epi16_overflow_x4(&out[0], &out[16], &out[8], &out[24]);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          const __m128i k32_m08_p24 = pair_set_epi32(-cospi_8_64, cospi_24_64);
          const __m128i k32_m24_m08 = pair_set_epi32(-cospi_24_64, -cospi_8_64);
          const __m128i k32_p24_p08 = pair_set_epi32(cospi_24_64, cospi_8_64);

          u[0] = _mm_unpacklo_epi32(lstep1[18], lstep1[28]);
          u[1] = _mm_unpackhi_epi32(lstep1[18], lstep1[28]);
          u[2] = _mm_unpacklo_epi32(lstep1[19], lstep1[29]);
          u[3] = _mm_unpackhi_epi32(lstep1[19], lstep1[29]);
          u[4] = _mm_unpacklo_epi32(lstep1[20], lstep1[26]);
          u[5] = _mm_unpackhi_epi32(lstep1[20], lstep1[26]);
          u[6] = _mm_unpacklo_epi32(lstep1[21], lstep1[27]);
          u[7] = _mm_unpackhi_epi32(lstep1[21], lstep1[27]);

          v[0] = k_madd_epi32(u[0], k32_m08_p24);
          v[1] = k_madd_epi32(u[1], k32_m08_p24);
          v[2] = k_madd_epi32(u[2], k32_m08_p24);
          v[3] = k_madd_epi32(u[3], k32_m08_p24);
          v[4] = k_madd_epi32(u[4], k32_m24_m08);
          v[5] = k_madd_epi32(u[5], k32_m24_m08);
          v[6] = k_madd_epi32(u[6], k32_m24_m08);
          v[7] = k_madd_epi32(u[7], k32_m24_m08);
          v[8] = k_madd_epi32(u[4], k32_m08_p24);
          v[9] = k_madd_epi32(u[5], k32_m08_p24);
          v[10] = k_madd_epi32(u[6], k32_m08_p24);
          v[11] = k_madd_epi32(u[7], k32_m08_p24);
          v[12] = k_madd_epi32(u[0], k32_p24_p08);
          v[13] = k_madd_epi32(u[1], k32_p24_p08);
          v[14] = k_madd_epi32(u[2], k32_p24_p08);
          v[15] = k_madd_epi32(u[3], k32_p24_p08);

#if DCT_HIGH_BIT_DEPTH
          overflow = k_check_epi32_overflow_16(
              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &kZero);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
          u[0] = k_packs_epi64(v[0], v[1]);
          u[1] = k_packs_epi64(v[2], v[3]);
          u[2] = k_packs_epi64(v[4], v[5]);
          u[3] = k_packs_epi64(v[6], v[7]);
          u[4] = k_packs_epi64(v[8], v[9]);
          u[5] = k_packs_epi64(v[10], v[11]);
          u[6] = k_packs_epi64(v[12], v[13]);
          u[7] = k_packs_epi64(v[14], v[15]);

          u[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
          u[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
          u[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
          u[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
          u[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
          u[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
          u[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
          u[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);

          lstep2[18] = _mm_srai_epi32(u[0], DCT_CONST_BITS);
          lstep2[19] = _mm_srai_epi32(u[1], DCT_CONST_BITS);
          lstep2[20] = _mm_srai_epi32(u[2], DCT_CONST_BITS);
          lstep2[21] = _mm_srai_epi32(u[3], DCT_CONST_BITS);
          lstep2[26] = _mm_srai_epi32(u[4], DCT_CONST_BITS);
          lstep2[27] = _mm_srai_epi32(u[5], DCT_CONST_BITS);
          lstep2[28] = _mm_srai_epi32(u[6], DCT_CONST_BITS);
          lstep2[29] = _mm_srai_epi32(u[7], DCT_CONST_BITS);
        }
        {
          lstep2[32] = _mm_add_epi32(lstep1[38], lstep3[32]);
          lstep2[33] = _mm_add_epi32(lstep1[39], lstep3[33]);
          lstep2[34] = _mm_add_epi32(lstep1[36], lstep3[34]);
          lstep2[35] = _mm_add_epi32(lstep1[37], lstep3[35]);
          lstep2[36] = _mm_sub_epi32(lstep3[34], lstep1[36]);
          lstep2[37] = _mm_sub_epi32(lstep3[35], lstep1[37]);
          lstep2[38] = _mm_sub_epi32(lstep3[32], lstep1[38]);
          lstep2[39] = _mm_sub_epi32(lstep3[33], lstep1[39]);
          lstep2[40] = _mm_sub_epi32(lstep3[46], lstep1[40]);
          lstep2[41] = _mm_sub_epi32(lstep3[47], lstep1[41]);
          lstep2[42] = _mm_sub_epi32(lstep3[44], lstep1[42]);
          lstep2[43] = _mm_sub_epi32(lstep3[45], lstep1[43]);
          lstep2[44] = _mm_add_epi32(lstep1[42], lstep3[44]);
          lstep2[45] = _mm_add_epi32(lstep1[43], lstep3[45]);
          lstep2[46] = _mm_add_epi32(lstep1[40], lstep3[46]);
          lstep2[47] = _mm_add_epi32(lstep1[41], lstep3[47]);
          lstep2[48] = _mm_add_epi32(lstep1[54], lstep3[48]);
          lstep2[49] = _mm_add_epi32(lstep1[55], lstep3[49]);
          lstep2[50] = _mm_add_epi32(lstep1[52], lstep3[50]);
          lstep2[51] = _mm_add_epi32(lstep1[53], lstep3[51]);
          lstep2[52] = _mm_sub_epi32(lstep3[50], lstep1[52]);
          lstep2[53] = _mm_sub_epi32(lstep3[51], lstep1[53]);
          lstep2[54] = _mm_sub_epi32(lstep3[48], lstep1[54]);
          lstep2[55] = _mm_sub_epi32(lstep3[49], lstep1[55]);
          lstep2[56] = _mm_sub_epi32(lstep3[62], lstep1[56]);
          lstep2[57] = _mm_sub_epi32(lstep3[63], lstep1[57]);
          lstep2[58] = _mm_sub_epi32(lstep3[60], lstep1[58]);
          lstep2[59] = _mm_sub_epi32(lstep3[61], lstep1[59]);
          lstep2[60] = _mm_add_epi32(lstep1[58], lstep3[60]);
          lstep2[61] = _mm_add_epi32(lstep1[59], lstep3[61]);
          lstep2[62] = _mm_add_epi32(lstep1[56], lstep3[62]);
          lstep2[63] = _mm_add_epi32(lstep1[57], lstep3[63]);
        }
        // stage 6
        {
          const __m128i k32_p28_p04 = pair_set_epi32(cospi_28_64, cospi_4_64);
          const __m128i k32_p12_p20 = pair_set_epi32(cospi_12_64, cospi_20_64);
          const __m128i k32_m20_p12 = pair_set_epi32(-cospi_20_64, cospi_12_64);
          const __m128i k32_m04_p28 = pair_set_epi32(-cospi_4_64, cospi_28_64);

          u[0] = _mm_unpacklo_epi32(lstep2[8], lstep2[14]);
          u[1] = _mm_unpackhi_epi32(lstep2[8], lstep2[14]);
          u[2] = _mm_unpacklo_epi32(lstep2[9], lstep2[15]);
          u[3] = _mm_unpackhi_epi32(lstep2[9], lstep2[15]);
          u[4] = _mm_unpacklo_epi32(lstep2[10], lstep2[12]);
          u[5] = _mm_unpackhi_epi32(lstep2[10], lstep2[12]);
          u[6] = _mm_unpacklo_epi32(lstep2[11], lstep2[13]);
          u[7] = _mm_unpackhi_epi32(lstep2[11], lstep2[13]);
          u[8] = _mm_unpacklo_epi32(lstep2[10], lstep2[12]);
          u[9] = _mm_unpackhi_epi32(lstep2[10], lstep2[12]);
          u[10] = _mm_unpacklo_epi32(lstep2[11], lstep2[13]);
          u[11] = _mm_unpackhi_epi32(lstep2[11], lstep2[13]);
          u[12] = _mm_unpacklo_epi32(lstep2[8], lstep2[14]);
          u[13] = _mm_unpackhi_epi32(lstep2[8], lstep2[14]);
          u[14] = _mm_unpacklo_epi32(lstep2[9], lstep2[15]);
          u[15] = _mm_unpackhi_epi32(lstep2[9], lstep2[15]);

          v[0] = k_madd_epi32(u[0], k32_p28_p04);
          v[1] = k_madd_epi32(u[1], k32_p28_p04);
          v[2] = k_madd_epi32(u[2], k32_p28_p04);
          v[3] = k_madd_epi32(u[3], k32_p28_p04);
          v[4] = k_madd_epi32(u[4], k32_p12_p20);
          v[5] = k_madd_epi32(u[5], k32_p12_p20);
          v[6] = k_madd_epi32(u[6], k32_p12_p20);
          v[7] = k_madd_epi32(u[7], k32_p12_p20);
          v[8] = k_madd_epi32(u[8], k32_m20_p12);
          v[9] = k_madd_epi32(u[9], k32_m20_p12);
          v[10] = k_madd_epi32(u[10], k32_m20_p12);
          v[11] = k_madd_epi32(u[11], k32_m20_p12);
          v[12] = k_madd_epi32(u[12], k32_m04_p28);
          v[13] = k_madd_epi32(u[13], k32_m04_p28);
          v[14] = k_madd_epi32(u[14], k32_m04_p28);
          v[15] = k_madd_epi32(u[15], k32_m04_p28);

#if DCT_HIGH_BIT_DEPTH
          overflow = k_check_epi32_overflow_16(
              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &kZero);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
          u[0] = k_packs_epi64(v[0], v[1]);
          u[1] = k_packs_epi64(v[2], v[3]);
          u[2] = k_packs_epi64(v[4], v[5]);
          u[3] = k_packs_epi64(v[6], v[7]);
          u[4] = k_packs_epi64(v[8], v[9]);
          u[5] = k_packs_epi64(v[10], v[11]);
          u[6] = k_packs_epi64(v[12], v[13]);
          u[7] = k_packs_epi64(v[14], v[15]);

          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);

          u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
          u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
          u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
          u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
          u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
          u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
          u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
          u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);

          sign[0] = _mm_cmplt_epi32(u[0], kZero);
          sign[1] = _mm_cmplt_epi32(u[1], kZero);
          sign[2] = _mm_cmplt_epi32(u[2], kZero);
          sign[3] = _mm_cmplt_epi32(u[3], kZero);
          sign[4] = _mm_cmplt_epi32(u[4], kZero);
          sign[5] = _mm_cmplt_epi32(u[5], kZero);
          sign[6] = _mm_cmplt_epi32(u[6], kZero);
          sign[7] = _mm_cmplt_epi32(u[7], kZero);

          u[0] = _mm_sub_epi32(u[0], sign[0]);
          u[1] = _mm_sub_epi32(u[1], sign[1]);
          u[2] = _mm_sub_epi32(u[2], sign[2]);
          u[3] = _mm_sub_epi32(u[3], sign[3]);
          u[4] = _mm_sub_epi32(u[4], sign[4]);
          u[5] = _mm_sub_epi32(u[5], sign[5]);
          u[6] = _mm_sub_epi32(u[6], sign[6]);
          u[7] = _mm_sub_epi32(u[7], sign[7]);

          u[0] = _mm_add_epi32(u[0], K32One);
          u[1] = _mm_add_epi32(u[1], K32One);
          u[2] = _mm_add_epi32(u[2], K32One);
          u[3] = _mm_add_epi32(u[3], K32One);
          u[4] = _mm_add_epi32(u[4], K32One);
          u[5] = _mm_add_epi32(u[5], K32One);
          u[6] = _mm_add_epi32(u[6], K32One);
          u[7] = _mm_add_epi32(u[7], K32One);

          u[0] = _mm_srai_epi32(u[0], 2);
          u[1] = _mm_srai_epi32(u[1], 2);
          u[2] = _mm_srai_epi32(u[2], 2);
          u[3] = _mm_srai_epi32(u[3], 2);
          u[4] = _mm_srai_epi32(u[4], 2);
          u[5] = _mm_srai_epi32(u[5], 2);
          u[6] = _mm_srai_epi32(u[6], 2);
          u[7] = _mm_srai_epi32(u[7], 2);

          out[4] = _mm_packs_epi32(u[0], u[1]);
          out[20] = _mm_packs_epi32(u[2], u[3]);
          out[12] = _mm_packs_epi32(u[4], u[5]);
          out[28] = _mm_packs_epi32(u[6], u[7]);
#if DCT_HIGH_BIT_DEPTH
          overflow =
              check_epi16_overflow_x4(&out[4], &out[20], &out[12], &out[28]);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          lstep3[16] = _mm_add_epi32(lstep2[18], lstep1[16]);
          lstep3[17] = _mm_add_epi32(lstep2[19], lstep1[17]);
          lstep3[18] = _mm_sub_epi32(lstep1[16], lstep2[18]);
          lstep3[19] = _mm_sub_epi32(lstep1[17], lstep2[19]);
          lstep3[20] = _mm_sub_epi32(lstep1[22], lstep2[20]);
          lstep3[21] = _mm_sub_epi32(lstep1[23], lstep2[21]);
          lstep3[22] = _mm_add_epi32(lstep2[20], lstep1[22]);
          lstep3[23] = _mm_add_epi32(lstep2[21], lstep1[23]);
          lstep3[24] = _mm_add_epi32(lstep2[26], lstep1[24]);
          lstep3[25] = _mm_add_epi32(lstep2[27], lstep1[25]);
          lstep3[26] = _mm_sub_epi32(lstep1[24], lstep2[26]);
          lstep3[27] = _mm_sub_epi32(lstep1[25], lstep2[27]);
          lstep3[28] = _mm_sub_epi32(lstep1[30], lstep2[28]);
          lstep3[29] = _mm_sub_epi32(lstep1[31], lstep2[29]);
          lstep3[30] = _mm_add_epi32(lstep2[28], lstep1[30]);
          lstep3[31] = _mm_add_epi32(lstep2[29], lstep1[31]);
        }
        {
          const __m128i k32_m04_p28 = pair_set_epi32(-cospi_4_64, cospi_28_64);
          const __m128i k32_m28_m04 = pair_set_epi32(-cospi_28_64, -cospi_4_64);
          const __m128i k32_m20_p12 = pair_set_epi32(-cospi_20_64, cospi_12_64);
          const __m128i k32_m12_m20 =
              pair_set_epi32(-cospi_12_64, -cospi_20_64);
          const __m128i k32_p12_p20 = pair_set_epi32(cospi_12_64, cospi_20_64);
          const __m128i k32_p28_p04 = pair_set_epi32(cospi_28_64, cospi_4_64);

          u[0] = _mm_unpacklo_epi32(lstep2[34], lstep2[60]);
          u[1] = _mm_unpackhi_epi32(lstep2[34], lstep2[60]);
          u[2] = _mm_unpacklo_epi32(lstep2[35], lstep2[61]);
          u[3] = _mm_unpackhi_epi32(lstep2[35], lstep2[61]);
          u[4] = _mm_unpacklo_epi32(lstep2[36], lstep2[58]);
          u[5] = _mm_unpackhi_epi32(lstep2[36], lstep2[58]);
          u[6] = _mm_unpacklo_epi32(lstep2[37], lstep2[59]);
          u[7] = _mm_unpackhi_epi32(lstep2[37], lstep2[59]);
          u[8] = _mm_unpacklo_epi32(lstep2[42], lstep2[52]);
          u[9] = _mm_unpackhi_epi32(lstep2[42], lstep2[52]);
          u[10] = _mm_unpacklo_epi32(lstep2[43], lstep2[53]);
          u[11] = _mm_unpackhi_epi32(lstep2[43], lstep2[53]);
          u[12] = _mm_unpacklo_epi32(lstep2[44], lstep2[50]);
          u[13] = _mm_unpackhi_epi32(lstep2[44], lstep2[50]);
          u[14] = _mm_unpacklo_epi32(lstep2[45], lstep2[51]);
          u[15] = _mm_unpackhi_epi32(lstep2[45], lstep2[51]);

          v[0] = k_madd_epi32(u[0], k32_m04_p28);
          v[1] = k_madd_epi32(u[1], k32_m04_p28);
          v[2] = k_madd_epi32(u[2], k32_m04_p28);
          v[3] = k_madd_epi32(u[3], k32_m04_p28);
          v[4] = k_madd_epi32(u[4], k32_m28_m04);
          v[5] = k_madd_epi32(u[5], k32_m28_m04);
          v[6] = k_madd_epi32(u[6], k32_m28_m04);
          v[7] = k_madd_epi32(u[7], k32_m28_m04);
          v[8] = k_madd_epi32(u[8], k32_m20_p12);
          v[9] = k_madd_epi32(u[9], k32_m20_p12);
          v[10] = k_madd_epi32(u[10], k32_m20_p12);
          v[11] = k_madd_epi32(u[11], k32_m20_p12);
          v[12] = k_madd_epi32(u[12], k32_m12_m20);
          v[13] = k_madd_epi32(u[13], k32_m12_m20);
          v[14] = k_madd_epi32(u[14], k32_m12_m20);
          v[15] = k_madd_epi32(u[15], k32_m12_m20);
          v[16] = k_madd_epi32(u[12], k32_m20_p12);
          v[17] = k_madd_epi32(u[13], k32_m20_p12);
          v[18] = k_madd_epi32(u[14], k32_m20_p12);
          v[19] = k_madd_epi32(u[15], k32_m20_p12);
          v[20] = k_madd_epi32(u[8], k32_p12_p20);
          v[21] = k_madd_epi32(u[9], k32_p12_p20);
          v[22] = k_madd_epi32(u[10], k32_p12_p20);
          v[23] = k_madd_epi32(u[11], k32_p12_p20);
          v[24] = k_madd_epi32(u[4], k32_m04_p28);
          v[25] = k_madd_epi32(u[5], k32_m04_p28);
          v[26] = k_madd_epi32(u[6], k32_m04_p28);
          v[27] = k_madd_epi32(u[7], k32_m04_p28);
          v[28] = k_madd_epi32(u[0], k32_p28_p04);
          v[29] = k_madd_epi32(u[1], k32_p28_p04);
          v[30] = k_madd_epi32(u[2], k32_p28_p04);
          v[31] = k_madd_epi32(u[3], k32_p28_p04);

#if DCT_HIGH_BIT_DEPTH
          overflow = k_check_epi32_overflow_32(
              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &v[16],
              &v[17], &v[18], &v[19], &v[20], &v[21], &v[22], &v[23], &v[24],
              &v[25], &v[26], &v[27], &v[28], &v[29], &v[30], &v[31], &kZero);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
          u[0] = k_packs_epi64(v[0], v[1]);
          u[1] = k_packs_epi64(v[2], v[3]);
          u[2] = k_packs_epi64(v[4], v[5]);
          u[3] = k_packs_epi64(v[6], v[7]);
          u[4] = k_packs_epi64(v[8], v[9]);
          u[5] = k_packs_epi64(v[10], v[11]);
          u[6] = k_packs_epi64(v[12], v[13]);
          u[7] = k_packs_epi64(v[14], v[15]);
          u[8] = k_packs_epi64(v[16], v[17]);
          u[9] = k_packs_epi64(v[18], v[19]);
          u[10] = k_packs_epi64(v[20], v[21]);
          u[11] = k_packs_epi64(v[22], v[23]);
          u[12] = k_packs_epi64(v[24], v[25]);
          u[13] = k_packs_epi64(v[26], v[27]);
          u[14] = k_packs_epi64(v[28], v[29]);
          u[15] = k_packs_epi64(v[30], v[31]);

          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
          v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
          v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
          v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
          v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
          v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
          v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
          v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
          v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);

          lstep3[34] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
          lstep3[35] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
          lstep3[36] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
          lstep3[37] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
          lstep3[42] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
          lstep3[43] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
          lstep3[44] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
          lstep3[45] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
          lstep3[50] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
          lstep3[51] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
          lstep3[52] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
          lstep3[53] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
          lstep3[58] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
          lstep3[59] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
          lstep3[60] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
          lstep3[61] = _mm_srai_epi32(v[15], DCT_CONST_BITS);
        }
        // stage 7
        {
          const __m128i k32_p30_p02 = pair_set_epi32(cospi_30_64, cospi_2_64);
          const __m128i k32_p14_p18 = pair_set_epi32(cospi_14_64, cospi_18_64);
          const __m128i k32_p22_p10 = pair_set_epi32(cospi_22_64, cospi_10_64);
          const __m128i k32_p06_p26 = pair_set_epi32(cospi_6_64, cospi_26_64);
          const __m128i k32_m26_p06 = pair_set_epi32(-cospi_26_64, cospi_6_64);
          const __m128i k32_m10_p22 = pair_set_epi32(-cospi_10_64, cospi_22_64);
          const __m128i k32_m18_p14 = pair_set_epi32(-cospi_18_64, cospi_14_64);
          const __m128i k32_m02_p30 = pair_set_epi32(-cospi_2_64, cospi_30_64);

          u[0] = _mm_unpacklo_epi32(lstep3[16], lstep3[30]);
          u[1] = _mm_unpackhi_epi32(lstep3[16], lstep3[30]);
          u[2] = _mm_unpacklo_epi32(lstep3[17], lstep3[31]);
          u[3] = _mm_unpackhi_epi32(lstep3[17], lstep3[31]);
          u[4] = _mm_unpacklo_epi32(lstep3[18], lstep3[28]);
          u[5] = _mm_unpackhi_epi32(lstep3[18], lstep3[28]);
          u[6] = _mm_unpacklo_epi32(lstep3[19], lstep3[29]);
          u[7] = _mm_unpackhi_epi32(lstep3[19], lstep3[29]);
          u[8] = _mm_unpacklo_epi32(lstep3[20], lstep3[26]);
          u[9] = _mm_unpackhi_epi32(lstep3[20], lstep3[26]);
          u[10] = _mm_unpacklo_epi32(lstep3[21], lstep3[27]);
          u[11] = _mm_unpackhi_epi32(lstep3[21], lstep3[27]);
          u[12] = _mm_unpacklo_epi32(lstep3[22], lstep3[24]);
          u[13] = _mm_unpackhi_epi32(lstep3[22], lstep3[24]);
          u[14] = _mm_unpacklo_epi32(lstep3[23], lstep3[25]);
          u[15] = _mm_unpackhi_epi32(lstep3[23], lstep3[25]);

          v[0] = k_madd_epi32(u[0], k32_p30_p02);
          v[1] = k_madd_epi32(u[1], k32_p30_p02);
          v[2] = k_madd_epi32(u[2], k32_p30_p02);
          v[3] = k_madd_epi32(u[3], k32_p30_p02);
          v[4] = k_madd_epi32(u[4], k32_p14_p18);
          v[5] = k_madd_epi32(u[5], k32_p14_p18);
          v[6] = k_madd_epi32(u[6], k32_p14_p18);
          v[7] = k_madd_epi32(u[7], k32_p14_p18);
          v[8] = k_madd_epi32(u[8], k32_p22_p10);
          v[9] = k_madd_epi32(u[9], k32_p22_p10);
          v[10] = k_madd_epi32(u[10], k32_p22_p10);
          v[11] = k_madd_epi32(u[11], k32_p22_p10);
          v[12] = k_madd_epi32(u[12], k32_p06_p26);
          v[13] = k_madd_epi32(u[13], k32_p06_p26);
          v[14] = k_madd_epi32(u[14], k32_p06_p26);
          v[15] = k_madd_epi32(u[15], k32_p06_p26);
          v[16] = k_madd_epi32(u[12], k32_m26_p06);
          v[17] = k_madd_epi32(u[13], k32_m26_p06);
          v[18] = k_madd_epi32(u[14], k32_m26_p06);
          v[19] = k_madd_epi32(u[15], k32_m26_p06);
          v[20] = k_madd_epi32(u[8], k32_m10_p22);
          v[21] = k_madd_epi32(u[9], k32_m10_p22);
          v[22] = k_madd_epi32(u[10], k32_m10_p22);
          v[23] = k_madd_epi32(u[11], k32_m10_p22);
          v[24] = k_madd_epi32(u[4], k32_m18_p14);
          v[25] = k_madd_epi32(u[5], k32_m18_p14);
          v[26] = k_madd_epi32(u[6], k32_m18_p14);
          v[27] = k_madd_epi32(u[7], k32_m18_p14);
          v[28] = k_madd_epi32(u[0], k32_m02_p30);
          v[29] = k_madd_epi32(u[1], k32_m02_p30);
          v[30] = k_madd_epi32(u[2], k32_m02_p30);
          v[31] = k_madd_epi32(u[3], k32_m02_p30);

#if DCT_HIGH_BIT_DEPTH
          overflow = k_check_epi32_overflow_32(
              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &v[16],
              &v[17], &v[18], &v[19], &v[20], &v[21], &v[22], &v[23], &v[24],
              &v[25], &v[26], &v[27], &v[28], &v[29], &v[30], &v[31], &kZero);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
          u[0] = k_packs_epi64(v[0], v[1]);
          u[1] = k_packs_epi64(v[2], v[3]);
          u[2] = k_packs_epi64(v[4], v[5]);
          u[3] = k_packs_epi64(v[6], v[7]);
          u[4] = k_packs_epi64(v[8], v[9]);
          u[5] = k_packs_epi64(v[10], v[11]);
          u[6] = k_packs_epi64(v[12], v[13]);
          u[7] = k_packs_epi64(v[14], v[15]);
          u[8] = k_packs_epi64(v[16], v[17]);
          u[9] = k_packs_epi64(v[18], v[19]);
          u[10] = k_packs_epi64(v[20], v[21]);
          u[11] = k_packs_epi64(v[22], v[23]);
          u[12] = k_packs_epi64(v[24], v[25]);
          u[13] = k_packs_epi64(v[26], v[27]);
          u[14] = k_packs_epi64(v[28], v[29]);
          u[15] = k_packs_epi64(v[30], v[31]);

          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
          v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
          v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
          v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
          v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
          v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
          v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
          v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
          v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);

          u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
          u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
          u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
          u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
          u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
          u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
          u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
          u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
          u[8] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
          u[9] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
          u[10] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
          u[11] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
          u[12] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
          u[13] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
          u[14] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
          u[15] = _mm_srai_epi32(v[15], DCT_CONST_BITS);

          v[0] = _mm_cmplt_epi32(u[0], kZero);
          v[1] = _mm_cmplt_epi32(u[1], kZero);
          v[2] = _mm_cmplt_epi32(u[2], kZero);
          v[3] = _mm_cmplt_epi32(u[3], kZero);
          v[4] = _mm_cmplt_epi32(u[4], kZero);
          v[5] = _mm_cmplt_epi32(u[5], kZero);
          v[6] = _mm_cmplt_epi32(u[6], kZero);
          v[7] = _mm_cmplt_epi32(u[7], kZero);
          v[8] = _mm_cmplt_epi32(u[8], kZero);
          v[9] = _mm_cmplt_epi32(u[9], kZero);
          v[10] = _mm_cmplt_epi32(u[10], kZero);
          v[11] = _mm_cmplt_epi32(u[11], kZero);
          v[12] = _mm_cmplt_epi32(u[12], kZero);
          v[13] = _mm_cmplt_epi32(u[13], kZero);
          v[14] = _mm_cmplt_epi32(u[14], kZero);
          v[15] = _mm_cmplt_epi32(u[15], kZero);

          u[0] = _mm_sub_epi32(u[0], v[0]);
          u[1] = _mm_sub_epi32(u[1], v[1]);
          u[2] = _mm_sub_epi32(u[2], v[2]);
          u[3] = _mm_sub_epi32(u[3], v[3]);
          u[4] = _mm_sub_epi32(u[4], v[4]);
          u[5] = _mm_sub_epi32(u[5], v[5]);
          u[6] = _mm_sub_epi32(u[6], v[6]);
          u[7] = _mm_sub_epi32(u[7], v[7]);
          u[8] = _mm_sub_epi32(u[8], v[8]);
          u[9] = _mm_sub_epi32(u[9], v[9]);
          u[10] = _mm_sub_epi32(u[10], v[10]);
          u[11] = _mm_sub_epi32(u[11], v[11]);
          u[12] = _mm_sub_epi32(u[12], v[12]);
          u[13] = _mm_sub_epi32(u[13], v[13]);
          u[14] = _mm_sub_epi32(u[14], v[14]);
          u[15] = _mm_sub_epi32(u[15], v[15]);

          v[0] = _mm_add_epi32(u[0], K32One);
          v[1] = _mm_add_epi32(u[1], K32One);
          v[2] = _mm_add_epi32(u[2], K32One);
          v[3] = _mm_add_epi32(u[3], K32One);
          v[4] = _mm_add_epi32(u[4], K32One);
          v[5] = _mm_add_epi32(u[5], K32One);
          v[6] = _mm_add_epi32(u[6], K32One);
          v[7] = _mm_add_epi32(u[7], K32One);
          v[8] = _mm_add_epi32(u[8], K32One);
          v[9] = _mm_add_epi32(u[9], K32One);
          v[10] = _mm_add_epi32(u[10], K32One);
          v[11] = _mm_add_epi32(u[11], K32One);
          v[12] = _mm_add_epi32(u[12], K32One);
          v[13] = _mm_add_epi32(u[13], K32One);
          v[14] = _mm_add_epi32(u[14], K32One);
          v[15] = _mm_add_epi32(u[15], K32One);

          u[0] = _mm_srai_epi32(v[0], 2);
          u[1] = _mm_srai_epi32(v[1], 2);
          u[2] = _mm_srai_epi32(v[2], 2);
          u[3] = _mm_srai_epi32(v[3], 2);
          u[4] = _mm_srai_epi32(v[4], 2);
          u[5] = _mm_srai_epi32(v[5], 2);
          u[6] = _mm_srai_epi32(v[6], 2);
          u[7] = _mm_srai_epi32(v[7], 2);
          u[8] = _mm_srai_epi32(v[8], 2);
          u[9] = _mm_srai_epi32(v[9], 2);
          u[10] = _mm_srai_epi32(v[10], 2);
          u[11] = _mm_srai_epi32(v[11], 2);
          u[12] = _mm_srai_epi32(v[12], 2);
          u[13] = _mm_srai_epi32(v[13], 2);
          u[14] = _mm_srai_epi32(v[14], 2);
          u[15] = _mm_srai_epi32(v[15], 2);

          out[2] = _mm_packs_epi32(u[0], u[1]);
          out[18] = _mm_packs_epi32(u[2], u[3]);
          out[10] = _mm_packs_epi32(u[4], u[5]);
          out[26] = _mm_packs_epi32(u[6], u[7]);
          out[6] = _mm_packs_epi32(u[8], u[9]);
          out[22] = _mm_packs_epi32(u[10], u[11]);
          out[14] = _mm_packs_epi32(u[12], u[13]);
          out[30] = _mm_packs_epi32(u[14], u[15]);
#if DCT_HIGH_BIT_DEPTH
          overflow =
              check_epi16_overflow_x8(&out[2], &out[18], &out[10], &out[26],
                                      &out[6], &out[22], &out[14], &out[30]);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          lstep1[32] = _mm_add_epi32(lstep3[34], lstep2[32]);
          lstep1[33] = _mm_add_epi32(lstep3[35], lstep2[33]);
          lstep1[34] = _mm_sub_epi32(lstep2[32], lstep3[34]);
          lstep1[35] = _mm_sub_epi32(lstep2[33], lstep3[35]);
          lstep1[36] = _mm_sub_epi32(lstep2[38], lstep3[36]);
          lstep1[37] = _mm_sub_epi32(lstep2[39], lstep3[37]);
          lstep1[38] = _mm_add_epi32(lstep3[36], lstep2[38]);
          lstep1[39] = _mm_add_epi32(lstep3[37], lstep2[39]);
          lstep1[40] = _mm_add_epi32(lstep3[42], lstep2[40]);
          lstep1[41] = _mm_add_epi32(lstep3[43], lstep2[41]);
          lstep1[42] = _mm_sub_epi32(lstep2[40], lstep3[42]);
          lstep1[43] = _mm_sub_epi32(lstep2[41], lstep3[43]);
          lstep1[44] = _mm_sub_epi32(lstep2[46], lstep3[44]);
          lstep1[45] = _mm_sub_epi32(lstep2[47], lstep3[45]);
          lstep1[46] = _mm_add_epi32(lstep3[44], lstep2[46]);
          lstep1[47] = _mm_add_epi32(lstep3[45], lstep2[47]);
          lstep1[48] = _mm_add_epi32(lstep3[50], lstep2[48]);
          lstep1[49] = _mm_add_epi32(lstep3[51], lstep2[49]);
          lstep1[50] = _mm_sub_epi32(lstep2[48], lstep3[50]);
          lstep1[51] = _mm_sub_epi32(lstep2[49], lstep3[51]);
          lstep1[52] = _mm_sub_epi32(lstep2[54], lstep3[52]);
          lstep1[53] = _mm_sub_epi32(lstep2[55], lstep3[53]);
          lstep1[54] = _mm_add_epi32(lstep3[52], lstep2[54]);
          lstep1[55] = _mm_add_epi32(lstep3[53], lstep2[55]);
          lstep1[56] = _mm_add_epi32(lstep3[58], lstep2[56]);
          lstep1[57] = _mm_add_epi32(lstep3[59], lstep2[57]);
          lstep1[58] = _mm_sub_epi32(lstep2[56], lstep3[58]);
          lstep1[59] = _mm_sub_epi32(lstep2[57], lstep3[59]);
          lstep1[60] = _mm_sub_epi32(lstep2[62], lstep3[60]);
          lstep1[61] = _mm_sub_epi32(lstep2[63], lstep3[61]);
          lstep1[62] = _mm_add_epi32(lstep3[60], lstep2[62]);
          lstep1[63] = _mm_add_epi32(lstep3[61], lstep2[63]);
        }
        // stage 8
        {
          const __m128i k32_p31_p01 = pair_set_epi32(cospi_31_64, cospi_1_64);
          const __m128i k32_p15_p17 = pair_set_epi32(cospi_15_64, cospi_17_64);
          const __m128i k32_p23_p09 = pair_set_epi32(cospi_23_64, cospi_9_64);
          const __m128i k32_p07_p25 = pair_set_epi32(cospi_7_64, cospi_25_64);
          const __m128i k32_m25_p07 = pair_set_epi32(-cospi_25_64, cospi_7_64);
          const __m128i k32_m09_p23 = pair_set_epi32(-cospi_9_64, cospi_23_64);
          const __m128i k32_m17_p15 = pair_set_epi32(-cospi_17_64, cospi_15_64);
          const __m128i k32_m01_p31 = pair_set_epi32(-cospi_1_64, cospi_31_64);

          u[0] = _mm_unpacklo_epi32(lstep1[32], lstep1[62]);
          u[1] = _mm_unpackhi_epi32(lstep1[32], lstep1[62]);
          u[2] = _mm_unpacklo_epi32(lstep1[33], lstep1[63]);
          u[3] = _mm_unpackhi_epi32(lstep1[33], lstep1[63]);
          u[4] = _mm_unpacklo_epi32(lstep1[34], lstep1[60]);
          u[5] = _mm_unpackhi_epi32(lstep1[34], lstep1[60]);
          u[6] = _mm_unpacklo_epi32(lstep1[35], lstep1[61]);
          u[7] = _mm_unpackhi_epi32(lstep1[35], lstep1[61]);
          u[8] = _mm_unpacklo_epi32(lstep1[36], lstep1[58]);
          u[9] = _mm_unpackhi_epi32(lstep1[36], lstep1[58]);
          u[10] = _mm_unpacklo_epi32(lstep1[37], lstep1[59]);
          u[11] = _mm_unpackhi_epi32(lstep1[37], lstep1[59]);
          u[12] = _mm_unpacklo_epi32(lstep1[38], lstep1[56]);
          u[13] = _mm_unpackhi_epi32(lstep1[38], lstep1[56]);
          u[14] = _mm_unpacklo_epi32(lstep1[39], lstep1[57]);
          u[15] = _mm_unpackhi_epi32(lstep1[39], lstep1[57]);

          v[0] = k_madd_epi32(u[0], k32_p31_p01);
          v[1] = k_madd_epi32(u[1], k32_p31_p01);
          v[2] = k_madd_epi32(u[2], k32_p31_p01);
          v[3] = k_madd_epi32(u[3], k32_p31_p01);
          v[4] = k_madd_epi32(u[4], k32_p15_p17);
          v[5] = k_madd_epi32(u[5], k32_p15_p17);
          v[6] = k_madd_epi32(u[6], k32_p15_p17);
          v[7] = k_madd_epi32(u[7], k32_p15_p17);
          v[8] = k_madd_epi32(u[8], k32_p23_p09);
          v[9] = k_madd_epi32(u[9], k32_p23_p09);
          v[10] = k_madd_epi32(u[10], k32_p23_p09);
          v[11] = k_madd_epi32(u[11], k32_p23_p09);
          v[12] = k_madd_epi32(u[12], k32_p07_p25);
          v[13] = k_madd_epi32(u[13], k32_p07_p25);
          v[14] = k_madd_epi32(u[14], k32_p07_p25);
          v[15] = k_madd_epi32(u[15], k32_p07_p25);
          v[16] = k_madd_epi32(u[12], k32_m25_p07);
          v[17] = k_madd_epi32(u[13], k32_m25_p07);
          v[18] = k_madd_epi32(u[14], k32_m25_p07);
          v[19] = k_madd_epi32(u[15], k32_m25_p07);
          v[20] = k_madd_epi32(u[8], k32_m09_p23);
          v[21] = k_madd_epi32(u[9], k32_m09_p23);
          v[22] = k_madd_epi32(u[10], k32_m09_p23);
          v[23] = k_madd_epi32(u[11], k32_m09_p23);
          v[24] = k_madd_epi32(u[4], k32_m17_p15);
          v[25] = k_madd_epi32(u[5], k32_m17_p15);
          v[26] = k_madd_epi32(u[6], k32_m17_p15);
          v[27] = k_madd_epi32(u[7], k32_m17_p15);
          v[28] = k_madd_epi32(u[0], k32_m01_p31);
          v[29] = k_madd_epi32(u[1], k32_m01_p31);
          v[30] = k_madd_epi32(u[2], k32_m01_p31);
          v[31] = k_madd_epi32(u[3], k32_m01_p31);

#if DCT_HIGH_BIT_DEPTH
          overflow = k_check_epi32_overflow_32(
              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &v[16],
              &v[17], &v[18], &v[19], &v[20], &v[21], &v[22], &v[23], &v[24],
              &v[25], &v[26], &v[27], &v[28], &v[29], &v[30], &v[31], &kZero);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
          u[0] = k_packs_epi64(v[0], v[1]);
          u[1] = k_packs_epi64(v[2], v[3]);
          u[2] = k_packs_epi64(v[4], v[5]);
          u[3] = k_packs_epi64(v[6], v[7]);
          u[4] = k_packs_epi64(v[8], v[9]);
          u[5] = k_packs_epi64(v[10], v[11]);
          u[6] = k_packs_epi64(v[12], v[13]);
          u[7] = k_packs_epi64(v[14], v[15]);
          u[8] = k_packs_epi64(v[16], v[17]);
          u[9] = k_packs_epi64(v[18], v[19]);
          u[10] = k_packs_epi64(v[20], v[21]);
          u[11] = k_packs_epi64(v[22], v[23]);
          u[12] = k_packs_epi64(v[24], v[25]);
          u[13] = k_packs_epi64(v[26], v[27]);
          u[14] = k_packs_epi64(v[28], v[29]);
          u[15] = k_packs_epi64(v[30], v[31]);

          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
          v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
          v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
          v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
          v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
          v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
          v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
          v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
          v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);

          u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
          u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
          u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
          u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
          u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
          u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
          u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
          u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
          u[8] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
          u[9] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
          u[10] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
          u[11] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
          u[12] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
          u[13] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
          u[14] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
          u[15] = _mm_srai_epi32(v[15], DCT_CONST_BITS);

          v[0] = _mm_cmplt_epi32(u[0], kZero);
          v[1] = _mm_cmplt_epi32(u[1], kZero);
          v[2] = _mm_cmplt_epi32(u[2], kZero);
          v[3] = _mm_cmplt_epi32(u[3], kZero);
          v[4] = _mm_cmplt_epi32(u[4], kZero);
          v[5] = _mm_cmplt_epi32(u[5], kZero);
          v[6] = _mm_cmplt_epi32(u[6], kZero);
          v[7] = _mm_cmplt_epi32(u[7], kZero);
          v[8] = _mm_cmplt_epi32(u[8], kZero);
          v[9] = _mm_cmplt_epi32(u[9], kZero);
          v[10] = _mm_cmplt_epi32(u[10], kZero);
          v[11] = _mm_cmplt_epi32(u[11], kZero);
          v[12] = _mm_cmplt_epi32(u[12], kZero);
          v[13] = _mm_cmplt_epi32(u[13], kZero);
          v[14] = _mm_cmplt_epi32(u[14], kZero);
          v[15] = _mm_cmplt_epi32(u[15], kZero);

          u[0] = _mm_sub_epi32(u[0], v[0]);
          u[1] = _mm_sub_epi32(u[1], v[1]);
          u[2] = _mm_sub_epi32(u[2], v[2]);
          u[3] = _mm_sub_epi32(u[3], v[3]);
          u[4] = _mm_sub_epi32(u[4], v[4]);
          u[5] = _mm_sub_epi32(u[5], v[5]);
          u[6] = _mm_sub_epi32(u[6], v[6]);
          u[7] = _mm_sub_epi32(u[7], v[7]);
          u[8] = _mm_sub_epi32(u[8], v[8]);
          u[9] = _mm_sub_epi32(u[9], v[9]);
          u[10] = _mm_sub_epi32(u[10], v[10]);
          u[11] = _mm_sub_epi32(u[11], v[11]);
          u[12] = _mm_sub_epi32(u[12], v[12]);
          u[13] = _mm_sub_epi32(u[13], v[13]);
          u[14] = _mm_sub_epi32(u[14], v[14]);
          u[15] = _mm_sub_epi32(u[15], v[15]);

          v[0] = _mm_add_epi32(u[0], K32One);
          v[1] = _mm_add_epi32(u[1], K32One);
          v[2] = _mm_add_epi32(u[2], K32One);
          v[3] = _mm_add_epi32(u[3], K32One);
          v[4] = _mm_add_epi32(u[4], K32One);
          v[5] = _mm_add_epi32(u[5], K32One);
          v[6] = _mm_add_epi32(u[6], K32One);
          v[7] = _mm_add_epi32(u[7], K32One);
          v[8] = _mm_add_epi32(u[8], K32One);
          v[9] = _mm_add_epi32(u[9], K32One);
          v[10] = _mm_add_epi32(u[10], K32One);
          v[11] = _mm_add_epi32(u[11], K32One);
          v[12] = _mm_add_epi32(u[12], K32One);
          v[13] = _mm_add_epi32(u[13], K32One);
          v[14] = _mm_add_epi32(u[14], K32One);
          v[15] = _mm_add_epi32(u[15], K32One);

          u[0] = _mm_srai_epi32(v[0], 2);
          u[1] = _mm_srai_epi32(v[1], 2);
          u[2] = _mm_srai_epi32(v[2], 2);
          u[3] = _mm_srai_epi32(v[3], 2);
          u[4] = _mm_srai_epi32(v[4], 2);
          u[5] = _mm_srai_epi32(v[5], 2);
          u[6] = _mm_srai_epi32(v[6], 2);
          u[7] = _mm_srai_epi32(v[7], 2);
          u[8] = _mm_srai_epi32(v[8], 2);
          u[9] = _mm_srai_epi32(v[9], 2);
          u[10] = _mm_srai_epi32(v[10], 2);
          u[11] = _mm_srai_epi32(v[11], 2);
          u[12] = _mm_srai_epi32(v[12], 2);
          u[13] = _mm_srai_epi32(v[13], 2);
          u[14] = _mm_srai_epi32(v[14], 2);
          u[15] = _mm_srai_epi32(v[15], 2);

          out[1] = _mm_packs_epi32(u[0], u[1]);
          out[17] = _mm_packs_epi32(u[2], u[3]);
          out[9] = _mm_packs_epi32(u[4], u[5]);
          out[25] = _mm_packs_epi32(u[6], u[7]);
          out[7] = _mm_packs_epi32(u[8], u[9]);
          out[23] = _mm_packs_epi32(u[10], u[11]);
          out[15] = _mm_packs_epi32(u[12], u[13]);
          out[31] = _mm_packs_epi32(u[14], u[15]);
#if DCT_HIGH_BIT_DEPTH
          overflow =
              check_epi16_overflow_x8(&out[1], &out[17], &out[9], &out[25],
                                      &out[7], &out[23], &out[15], &out[31]);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
        {
          const __m128i k32_p27_p05 = pair_set_epi32(cospi_27_64, cospi_5_64);
          const __m128i k32_p11_p21 = pair_set_epi32(cospi_11_64, cospi_21_64);
          const __m128i k32_p19_p13 = pair_set_epi32(cospi_19_64, cospi_13_64);
          const __m128i k32_p03_p29 = pair_set_epi32(cospi_3_64, cospi_29_64);
          const __m128i k32_m29_p03 = pair_set_epi32(-cospi_29_64, cospi_3_64);
          const __m128i k32_m13_p19 = pair_set_epi32(-cospi_13_64, cospi_19_64);
          const __m128i k32_m21_p11 = pair_set_epi32(-cospi_21_64, cospi_11_64);
          const __m128i k32_m05_p27 = pair_set_epi32(-cospi_5_64, cospi_27_64);

          u[0] = _mm_unpacklo_epi32(lstep1[40], lstep1[54]);
          u[1] = _mm_unpackhi_epi32(lstep1[40], lstep1[54]);
          u[2] = _mm_unpacklo_epi32(lstep1[41], lstep1[55]);
          u[3] = _mm_unpackhi_epi32(lstep1[41], lstep1[55]);
          u[4] = _mm_unpacklo_epi32(lstep1[42], lstep1[52]);
          u[5] = _mm_unpackhi_epi32(lstep1[42], lstep1[52]);
          u[6] = _mm_unpacklo_epi32(lstep1[43], lstep1[53]);
          u[7] = _mm_unpackhi_epi32(lstep1[43], lstep1[53]);
          u[8] = _mm_unpacklo_epi32(lstep1[44], lstep1[50]);
          u[9] = _mm_unpackhi_epi32(lstep1[44], lstep1[50]);
          u[10] = _mm_unpacklo_epi32(lstep1[45], lstep1[51]);
          u[11] = _mm_unpackhi_epi32(lstep1[45], lstep1[51]);
          u[12] = _mm_unpacklo_epi32(lstep1[46], lstep1[48]);
          u[13] = _mm_unpackhi_epi32(lstep1[46], lstep1[48]);
          u[14] = _mm_unpacklo_epi32(lstep1[47], lstep1[49]);
          u[15] = _mm_unpackhi_epi32(lstep1[47], lstep1[49]);

          v[0] = k_madd_epi32(u[0], k32_p27_p05);
          v[1] = k_madd_epi32(u[1], k32_p27_p05);
          v[2] = k_madd_epi32(u[2], k32_p27_p05);
          v[3] = k_madd_epi32(u[3], k32_p27_p05);
          v[4] = k_madd_epi32(u[4], k32_p11_p21);
          v[5] = k_madd_epi32(u[5], k32_p11_p21);
          v[6] = k_madd_epi32(u[6], k32_p11_p21);
          v[7] = k_madd_epi32(u[7], k32_p11_p21);
          v[8] = k_madd_epi32(u[8], k32_p19_p13);
          v[9] = k_madd_epi32(u[9], k32_p19_p13);
          v[10] = k_madd_epi32(u[10], k32_p19_p13);
          v[11] = k_madd_epi32(u[11], k32_p19_p13);
          v[12] = k_madd_epi32(u[12], k32_p03_p29);
          v[13] = k_madd_epi32(u[13], k32_p03_p29);
          v[14] = k_madd_epi32(u[14], k32_p03_p29);
          v[15] = k_madd_epi32(u[15], k32_p03_p29);
          v[16] = k_madd_epi32(u[12], k32_m29_p03);
          v[17] = k_madd_epi32(u[13], k32_m29_p03);
          v[18] = k_madd_epi32(u[14], k32_m29_p03);
          v[19] = k_madd_epi32(u[15], k32_m29_p03);
          v[20] = k_madd_epi32(u[8], k32_m13_p19);
          v[21] = k_madd_epi32(u[9], k32_m13_p19);
          v[22] = k_madd_epi32(u[10], k32_m13_p19);
          v[23] = k_madd_epi32(u[11], k32_m13_p19);
          v[24] = k_madd_epi32(u[4], k32_m21_p11);
          v[25] = k_madd_epi32(u[5], k32_m21_p11);
          v[26] = k_madd_epi32(u[6], k32_m21_p11);
          v[27] = k_madd_epi32(u[7], k32_m21_p11);
          v[28] = k_madd_epi32(u[0], k32_m05_p27);
          v[29] = k_madd_epi32(u[1], k32_m05_p27);
          v[30] = k_madd_epi32(u[2], k32_m05_p27);
          v[31] = k_madd_epi32(u[3], k32_m05_p27);

#if DCT_HIGH_BIT_DEPTH
          overflow = k_check_epi32_overflow_32(
              &v[0], &v[1], &v[2], &v[3], &v[4], &v[5], &v[6], &v[7], &v[8],
              &v[9], &v[10], &v[11], &v[12], &v[13], &v[14], &v[15], &v[16],
              &v[17], &v[18], &v[19], &v[20], &v[21], &v[22], &v[23], &v[24],
              &v[25], &v[26], &v[27], &v[28], &v[29], &v[30], &v[31], &kZero);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
          u[0] = k_packs_epi64(v[0], v[1]);
          u[1] = k_packs_epi64(v[2], v[3]);
          u[2] = k_packs_epi64(v[4], v[5]);
          u[3] = k_packs_epi64(v[6], v[7]);
          u[4] = k_packs_epi64(v[8], v[9]);
          u[5] = k_packs_epi64(v[10], v[11]);
          u[6] = k_packs_epi64(v[12], v[13]);
          u[7] = k_packs_epi64(v[14], v[15]);
          u[8] = k_packs_epi64(v[16], v[17]);
          u[9] = k_packs_epi64(v[18], v[19]);
          u[10] = k_packs_epi64(v[20], v[21]);
          u[11] = k_packs_epi64(v[22], v[23]);
          u[12] = k_packs_epi64(v[24], v[25]);
          u[13] = k_packs_epi64(v[26], v[27]);
          u[14] = k_packs_epi64(v[28], v[29]);
          u[15] = k_packs_epi64(v[30], v[31]);

          v[0] = _mm_add_epi32(u[0], k__DCT_CONST_ROUNDING);
          v[1] = _mm_add_epi32(u[1], k__DCT_CONST_ROUNDING);
          v[2] = _mm_add_epi32(u[2], k__DCT_CONST_ROUNDING);
          v[3] = _mm_add_epi32(u[3], k__DCT_CONST_ROUNDING);
          v[4] = _mm_add_epi32(u[4], k__DCT_CONST_ROUNDING);
          v[5] = _mm_add_epi32(u[5], k__DCT_CONST_ROUNDING);
          v[6] = _mm_add_epi32(u[6], k__DCT_CONST_ROUNDING);
          v[7] = _mm_add_epi32(u[7], k__DCT_CONST_ROUNDING);
          v[8] = _mm_add_epi32(u[8], k__DCT_CONST_ROUNDING);
          v[9] = _mm_add_epi32(u[9], k__DCT_CONST_ROUNDING);
          v[10] = _mm_add_epi32(u[10], k__DCT_CONST_ROUNDING);
          v[11] = _mm_add_epi32(u[11], k__DCT_CONST_ROUNDING);
          v[12] = _mm_add_epi32(u[12], k__DCT_CONST_ROUNDING);
          v[13] = _mm_add_epi32(u[13], k__DCT_CONST_ROUNDING);
          v[14] = _mm_add_epi32(u[14], k__DCT_CONST_ROUNDING);
          v[15] = _mm_add_epi32(u[15], k__DCT_CONST_ROUNDING);

          u[0] = _mm_srai_epi32(v[0], DCT_CONST_BITS);
          u[1] = _mm_srai_epi32(v[1], DCT_CONST_BITS);
          u[2] = _mm_srai_epi32(v[2], DCT_CONST_BITS);
          u[3] = _mm_srai_epi32(v[3], DCT_CONST_BITS);
          u[4] = _mm_srai_epi32(v[4], DCT_CONST_BITS);
          u[5] = _mm_srai_epi32(v[5], DCT_CONST_BITS);
          u[6] = _mm_srai_epi32(v[6], DCT_CONST_BITS);
          u[7] = _mm_srai_epi32(v[7], DCT_CONST_BITS);
          u[8] = _mm_srai_epi32(v[8], DCT_CONST_BITS);
          u[9] = _mm_srai_epi32(v[9], DCT_CONST_BITS);
          u[10] = _mm_srai_epi32(v[10], DCT_CONST_BITS);
          u[11] = _mm_srai_epi32(v[11], DCT_CONST_BITS);
          u[12] = _mm_srai_epi32(v[12], DCT_CONST_BITS);
          u[13] = _mm_srai_epi32(v[13], DCT_CONST_BITS);
          u[14] = _mm_srai_epi32(v[14], DCT_CONST_BITS);
          u[15] = _mm_srai_epi32(v[15], DCT_CONST_BITS);

          v[0] = _mm_cmplt_epi32(u[0], kZero);
          v[1] = _mm_cmplt_epi32(u[1], kZero);
          v[2] = _mm_cmplt_epi32(u[2], kZero);
          v[3] = _mm_cmplt_epi32(u[3], kZero);
          v[4] = _mm_cmplt_epi32(u[4], kZero);
          v[5] = _mm_cmplt_epi32(u[5], kZero);
          v[6] = _mm_cmplt_epi32(u[6], kZero);
          v[7] = _mm_cmplt_epi32(u[7], kZero);
          v[8] = _mm_cmplt_epi32(u[8], kZero);
          v[9] = _mm_cmplt_epi32(u[9], kZero);
          v[10] = _mm_cmplt_epi32(u[10], kZero);
          v[11] = _mm_cmplt_epi32(u[11], kZero);
          v[12] = _mm_cmplt_epi32(u[12], kZero);
          v[13] = _mm_cmplt_epi32(u[13], kZero);
          v[14] = _mm_cmplt_epi32(u[14], kZero);
          v[15] = _mm_cmplt_epi32(u[15], kZero);

          u[0] = _mm_sub_epi32(u[0], v[0]);
          u[1] = _mm_sub_epi32(u[1], v[1]);
          u[2] = _mm_sub_epi32(u[2], v[2]);
          u[3] = _mm_sub_epi32(u[3], v[3]);
          u[4] = _mm_sub_epi32(u[4], v[4]);
          u[5] = _mm_sub_epi32(u[5], v[5]);
          u[6] = _mm_sub_epi32(u[6], v[6]);
          u[7] = _mm_sub_epi32(u[7], v[7]);
          u[8] = _mm_sub_epi32(u[8], v[8]);
          u[9] = _mm_sub_epi32(u[9], v[9]);
          u[10] = _mm_sub_epi32(u[10], v[10]);
          u[11] = _mm_sub_epi32(u[11], v[11]);
          u[12] = _mm_sub_epi32(u[12], v[12]);
          u[13] = _mm_sub_epi32(u[13], v[13]);
          u[14] = _mm_sub_epi32(u[14], v[14]);
          u[15] = _mm_sub_epi32(u[15], v[15]);

          v[0] = _mm_add_epi32(u[0], K32One);
          v[1] = _mm_add_epi32(u[1], K32One);
          v[2] = _mm_add_epi32(u[2], K32One);
          v[3] = _mm_add_epi32(u[3], K32One);
          v[4] = _mm_add_epi32(u[4], K32One);
          v[5] = _mm_add_epi32(u[5], K32One);
          v[6] = _mm_add_epi32(u[6], K32One);
          v[7] = _mm_add_epi32(u[7], K32One);
          v[8] = _mm_add_epi32(u[8], K32One);
          v[9] = _mm_add_epi32(u[9], K32One);
          v[10] = _mm_add_epi32(u[10], K32One);
          v[11] = _mm_add_epi32(u[11], K32One);
          v[12] = _mm_add_epi32(u[12], K32One);
          v[13] = _mm_add_epi32(u[13], K32One);
          v[14] = _mm_add_epi32(u[14], K32One);
          v[15] = _mm_add_epi32(u[15], K32One);

          u[0] = _mm_srai_epi32(v[0], 2);
          u[1] = _mm_srai_epi32(v[1], 2);
          u[2] = _mm_srai_epi32(v[2], 2);
          u[3] = _mm_srai_epi32(v[3], 2);
          u[4] = _mm_srai_epi32(v[4], 2);
          u[5] = _mm_srai_epi32(v[5], 2);
          u[6] = _mm_srai_epi32(v[6], 2);
          u[7] = _mm_srai_epi32(v[7], 2);
          u[8] = _mm_srai_epi32(v[8], 2);
          u[9] = _mm_srai_epi32(v[9], 2);
          u[10] = _mm_srai_epi32(v[10], 2);
          u[11] = _mm_srai_epi32(v[11], 2);
          u[12] = _mm_srai_epi32(v[12], 2);
          u[13] = _mm_srai_epi32(v[13], 2);
          u[14] = _mm_srai_epi32(v[14], 2);
          u[15] = _mm_srai_epi32(v[15], 2);

          out[5] = _mm_packs_epi32(u[0], u[1]);
          out[21] = _mm_packs_epi32(u[2], u[3]);
          out[13] = _mm_packs_epi32(u[4], u[5]);
          out[29] = _mm_packs_epi32(u[6], u[7]);
          out[3] = _mm_packs_epi32(u[8], u[9]);
          out[19] = _mm_packs_epi32(u[10], u[11]);
          out[11] = _mm_packs_epi32(u[12], u[13]);
          out[27] = _mm_packs_epi32(u[14], u[15]);
#if DCT_HIGH_BIT_DEPTH
          overflow =
              check_epi16_overflow_x8(&out[5], &out[21], &out[13], &out[29],
                                      &out[3], &out[19], &out[11], &out[27]);
          if (overflow) {
            HIGH_FDCT32x32_2D_ROWS_C(intermediate, output_org);
            return;
          }
#endif  // DCT_HIGH_BIT_DEPTH
        }
      }
#endif  // FDCT32x32_HIGH_PRECISION
      // Transpose the results, do it as four 8x8 transposes.
      {
        int transpose_block;
        int16_t *output0 = &intermediate[column_start * 32];
        tran_low_t *output1 = &output_org[column_start * 32];
        for (transpose_block = 0; transpose_block < 4; ++transpose_block) {
          __m128i *this_out = &out[8 * transpose_block];
          // 00 01 02 03 04 05 06 07
          // 10 11 12 13 14 15 16 17
          // 20 21 22 23 24 25 26 27
          // 30 31 32 33 34 35 36 37
          // 40 41 42 43 44 45 46 47
          // 50 51 52 53 54 55 56 57
          // 60 61 62 63 64 65 66 67
          // 70 71 72 73 74 75 76 77
          const __m128i tr0_0 = _mm_unpacklo_epi16(this_out[0], this_out[1]);
          const __m128i tr0_1 = _mm_unpacklo_epi16(this_out[2], this_out[3]);
          const __m128i tr0_2 = _mm_unpackhi_epi16(this_out[0], this_out[1]);
          const __m128i tr0_3 = _mm_unpackhi_epi16(this_out[2], this_out[3]);
          const __m128i tr0_4 = _mm_unpacklo_epi16(this_out[4], this_out[5]);
          const __m128i tr0_5 = _mm_unpacklo_epi16(this_out[6], this_out[7]);
          const __m128i tr0_6 = _mm_unpackhi_epi16(this_out[4], this_out[5]);
          const __m128i tr0_7 = _mm_unpackhi_epi16(this_out[6], this_out[7]);
          // 00 10 01 11 02 12 03 13
          // 20 30 21 31 22 32 23 33
          // 04 14 05 15 06 16 07 17
          // 24 34 25 35 26 36 27 37
          // 40 50 41 51 42 52 43 53
          // 60 70 61 71 62 72 63 73
          // 54 54 55 55 56 56 57 57
          // 64 74 65 75 66 76 67 77
          const __m128i tr1_0 = _mm_unpacklo_epi32(tr0_0, tr0_1);
          const __m128i tr1_1 = _mm_unpacklo_epi32(tr0_2, tr0_3);
          const __m128i tr1_2 = _mm_unpackhi_epi32(tr0_0, tr0_1);
          const __m128i tr1_3 = _mm_unpackhi_epi32(tr0_2, tr0_3);
          const __m128i tr1_4 = _mm_unpacklo_epi32(tr0_4, tr0_5);
          const __m128i tr1_5 = _mm_unpacklo_epi32(tr0_6, tr0_7);
          const __m128i tr1_6 = _mm_unpackhi_epi32(tr0_4, tr0_5);
          const __m128i tr1_7 = _mm_unpackhi_epi32(tr0_6, tr0_7);
          // 00 10 20 30 01 11 21 31
          // 40 50 60 70 41 51 61 71
          // 02 12 22 32 03 13 23 33
          // 42 52 62 72 43 53 63 73
          // 04 14 24 34 05 15 21 36
          // 44 54 64 74 45 55 61 76
          // 06 16 26 36 07 17 27 37
          // 46 56 66 76 47 57 67 77
          __m128i tr2_0 = _mm_unpacklo_epi64(tr1_0, tr1_4);
          __m128i tr2_1 = _mm_unpackhi_epi64(tr1_0, tr1_4);
          __m128i tr2_2 = _mm_unpacklo_epi64(tr1_2, tr1_6);
          __m128i tr2_3 = _mm_unpackhi_epi64(tr1_2, tr1_6);
          __m128i tr2_4 = _mm_unpacklo_epi64(tr1_1, tr1_5);
          __m128i tr2_5 = _mm_unpackhi_epi64(tr1_1, tr1_5);
          __m128i tr2_6 = _mm_unpacklo_epi64(tr1_3, tr1_7);
          __m128i tr2_7 = _mm_unpackhi_epi64(tr1_3, tr1_7);
          // 00 10 20 30 40 50 60 70
          // 01 11 21 31 41 51 61 71
          // 02 12 22 32 42 52 62 72
          // 03 13 23 33 43 53 63 73
          // 04 14 24 34 44 54 64 74
          // 05 15 25 35 45 55 65 75
          // 06 16 26 36 46 56 66 76
          // 07 17 27 37 47 57 67 77
          if (0 == pass) {
            // output[j] = (output[j] + 1 + (output[j] > 0)) >> 2;
            // TODO(cd): see quality impact of only doing
            //           output[j] = (output[j] + 1) >> 2;
            //           which would remove the code between here ...
            __m128i tr2_0_0 = _mm_cmpgt_epi16(tr2_0, kZero);
            __m128i tr2_1_0 = _mm_cmpgt_epi16(tr2_1, kZero);
            __m128i tr2_2_0 = _mm_cmpgt_epi16(tr2_2, kZero);
            __m128i tr2_3_0 = _mm_cmpgt_epi16(tr2_3, kZero);
            __m128i tr2_4_0 = _mm_cmpgt_epi16(tr2_4, kZero);
            __m128i tr2_5_0 = _mm_cmpgt_epi16(tr2_5, kZero);
            __m128i tr2_6_0 = _mm_cmpgt_epi16(tr2_6, kZero);
            __m128i tr2_7_0 = _mm_cmpgt_epi16(tr2_7, kZero);
            tr2_0 = _mm_sub_epi16(tr2_0, tr2_0_0);
            tr2_1 = _mm_sub_epi16(tr2_1, tr2_1_0);
            tr2_2 = _mm_sub_epi16(tr2_2, tr2_2_0);
            tr2_3 = _mm_sub_epi16(tr2_3, tr2_3_0);
            tr2_4 = _mm_sub_epi16(tr2_4, tr2_4_0);
            tr2_5 = _mm_sub_epi16(tr2_5, tr2_5_0);
            tr2_6 = _mm_sub_epi16(tr2_6, tr2_6_0);
            tr2_7 = _mm_sub_epi16(tr2_7, tr2_7_0);
            //           ... and here.
            //           PS: also change code in av1/encoder/dct.c
            tr2_0 = _mm_add_epi16(tr2_0, kOne);
            tr2_1 = _mm_add_epi16(tr2_1, kOne);
            tr2_2 = _mm_add_epi16(tr2_2, kOne);
            tr2_3 = _mm_add_epi16(tr2_3, kOne);
            tr2_4 = _mm_add_epi16(tr2_4, kOne);
            tr2_5 = _mm_add_epi16(tr2_5, kOne);
            tr2_6 = _mm_add_epi16(tr2_6, kOne);
            tr2_7 = _mm_add_epi16(tr2_7, kOne);
            tr2_0 = _mm_srai_epi16(tr2_0, 2);
            tr2_1 = _mm_srai_epi16(tr2_1, 2);
            tr2_2 = _mm_srai_epi16(tr2_2, 2);
            tr2_3 = _mm_srai_epi16(tr2_3, 2);
            tr2_4 = _mm_srai_epi16(tr2_4, 2);
            tr2_5 = _mm_srai_epi16(tr2_5, 2);
            tr2_6 = _mm_srai_epi16(tr2_6, 2);
            tr2_7 = _mm_srai_epi16(tr2_7, 2);
          }
          // Note: even though all these stores are aligned, using the aligned
          //       intrinsic make the code slightly slower.
          if (pass == 0) {
            _mm_storeu_si128((__m128i *)(output0 + 0 * 32), tr2_0);
            _mm_storeu_si128((__m128i *)(output0 + 1 * 32), tr2_1);
            _mm_storeu_si128((__m128i *)(output0 + 2 * 32), tr2_2);
            _mm_storeu_si128((__m128i *)(output0 + 3 * 32), tr2_3);
            _mm_storeu_si128((__m128i *)(output0 + 4 * 32), tr2_4);
            _mm_storeu_si128((__m128i *)(output0 + 5 * 32), tr2_5);
            _mm_storeu_si128((__m128i *)(output0 + 6 * 32), tr2_6);
            _mm_storeu_si128((__m128i *)(output0 + 7 * 32), tr2_7);
            // Process next 8x8
            output0 += 8;
          } else {
            storeu_output(&tr2_0, (output1 + 0 * 32));
            storeu_output(&tr2_1, (output1 + 1 * 32));
            storeu_output(&tr2_2, (output1 + 2 * 32));
            storeu_output(&tr2_3, (output1 + 3 * 32));
            storeu_output(&tr2_4, (output1 + 4 * 32));
            storeu_output(&tr2_5, (output1 + 5 * 32));
            storeu_output(&tr2_6, (output1 + 6 * 32));
            storeu_output(&tr2_7, (output1 + 7 * 32));
            // Process next 8x8
            output1 += 8;
          }
        }
      }
    }
  }
}  // NOLINT

#undef ADD_EPI16
#undef SUB_EPI16
#undef HIGH_FDCT32x32_2D_C
#undef HIGH_FDCT32x32_2D_ROWS_C
