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