1da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian/*
2da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *  Copyright (c) 2015 The WebM project authors. All Rights Reserved.
3da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *
4da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *  Use of this source code is governed by a BSD-style license
5da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *  that can be found in the LICENSE file in the root of the source
6da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *  tree. An additional intellectual property rights grant can be found
7da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *  in the file PATENTS.  All contributing project authors may
8da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *  be found in the AUTHORS file in the root of the source tree.
9da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian */
10da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
11da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#include "./vp8_rtcd.h"
12da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#include "vp8/common/mips/msa/vp8_macros_msa.h"
13da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#include "vp8/encoder/block.h"
14da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
157bc9febe8749e98a3812a0dc4380ceae75c29450Johannstatic int8_t fast_quantize_b_msa(int16_t *coeff_ptr, int16_t *round,
167bc9febe8749e98a3812a0dc4380ceae75c29450Johann                                  int16_t *quant, int16_t *de_quant,
177bc9febe8749e98a3812a0dc4380ceae75c29450Johann                                  int16_t *q_coeff, int16_t *dq_coeff) {
187bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int32_t cnt, eob;
197bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v16i8 inv_zig_zag = { 0, 1, 5, 6, 2, 4, 7, 12, 3, 8, 11, 13, 9, 10, 14, 15 };
207bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 round0, round1;
217bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 sign_z0, sign_z1;
227bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 q_coeff0, q_coeff1;
237bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 x0, x1, de_quant0, de_quant1;
247bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 coeff0, coeff1, z0, z1;
257bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 quant0, quant1, quant2, quant3;
267bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 zero = { 0 };
277bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 inv_zig_zag0, inv_zig_zag1;
287bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 zigzag_mask0 = { 0, 1, 4, 8, 5, 2, 3, 6 };
297bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 zigzag_mask1 = { 9, 12, 13, 10, 7, 11, 14, 15 };
307bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 temp0_h, temp1_h, temp2_h, temp3_h;
317bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v4i32 temp0_w, temp1_w, temp2_w, temp3_w;
32da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
337bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVRL_B2_SH(zero, inv_zig_zag, inv_zig_zag0, inv_zig_zag1);
347bc9febe8749e98a3812a0dc4380ceae75c29450Johann  eob = -1;
357bc9febe8749e98a3812a0dc4380ceae75c29450Johann  LD_SH2(coeff_ptr, 8, coeff0, coeff1);
367bc9febe8749e98a3812a0dc4380ceae75c29450Johann  VSHF_H2_SH(coeff0, coeff1, coeff0, coeff1, zigzag_mask0, zigzag_mask1, z0,
377bc9febe8749e98a3812a0dc4380ceae75c29450Johann             z1);
387bc9febe8749e98a3812a0dc4380ceae75c29450Johann  LD_SH2(round, 8, coeff0, coeff1);
397bc9febe8749e98a3812a0dc4380ceae75c29450Johann  VSHF_H2_SH(coeff0, coeff1, coeff0, coeff1, zigzag_mask0, zigzag_mask1, round0,
407bc9febe8749e98a3812a0dc4380ceae75c29450Johann             round1);
417bc9febe8749e98a3812a0dc4380ceae75c29450Johann  LD_SH2(quant, 8, coeff0, coeff1);
427bc9febe8749e98a3812a0dc4380ceae75c29450Johann  VSHF_H2_SH(coeff0, coeff1, coeff0, coeff1, zigzag_mask0, zigzag_mask1, quant0,
437bc9febe8749e98a3812a0dc4380ceae75c29450Johann             quant2);
447bc9febe8749e98a3812a0dc4380ceae75c29450Johann  sign_z0 = z0 >> 15;
457bc9febe8749e98a3812a0dc4380ceae75c29450Johann  sign_z1 = z1 >> 15;
467bc9febe8749e98a3812a0dc4380ceae75c29450Johann  x0 = __msa_add_a_h(z0, zero);
477bc9febe8749e98a3812a0dc4380ceae75c29450Johann  x1 = __msa_add_a_h(z1, zero);
487bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVL_H2_SH(quant0, quant0, quant2, quant2, quant1, quant3);
497bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVR_H2_SH(quant0, quant0, quant2, quant2, quant0, quant2);
507bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVL_H2_SH(round0, x0, round1, x1, temp1_h, temp3_h);
517bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVR_H2_SH(round0, x0, round1, x1, temp0_h, temp2_h);
527bc9febe8749e98a3812a0dc4380ceae75c29450Johann  DOTP_SH4_SW(temp0_h, temp1_h, temp2_h, temp3_h, quant0, quant1, quant2,
537bc9febe8749e98a3812a0dc4380ceae75c29450Johann              quant3, temp0_w, temp1_w, temp2_w, temp3_w);
547bc9febe8749e98a3812a0dc4380ceae75c29450Johann  SRA_4V(temp0_w, temp1_w, temp2_w, temp3_w, 16);
557bc9febe8749e98a3812a0dc4380ceae75c29450Johann  PCKEV_H2_SH(temp1_w, temp0_w, temp3_w, temp2_w, x0, x1);
567bc9febe8749e98a3812a0dc4380ceae75c29450Johann  x0 = x0 ^ sign_z0;
577bc9febe8749e98a3812a0dc4380ceae75c29450Johann  x1 = x1 ^ sign_z1;
587bc9febe8749e98a3812a0dc4380ceae75c29450Johann  SUB2(x0, sign_z0, x1, sign_z1, x0, x1);
597bc9febe8749e98a3812a0dc4380ceae75c29450Johann  VSHF_H2_SH(x0, x1, x0, x1, inv_zig_zag0, inv_zig_zag1, q_coeff0, q_coeff1);
607bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ST_SH2(q_coeff0, q_coeff1, q_coeff, 8);
617bc9febe8749e98a3812a0dc4380ceae75c29450Johann  LD_SH2(de_quant, 8, de_quant0, de_quant1);
627bc9febe8749e98a3812a0dc4380ceae75c29450Johann  q_coeff0 *= de_quant0;
637bc9febe8749e98a3812a0dc4380ceae75c29450Johann  q_coeff1 *= de_quant1;
647bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ST_SH2(q_coeff0, q_coeff1, dq_coeff, 8);
65da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
667bc9febe8749e98a3812a0dc4380ceae75c29450Johann  for (cnt = 0; cnt < 16; ++cnt) {
677bc9febe8749e98a3812a0dc4380ceae75c29450Johann    if ((cnt <= 7) && (x1[7 - cnt] != 0)) {
687bc9febe8749e98a3812a0dc4380ceae75c29450Johann      eob = (15 - cnt);
697bc9febe8749e98a3812a0dc4380ceae75c29450Johann      break;
707bc9febe8749e98a3812a0dc4380ceae75c29450Johann    }
71da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
727bc9febe8749e98a3812a0dc4380ceae75c29450Johann    if ((cnt > 7) && (x0[7 - (cnt - 8)] != 0)) {
737bc9febe8749e98a3812a0dc4380ceae75c29450Johann      eob = (7 - (cnt - 8));
747bc9febe8749e98a3812a0dc4380ceae75c29450Johann      break;
75da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian    }
767bc9febe8749e98a3812a0dc4380ceae75c29450Johann  }
77da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
787bc9febe8749e98a3812a0dc4380ceae75c29450Johann  return (int8_t)(eob + 1);
79da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian}
80da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
817bc9febe8749e98a3812a0dc4380ceae75c29450Johannstatic int8_t exact_regular_quantize_b_msa(
827bc9febe8749e98a3812a0dc4380ceae75c29450Johann    int16_t *zbin_boost, int16_t *coeff_ptr, int16_t *zbin, int16_t *round,
837bc9febe8749e98a3812a0dc4380ceae75c29450Johann    int16_t *quant, int16_t *quant_shift, int16_t *de_quant, int16_t zbin_oq_in,
847bc9febe8749e98a3812a0dc4380ceae75c29450Johann    int16_t *q_coeff, int16_t *dq_coeff) {
857bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int32_t cnt, eob;
867bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *boost_temp = zbin_boost;
877bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v16i8 inv_zig_zag = { 0, 1, 5, 6, 2, 4, 7, 12, 3, 8, 11, 13, 9, 10, 14, 15 };
887bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 round0, round1;
897bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 sign_z0, sign_z1;
907bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 q_coeff0, q_coeff1;
917bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 z_bin0, z_bin1, zbin_o_q;
927bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 x0, x1, sign_x0, sign_x1, de_quant0, de_quant1;
937bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 coeff0, coeff1, z0, z1;
947bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 quant0, quant1, quant2, quant3;
957bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 zero = { 0 };
967bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 inv_zig_zag0, inv_zig_zag1;
977bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 zigzag_mask0 = { 0, 1, 4, 8, 5, 2, 3, 6 };
987bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 zigzag_mask1 = { 9, 12, 13, 10, 7, 11, 14, 15 };
997bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v8i16 temp0_h, temp1_h, temp2_h, temp3_h;
1007bc9febe8749e98a3812a0dc4380ceae75c29450Johann  v4i32 temp0_w, temp1_w, temp2_w, temp3_w;
101da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
1027bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVRL_B2_SH(zero, inv_zig_zag, inv_zig_zag0, inv_zig_zag1);
1037bc9febe8749e98a3812a0dc4380ceae75c29450Johann  zbin_o_q = __msa_fill_h(zbin_oq_in);
1047bc9febe8749e98a3812a0dc4380ceae75c29450Johann  eob = -1;
1057bc9febe8749e98a3812a0dc4380ceae75c29450Johann  LD_SH2(coeff_ptr, 8, coeff0, coeff1);
1067bc9febe8749e98a3812a0dc4380ceae75c29450Johann  VSHF_H2_SH(coeff0, coeff1, coeff0, coeff1, zigzag_mask0, zigzag_mask1, z0,
1077bc9febe8749e98a3812a0dc4380ceae75c29450Johann             z1);
1087bc9febe8749e98a3812a0dc4380ceae75c29450Johann  LD_SH2(round, 8, coeff0, coeff1);
1097bc9febe8749e98a3812a0dc4380ceae75c29450Johann  VSHF_H2_SH(coeff0, coeff1, coeff0, coeff1, zigzag_mask0, zigzag_mask1, round0,
1107bc9febe8749e98a3812a0dc4380ceae75c29450Johann             round1);
1117bc9febe8749e98a3812a0dc4380ceae75c29450Johann  LD_SH2(quant, 8, coeff0, coeff1);
1127bc9febe8749e98a3812a0dc4380ceae75c29450Johann  VSHF_H2_SH(coeff0, coeff1, coeff0, coeff1, zigzag_mask0, zigzag_mask1, quant0,
1137bc9febe8749e98a3812a0dc4380ceae75c29450Johann             quant2);
1147bc9febe8749e98a3812a0dc4380ceae75c29450Johann  LD_SH2(zbin, 8, coeff0, coeff1);
1157bc9febe8749e98a3812a0dc4380ceae75c29450Johann  VSHF_H2_SH(coeff0, coeff1, coeff0, coeff1, zigzag_mask0, zigzag_mask1, z_bin0,
1167bc9febe8749e98a3812a0dc4380ceae75c29450Johann             z_bin1);
1177bc9febe8749e98a3812a0dc4380ceae75c29450Johann  sign_z0 = z0 >> 15;
1187bc9febe8749e98a3812a0dc4380ceae75c29450Johann  sign_z1 = z1 >> 15;
1197bc9febe8749e98a3812a0dc4380ceae75c29450Johann  x0 = __msa_add_a_h(z0, zero);
1207bc9febe8749e98a3812a0dc4380ceae75c29450Johann  x1 = __msa_add_a_h(z1, zero);
1217bc9febe8749e98a3812a0dc4380ceae75c29450Johann  SUB2(x0, z_bin0, x1, z_bin1, z_bin0, z_bin1);
1227bc9febe8749e98a3812a0dc4380ceae75c29450Johann  SUB2(z_bin0, zbin_o_q, z_bin1, zbin_o_q, z_bin0, z_bin1);
1237bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVL_H2_SH(quant0, quant0, quant2, quant2, quant1, quant3);
1247bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVR_H2_SH(quant0, quant0, quant2, quant2, quant0, quant2);
1257bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVL_H2_SH(round0, x0, round1, x1, temp1_h, temp3_h);
1267bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVR_H2_SH(round0, x0, round1, x1, temp0_h, temp2_h);
1277bc9febe8749e98a3812a0dc4380ceae75c29450Johann  DOTP_SH4_SW(temp0_h, temp1_h, temp2_h, temp3_h, quant0, quant1, quant2,
1287bc9febe8749e98a3812a0dc4380ceae75c29450Johann              quant3, temp0_w, temp1_w, temp2_w, temp3_w);
1297bc9febe8749e98a3812a0dc4380ceae75c29450Johann  SRA_4V(temp0_w, temp1_w, temp2_w, temp3_w, 16);
1307bc9febe8749e98a3812a0dc4380ceae75c29450Johann  PCKEV_H2_SH(temp1_w, temp0_w, temp3_w, temp2_w, temp0_h, temp2_h);
1317bc9febe8749e98a3812a0dc4380ceae75c29450Johann  LD_SH2(quant_shift, 8, coeff0, coeff1);
1327bc9febe8749e98a3812a0dc4380ceae75c29450Johann  VSHF_H2_SH(coeff0, coeff1, coeff0, coeff1, zigzag_mask0, zigzag_mask1, quant0,
1337bc9febe8749e98a3812a0dc4380ceae75c29450Johann             quant2);
1347bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVL_H2_SH(quant0, quant0, quant2, quant2, quant1, quant3);
1357bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVR_H2_SH(quant0, quant0, quant2, quant2, quant0, quant2);
1367bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ADD2(x0, round0, x1, round1, x0, x1);
1377bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVL_H2_SH(temp0_h, x0, temp2_h, x1, temp1_h, temp3_h);
1387bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ILVR_H2_SH(temp0_h, x0, temp2_h, x1, temp0_h, temp2_h);
1397bc9febe8749e98a3812a0dc4380ceae75c29450Johann  DOTP_SH4_SW(temp0_h, temp1_h, temp2_h, temp3_h, quant0, quant1, quant2,
1407bc9febe8749e98a3812a0dc4380ceae75c29450Johann              quant3, temp0_w, temp1_w, temp2_w, temp3_w);
1417bc9febe8749e98a3812a0dc4380ceae75c29450Johann  SRA_4V(temp0_w, temp1_w, temp2_w, temp3_w, 16);
1427bc9febe8749e98a3812a0dc4380ceae75c29450Johann  PCKEV_H2_SH(temp1_w, temp0_w, temp3_w, temp2_w, x0, x1);
1437bc9febe8749e98a3812a0dc4380ceae75c29450Johann  sign_x0 = x0 ^ sign_z0;
1447bc9febe8749e98a3812a0dc4380ceae75c29450Johann  sign_x1 = x1 ^ sign_z1;
1457bc9febe8749e98a3812a0dc4380ceae75c29450Johann  SUB2(sign_x0, sign_z0, sign_x1, sign_z1, sign_x0, sign_x1);
1467bc9febe8749e98a3812a0dc4380ceae75c29450Johann  for (cnt = 0; cnt < 16; ++cnt) {
1477bc9febe8749e98a3812a0dc4380ceae75c29450Johann    if (cnt <= 7) {
1487bc9febe8749e98a3812a0dc4380ceae75c29450Johann      if (boost_temp[0] <= z_bin0[cnt]) {
1497bc9febe8749e98a3812a0dc4380ceae75c29450Johann        if (x0[cnt]) {
1507bc9febe8749e98a3812a0dc4380ceae75c29450Johann          eob = cnt;
1517bc9febe8749e98a3812a0dc4380ceae75c29450Johann          boost_temp = zbin_boost;
1527bc9febe8749e98a3812a0dc4380ceae75c29450Johann        } else {
1537bc9febe8749e98a3812a0dc4380ceae75c29450Johann          boost_temp++;
154da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian        }
1557bc9febe8749e98a3812a0dc4380ceae75c29450Johann      } else {
1567bc9febe8749e98a3812a0dc4380ceae75c29450Johann        sign_x0[cnt] = 0;
1577bc9febe8749e98a3812a0dc4380ceae75c29450Johann        boost_temp++;
1587bc9febe8749e98a3812a0dc4380ceae75c29450Johann      }
1597bc9febe8749e98a3812a0dc4380ceae75c29450Johann    } else {
1607bc9febe8749e98a3812a0dc4380ceae75c29450Johann      if (boost_temp[0] <= z_bin1[cnt - 8]) {
1617bc9febe8749e98a3812a0dc4380ceae75c29450Johann        if (x1[cnt - 8]) {
1627bc9febe8749e98a3812a0dc4380ceae75c29450Johann          eob = cnt;
1637bc9febe8749e98a3812a0dc4380ceae75c29450Johann          boost_temp = zbin_boost;
1647bc9febe8749e98a3812a0dc4380ceae75c29450Johann        } else {
1657bc9febe8749e98a3812a0dc4380ceae75c29450Johann          boost_temp++;
166da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian        }
1677bc9febe8749e98a3812a0dc4380ceae75c29450Johann      } else {
1687bc9febe8749e98a3812a0dc4380ceae75c29450Johann        sign_x1[cnt - 8] = 0;
1697bc9febe8749e98a3812a0dc4380ceae75c29450Johann        boost_temp++;
1707bc9febe8749e98a3812a0dc4380ceae75c29450Johann      }
171da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian    }
1727bc9febe8749e98a3812a0dc4380ceae75c29450Johann  }
173da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
1747bc9febe8749e98a3812a0dc4380ceae75c29450Johann  VSHF_H2_SH(sign_x0, sign_x1, sign_x0, sign_x1, inv_zig_zag0, inv_zig_zag1,
1757bc9febe8749e98a3812a0dc4380ceae75c29450Johann             q_coeff0, q_coeff1);
1767bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ST_SH2(q_coeff0, q_coeff1, q_coeff, 8);
1777bc9febe8749e98a3812a0dc4380ceae75c29450Johann  LD_SH2(de_quant, 8, de_quant0, de_quant1);
1787bc9febe8749e98a3812a0dc4380ceae75c29450Johann  MUL2(de_quant0, q_coeff0, de_quant1, q_coeff1, de_quant0, de_quant1);
1797bc9febe8749e98a3812a0dc4380ceae75c29450Johann  ST_SH2(de_quant0, de_quant1, dq_coeff, 8);
180da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
1817bc9febe8749e98a3812a0dc4380ceae75c29450Johann  return (int8_t)(eob + 1);
182da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian}
183da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
1847bc9febe8749e98a3812a0dc4380ceae75c29450Johannvoid vp8_fast_quantize_b_msa(BLOCK *b, BLOCKD *d) {
1857bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *coeff_ptr = b->coeff;
1867bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *round_ptr = b->round;
1877bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *quant_ptr = b->quant_fast;
1887bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *qcoeff_ptr = d->qcoeff;
1897bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *dqcoeff_ptr = d->dqcoeff;
1907bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *dequant_ptr = d->dequant;
191da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
1927bc9febe8749e98a3812a0dc4380ceae75c29450Johann  *d->eob = fast_quantize_b_msa(coeff_ptr, round_ptr, quant_ptr, dequant_ptr,
1937bc9febe8749e98a3812a0dc4380ceae75c29450Johann                                qcoeff_ptr, dqcoeff_ptr);
194da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian}
195da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
1967bc9febe8749e98a3812a0dc4380ceae75c29450Johannvoid vp8_regular_quantize_b_msa(BLOCK *b, BLOCKD *d) {
1977bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *zbin_boost_ptr = b->zrun_zbin_boost;
1987bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *coeff_ptr = b->coeff;
1997bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *zbin_ptr = b->zbin;
2007bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *round_ptr = b->round;
2017bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *quant_ptr = b->quant;
2027bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *quant_shift_ptr = b->quant_shift;
2037bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *qcoeff_ptr = d->qcoeff;
2047bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *dqcoeff_ptr = d->dqcoeff;
2057bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t *dequant_ptr = d->dequant;
2067bc9febe8749e98a3812a0dc4380ceae75c29450Johann  int16_t zbin_oq_value = b->zbin_extra;
207da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
2087bc9febe8749e98a3812a0dc4380ceae75c29450Johann  *d->eob = exact_regular_quantize_b_msa(
2097bc9febe8749e98a3812a0dc4380ceae75c29450Johann      zbin_boost_ptr, coeff_ptr, zbin_ptr, round_ptr, quant_ptr,
2107bc9febe8749e98a3812a0dc4380ceae75c29450Johann      quant_shift_ptr, dequant_ptr, zbin_oq_value, qcoeff_ptr, dqcoeff_ptr);
211da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian}
212