27     0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,
 
   29     0, 1, 1, 2, 2, 3, 3, 4, 16, 17, 17, 18, 18, 19, 19, 20
 
   32 #define HEVC_UNIW_RND_CLIP2_MAX_SATU_H(in0_h, in1_h, wgt_w, offset_h, rnd_w,  \ 
   35     v4i32 in0_r_m, in0_l_m, in1_r_m, in1_l_m;                                 \ 
   38     ILVRL_H2_SW(zero, in0_h, in0_r_m, in0_l_m);                               \ 
   39     ILVRL_H2_SW(zero, in1_h, in1_r_m, in1_l_m);                               \ 
   40     MUL4(in0_r_m, wgt_w, in0_l_m, wgt_w, in1_r_m, wgt_w, in1_l_m, wgt_w,      \ 
   41          in0_r_m, in0_l_m, in1_r_m, in1_l_m);                                 \ 
   42     SRAR_W4_SW(in0_r_m, in0_l_m, in1_r_m, in1_l_m, rnd_w);                    \ 
   43     ADD4(in0_r_m, offset_h, in0_l_m, offset_h, in1_r_m, offset_h, in1_l_m,    \ 
   44          offset_h, in0_r_m, in0_l_m, in1_r_m, in1_l_m);                       \ 
   45     CLIP_SW4_0_255(in0_r_m, in0_l_m, in1_r_m, in1_l_m);                       \ 
   46     PCKEV_H2_SH(in0_l_m, in0_r_m, in1_l_m, in1_r_m, out0_h, out1_h);          \ 
   49 #define HEVC_UNIW_RND_CLIP4_MAX_SATU_H(in0_h, in1_h, in2_h, in3_h, wgt_w,  \ 
   50                                        offset_h, rnd_w, out0_h, out1_h,    \ 
   53     HEVC_UNIW_RND_CLIP2_MAX_SATU_H(in0_h, in1_h, wgt_w, offset_h, rnd_w,   \ 
   55     HEVC_UNIW_RND_CLIP2_MAX_SATU_H(in2_h, in3_h, wgt_w, offset_h, rnd_w,   \ 
   59 #define HEVC_FILT_8TAP_4W_SH(in0, in1, in2, in3, filt0, filt1,   \ 
   60                              filt2, filt3, dst0, dst1)           \ 
   62     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;        \ 
   63     ILVRL_B2_SH(zero, in0, tmp0, tmp4);                          \ 
   64     ILVRL_B2_SH(zero, in1, tmp1, tmp5);                          \ 
   65     ILVRL_B2_SH(zero, in2, tmp2, tmp6);                          \ 
   66     ILVRL_B2_SH(zero, in3, tmp3, tmp7);                          \ 
   67     dst0 = __msa_dotp_s_w((v8i16) tmp0, (v8i16) filt0);          \ 
   68     dst1 = __msa_dotp_s_w((v8i16) tmp4, (v8i16) filt0);          \ 
   69     DPADD_SH2_SW(tmp1, tmp5, filt1, filt1, dst0, dst1);          \ 
   70     DPADD_SH2_SW(tmp2, tmp6, filt2, filt2, dst0, dst1);          \ 
   71     DPADD_SH2_SW(tmp3, tmp7, filt3, filt3, dst0, dst1);          \ 
   83     uint32_t loop_cnt, tp0, tp1, tp2, tp3;
 
   87     v8i16 dst0, dst1, dst2, dst3, offset_vec;
 
   88     v4i32 weight_vec, rnd_vec;
 
   90     weight_vec = __msa_fill_w(
weight);
 
   91     offset_vec = __msa_fill_w(
offset);
 
   92     rnd_vec = __msa_fill_w(rnd_val);
 
   97         LW2(
src, src_stride, tp0, tp1);
 
   99         dst0 = (v8i16) __msa_ilvr_b(
zero, 
src0);
 
  103         DOTP_SH2_SW(dst0_r, dst0_l, weight_vec, weight_vec, dst0_r, dst0_l);
 
  105         dst0_r += offset_vec;
 
  106         dst0_l += offset_vec;
 
  108         dst0 = __msa_pckev_h((v8i16) dst0_l, (v8i16) dst0_r);
 
  109         out0 = (v16u8) __msa_pckev_b((v16i8) dst0, (v16i8) dst0);
 
  112         LW4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  117                                        rnd_vec, dst0, dst1);
 
  118         out0 = (v16u8) __msa_pckev_b((v16i8) dst1, (v16i8) dst0);
 
  119         ST_W4(out0, 0, 1, 2, 3, 
dst, dst_stride);
 
  120     } 
else if (0 == (
height % 8)) {
 
  121         for (loop_cnt = (
height >> 3); loop_cnt--;) {
 
  122             LW4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  123             src += 4 * src_stride;
 
  125             LW4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  126             src += 4 * src_stride;
 
  130             SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  132                                            offset_vec, rnd_vec, dst0, dst1,
 
  135             ST_W8(out0, out1, 0, 1, 2, 3, 0, 1, 2, 3, 
dst, dst_stride);
 
  136             dst += 8 * dst_stride;
 
  152     uint64_t tp0, tp1, tp2, tp3;
 
  154     v16u8 out0, out1, out2, out3;
 
  156     v8i16 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, offset_vec;
 
  157     v4i32 weight_vec, rnd_vec;
 
  159     weight_vec = __msa_fill_w(
weight);
 
  160     offset_vec = __msa_fill_w(
offset);
 
  161     rnd_vec = __msa_fill_w(rnd_val);
 
  163     for (loop_cnt = (
height >> 3); loop_cnt--;) {
 
  164         LD4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  165         src += (4 * src_stride);
 
  168         LD4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  169         src += (4 * src_stride);
 
  178         SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  179         SLLI_4V(dst4, dst5, dst6, dst7, 6);
 
  182                                        offset_vec, rnd_vec, dst0, dst1, dst2,
 
  185                                        offset_vec, rnd_vec, dst4, dst5, dst6,
 
  191         ST_H2(out0, 2, 6, 
dst + 4, dst_stride);
 
  192         ST_W2(out1, 0, 2, 
dst + 2 * dst_stride, dst_stride);
 
  193         ST_H2(out1, 2, 6, 
dst + 2 * dst_stride + 4, dst_stride);
 
  194         dst += (4 * dst_stride);
 
  196         ST_H2(out2, 2, 6, 
dst + 4, dst_stride);
 
  197         ST_W2(out3, 0, 2, 
dst + 2 * dst_stride, dst_stride);
 
  198         ST_H2(out3, 2, 6, 
dst + 2 * dst_stride + 4, dst_stride);
 
  199         dst += (4 * dst_stride);
 
  202         LD4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  203         src += (4 * src_stride);
 
  206         LD4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  207         src += (4 * src_stride);
 
  216         SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  217         SLLI_4V(dst4, dst5, dst6, dst7, 6);
 
  220                                        offset_vec, rnd_vec, dst0, dst1, dst2,
 
  223                                        offset_vec, rnd_vec, dst4, dst5, dst6,
 
  230             ST_H2(out0, 2, 6, 
dst + 4, dst_stride);
 
  231         } 
else if (res == 4) {
 
  233             ST_H2(out0, 2, 6, 
dst + 4, dst_stride);
 
  234             ST_W2(out1, 0, 2, 
dst + 2 * dst_stride, dst_stride);
 
  235             ST_H2(out1, 2, 6, 
dst + 2 * dst_stride + 4, dst_stride);
 
  238             ST_H2(out0, 2, 6, 
dst + 4, dst_stride);
 
  239             ST_W2(out1, 0, 2, 
dst + 2 * dst_stride, dst_stride);
 
  240             ST_H2(out1, 2, 6, 
dst + 2 * dst_stride + 4, dst_stride);
 
  241             dst += (4 * dst_stride);
 
  243             ST_H2(out2, 2, 6, 
dst + 4, dst_stride);
 
  258     uint64_t tp0, tp1, tp2, tp3;
 
  259     v16i8 
src0 = { 0 }, 
src1 = { 0 }, 
src2 = { 0 }, src3 = { 0 };
 
  261     v16u8 out0, out1, out2, out3;
 
  262     v8i16 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, offset_vec;
 
  263     v4i32 weight_vec, rnd_vec;
 
  265     weight_vec = __msa_fill_w(
weight);
 
  266     offset_vec = __msa_fill_w(
offset);
 
  267     rnd_vec = __msa_fill_w(rnd_val);
 
  270         LD2(
src, src_stride, tp0, tp1);
 
  275                                        rnd_vec, dst0, dst1);
 
  276         out0 = (v16u8) __msa_pckev_b((v16i8) dst1, (v16i8) dst0);
 
  279         LD4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  284         SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  286                                        offset_vec, rnd_vec, dst0, dst1, dst2,
 
  289         ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
  291         LD4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  292         src += 4 * src_stride;
 
  295         LD2(
src, src_stride, tp0, tp1);
 
  300         SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  303                                        offset_vec, rnd_vec, dst0, dst1, dst2,
 
  306                                        rnd_vec, dst4, dst5);
 
  307         PCKEV_B3_UB(dst1, dst0, dst3, dst2, dst5, dst4, out0, out1, out2);
 
  308         ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
  309         ST_D2(out2, 0, 1, 
dst + 4 * dst_stride, dst_stride);
 
  310     } 
else if (0 == 
height % 8) {
 
  311         for (loop_cnt = (
height >> 3); loop_cnt--;) {
 
  312             LD4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  313             src += 4 * src_stride;
 
  316             LD4(
src, src_stride, tp0, tp1, tp2, tp3);
 
  317             src += 4 * src_stride;
 
  325             SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  326             SLLI_4V(dst4, dst5, dst6, dst7, 6);
 
  328                                            offset_vec, rnd_vec, dst0, dst1,
 
  331                                            offset_vec, rnd_vec, dst4, dst5,
 
  335             ST_D8(out0, out1, out2, out3, 0, 1, 0, 1, 0, 1, 0, 1,
 
  337             dst += (8 * dst_stride);
 
  352     v16u8 out0, out1, out2;
 
  354     v8i16 dst0, dst1, dst2, dst3, dst4, dst5;
 
  357     v4i32 weight_vec, rnd_vec;
 
  359     weight_vec = __msa_fill_w(
weight);
 
  360     offset_vec = __msa_fill_w(
offset);
 
  361     rnd_vec = __msa_fill_w(rnd_val);
 
  363     for (loop_cnt = 4; loop_cnt--;) {
 
  365         src += (4 * src_stride);
 
  367                    dst0, dst1, dst2, dst3);
 
  371         SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  374                                        offset_vec, rnd_vec, dst0, dst1, dst2,
 
  377                                        rnd_vec, dst4, dst5);
 
  379         PCKEV_B3_UB(dst1, dst0, dst3, dst2, dst5, dst4, out0, out1, out2);
 
  380         ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
  381         ST_W4(out2, 0, 1, 2, 3, 
dst + 8, dst_stride);
 
  382         dst += (4 * dst_stride);
 
  396     v16u8 out0, out1, out2, out3;
 
  399     v8i16 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, offset_vec;
 
  400     v4i32 weight_vec, rnd_vec;
 
  402     weight_vec = __msa_fill_w(
weight);
 
  403     offset_vec = __msa_fill_w(
offset);
 
  404     rnd_vec = __msa_fill_w(rnd_val);
 
  406     for (loop_cnt = 
height >> 2; loop_cnt--;) {
 
  408         src += (4 * src_stride);
 
  413         SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  414         SLLI_4V(dst4, dst5, dst6, dst7, 6);
 
  416                                        offset_vec, rnd_vec, dst0, dst1, dst2,
 
  419                                        offset_vec, rnd_vec, dst4, dst5, dst6,
 
  423         ST_UB4(out0, out1, out2, out3, 
dst, dst_stride);
 
  424         dst += (4 * dst_stride);
 
  438     v16u8 out0, out1, out2, out3, out4, out5;
 
  441     v8i16 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, offset_vec;
 
  442     v8i16 dst8, dst9, dst10, dst11;
 
  443     v4i32 weight_vec, rnd_vec;
 
  445     weight_vec = __msa_fill_w(
weight);
 
  446     offset_vec = __msa_fill_w(
offset);
 
  447     rnd_vec = __msa_fill_w(rnd_val);
 
  449     for (loop_cnt = (
height >> 2); loop_cnt--;) {
 
  452         src += (4 * src_stride);
 
  460         SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  461         SLLI_4V(dst4, dst5, dst6, dst7, 6);
 
  462         SLLI_4V(dst8, dst9, dst10, dst11, 6);
 
  464                                        offset_vec, rnd_vec, dst0, dst1, dst2,
 
  467                                        offset_vec, rnd_vec, dst4, dst5, dst6,
 
  470                                        offset_vec, rnd_vec, dst8, dst9, dst10,
 
  472         PCKEV_B3_UB(dst1, dst0, dst3, dst2, dst5, dst4, out0, out1, out2);
 
  473         PCKEV_B3_UB(dst7, dst6, dst9, dst8, dst11, dst10, out3, out4, out5);
 
  474         ST_UB4(out0, out1, out3, out4, 
dst, dst_stride);
 
  475         ST_D4(out2, out5, 0, 1, 0, 1, 
dst + 16, dst_stride);
 
  476         dst += (4 * dst_stride);
 
  490     v16u8 out0, out1, out2, out3;
 
  493     v8i16 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, offset_vec;
 
  494     v4i32 weight_vec, rnd_vec;
 
  496     weight_vec = __msa_fill_w(
weight);
 
  497     offset_vec = __msa_fill_w(
offset);
 
  498     rnd_vec = __msa_fill_w(rnd_val);
 
  500     for (loop_cnt = (
height >> 1); loop_cnt--;) {
 
  503         src += (2 * src_stride);
 
  509         SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  510         SLLI_4V(dst4, dst5, dst6, dst7, 6);
 
  512                                        offset_vec, rnd_vec, dst0, dst1, dst2,
 
  515                                        offset_vec, rnd_vec, dst4, dst5, dst6,
 
  520         ST_UB2(out2, out3, 
dst + 16, dst_stride);
 
  521         dst += (2 * dst_stride);
 
  535     v16u8 out0, out1, out2, out3, out4, out5;
 
  538     v8i16 dst0, dst1, dst2, dst3, dst4, dst5, offset_vec;
 
  539     v8i16 dst6, dst7, dst8, dst9, dst10, dst11;
 
  540     v4i32 weight_vec, rnd_vec;
 
  542     weight_vec = __msa_fill_w(
weight);
 
  543     offset_vec = __msa_fill_w(
offset);
 
  544     rnd_vec = __msa_fill_w(rnd_val);
 
  546     for (loop_cnt = (
height >> 1); loop_cnt--;) {
 
  558         SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  559         SLLI_4V(dst4, dst5, dst6, dst7, 6);
 
  560         SLLI_4V(dst8, dst9, dst10, dst11, 6);
 
  562                                        offset_vec, rnd_vec, dst0, dst1, dst2,
 
  565                                        offset_vec, rnd_vec, dst4, dst5, dst6,
 
  568                                        offset_vec, rnd_vec, dst8, dst9, dst10,
 
  570         PCKEV_B3_UB(dst1, dst0, dst3, dst2, dst5, dst4, out0, out1, out2);
 
  571         PCKEV_B3_UB(dst7, dst6, dst9, dst8, dst11, dst10, out3, out4, out5);
 
  591     v16u8 out0, out1, out2, out3, out4, out5, out6, out7;
 
  594     v8i16 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, offset_vec;
 
  595     v8i16 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
  596     v4i32 weight_vec, rnd_vec;
 
  598     weight_vec = __msa_fill_w(
weight);
 
  599     offset_vec = __msa_fill_w(
offset);
 
  600     rnd_vec = __msa_fill_w(rnd_val);
 
  602     for (loop_cnt = (
height >> 1); loop_cnt--;) {
 
  616         SLLI_4V(dst0, dst1, dst2, dst3, 6);
 
  617         SLLI_4V(dst4, dst5, dst6, dst7, 6);
 
  618         SLLI_4V(dst8, dst9, dst10, dst11, 6);
 
  619         SLLI_4V(dst12, dst13, dst14, dst15, 6);
 
  621                                        offset_vec, rnd_vec, dst0, dst1, dst2,
 
  624                                        offset_vec, rnd_vec, dst4, dst5, dst6,
 
  627                                        offset_vec, rnd_vec, dst8, dst9, dst10,
 
  630                                        offset_vec, rnd_vec, dst12, dst13, dst14,
 
  635         PCKEV_B2_UB(dst13, dst12, dst15, dst14, out6, out7);
 
  654     uint32_t res = 
height & 0x07;
 
  657     v8i16 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
  658     v8i16 vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;
 
  659     v16i8 mask0, mask1, mask2, mask3;
 
  660     v8i16 filter_vec, filt0, filt1, filt2, filt3;
 
  661     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
  662     v4i32 weight_vec, rnd_vec, offset_vec;
 
  667     weight_vec = __msa_fill_w(
weight);
 
  668     rnd_vec = __msa_fill_w(rnd_val);
 
  669     offset_vec = __msa_fill_w(
offset);
 
  680     for (loop_cnt = (
height >> 3); loop_cnt--;) {
 
  682         src += (8 * src_stride);
 
  684                    vec0, vec1, vec2, vec3);
 
  686                    vec4, vec5, vec6, vec7);
 
  687         VSHF_B4_SB(src4, src5, mask0, mask1, mask2, mask3,
 
  688                    vec8, vec9, vec10, vec11);
 
  689         VSHF_B4_SB(src6, src7, mask0, mask1, mask2, mask3,
 
  690                    vec12, vec13, vec14, vec15);
 
  701         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
  702              weight_vec, dst0, dst1, dst2, dst3)
 
  703         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
  704              weight_vec, dst4, dst5, dst6, dst7);
 
  707         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
  708              offset_vec, dst0, dst1, dst2, dst3);
 
  709         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
  710              offset_vec, dst4, dst5, dst6, dst7);
 
  712         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
  713                     vec0, vec1, vec2, vec3);
 
  716         ST_W8(out0, out1, 0, 1, 2, 3, 0, 1, 2, 3, 
dst, dst_stride);
 
  717         dst += (8 * dst_stride);
 
  722                    vec0, vec1, vec2, vec3);
 
  724                    vec4, vec5, vec6, vec7);
 
  725         VSHF_B4_SB(src4, src5, mask0, mask1, mask2, mask3,
 
  726                    vec8, vec9, vec10, vec11);
 
  727         VSHF_B4_SB(src6, src7, mask0, mask1, mask2, mask3,
 
  728                    vec12, vec13, vec14, vec15);
 
  739         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
  740              weight_vec, dst0, dst1, dst2, dst3)
 
  741         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
  742              weight_vec, dst4, dst5, dst6, dst7);
 
  745         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
  746              offset_vec, dst0, dst1, dst2, dst3);
 
  747         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
  748              offset_vec, dst4, dst5, dst6, dst7);
 
  750         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
  751                     vec0, vec1, vec2, vec3);
 
  756         } 
else if (res == 4) {
 
  757             ST_W4(out0, 0, 1, 2, 3, 
dst, dst_stride);
 
  759             ST_W4(out0, 0, 1, 2, 3, 
dst, dst_stride);
 
  760             ST_W2(out1, 0, 1, 
dst + 4 * dst_stride, dst_stride);
 
  776     uint32_t res = 
height & 0x03;
 
  779     v8i16 filt0, filt1, filt2, filt3;
 
  780     v16i8 mask0, mask1, mask2, mask3;
 
  782     v8i16 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
  783     v8i16 vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;
 
  784     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
  785     v4i32 weight_vec, rnd_vec, offset_vec;
 
  790     weight_vec = __msa_fill_w(
weight);
 
  791     rnd_vec = __msa_fill_w(rnd_val);
 
  792     offset_vec = __msa_fill_w(
offset);
 
  803     for (loop_cnt = (
height >> 2); loop_cnt--;) {
 
  805         src += (4 * src_stride);
 
  808                    vec0, vec1, vec2, vec3);
 
  810                    vec4, vec5, vec6, vec7);
 
  812                    vec8, vec9, vec10, vec11);
 
  813         VSHF_B4_SB(src3, src3, mask0, mask1, mask2, mask3,
 
  814                    vec12, vec13, vec14, vec15);
 
  824         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
  825              weight_vec, dst0, dst1, dst2, dst3)
 
  826         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
  827              weight_vec, dst4, dst5, dst6, dst7);
 
  830         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
  831              offset_vec, dst0, dst1, dst2, dst3);
 
  832         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
  833              offset_vec, dst4, dst5, dst6, dst7);
 
  835         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
  836                     vec0, vec1, vec2, vec3);
 
  838         ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
  839         dst += (4 * dst_stride);
 
  845                    vec0, vec1, vec2, vec3);
 
  847                    vec4, vec5, vec6, vec7);
 
  853         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
  854              weight_vec, dst0, dst1, dst2, dst3)
 
  856         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
  857              offset_vec, dst0, dst1, dst2, dst3);
 
  860         out0 = __msa_pckev_b((v16i8) vec1, (v16i8) vec0);
 
  877     v8i16 filt0, filt1, filt2, filt3;
 
  879     v16i8 mask0, mask1, mask2, mask3, mask4, mask5, mask6, mask7;
 
  880     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
  882     v4i32 dst0, dst1, dst2, dst3;
 
  884     v4i32 weight_vec, rnd_vec, offset_vec;
 
  889     weight_vec = __msa_fill_w(
weight);
 
  890     rnd_vec = __msa_fill_w(rnd_val);
 
  891     offset_vec = __msa_fill_w(
offset);
 
  906     for (loop_cnt = (
height >> 1); loop_cnt--;) {
 
  909         src += (2 * src_stride);
 
  912                    vec0, vec1, vec2, vec3);
 
  914                    vec4, vec5, vec6, vec7);
 
  920                    vec0, vec1, vec2, vec3);
 
  922                              filt3, dst00, dst01);
 
  924         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
  925              weight_vec, dst0, dst1, dst2, dst3)
 
  926         MUL2(dst00, weight_vec, dst01, weight_vec, dst00, dst01);
 
  929         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
  930              offset_vec, dst0, dst1, dst2, dst3);
 
  931         ADD2(dst00, offset_vec, dst01, offset_vec, dst00, dst01);
 
  935         vec2 = __msa_pckev_h((v8i16) dst01, (v8i16) dst00);
 
  939         ST_W2(out1, 0, 1, 
dst + 8, dst_stride);
 
  940         dst += (2 * dst_stride);
 
  957     v8i16 filt0, filt1, filt2, filt3;
 
  958     v16i8 mask0, mask1, mask2, mask3;
 
  960     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
  961     v16i8 vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;
 
  962     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
  963     v4i32 weight_vec, rnd_vec, offset_vec;
 
  968     weight_vec = __msa_fill_w(
weight);
 
  969     rnd_vec = __msa_fill_w(rnd_val);
 
  970     offset_vec = __msa_fill_w(
offset);
 
  981     for (loop_cnt = (
height >> 1); loop_cnt--;) {
 
  984         src += (2 * src_stride);
 
  987                    vec0, vec1, vec2, vec3);
 
  989                    vec4, vec5, vec6, vec7);
 
  991                    vec8, vec9, vec10, vec11);
 
  992         VSHF_B4_SB(src3, src3, mask0, mask1, mask2, mask3,
 
  993                    vec12, vec13, vec14, vec15);
 
 1003         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1004              weight_vec, dst0, dst1, dst2, dst3)
 
 1005         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1006              weight_vec, dst4, dst5, dst6, dst7);
 
 1009         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1010              offset_vec, dst0, dst1, dst2, dst3);
 
 1011         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1012              offset_vec, dst4, dst5, dst6, dst7);
 
 1014         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1015                     vec0, vec1, vec2, vec3);
 
 1019         dst += (2 * dst_stride);
 
 1034     v16u8 out0, out1, out2;
 
 1036     v8i16 filt0, filt1, filt2, filt3;
 
 1037     v16i8 mask0, mask1, mask2, mask3, mask4, mask5, mask6, mask7;
 
 1038     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 1039     v16i8 vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;
 
 1040     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 1041     v4i32 dst8, dst9, dst10, dst11;
 
 1043     v4i32 weight_vec, rnd_vec, offset_vec;
 
 1048     weight_vec = __msa_fill_w(
weight);
 
 1049     rnd_vec = __msa_fill_w(rnd_val);
 
 1050     offset_vec = __msa_fill_w(
offset);
 
 1065     for (loop_cnt = 16; loop_cnt--;) {
 
 1071                    vec0, vec1, vec2, vec3);
 
 1073                    vec4, vec5, vec6, vec7);
 
 1075                    vec8, vec9, vec10, vec11);
 
 1077                    vec12, vec13, vec14, vec15);
 
 1088                    vec0, vec1, vec2, vec3);
 
 1089         VSHF_B4_SB(src3, src3, mask0, mask1, mask2, mask3,
 
 1090                    vec4, vec5, vec6, vec7);
 
 1094                              filt3, dst10, dst11);
 
 1096         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1097              weight_vec, dst0, dst1, dst2, dst3)
 
 1098         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1099              weight_vec, dst4, dst5, dst6, dst7);
 
 1100         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 1101              weight_vec, dst8, dst9, dst10, dst11)
 
 1104         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 1105         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1106              offset_vec, dst0, dst1, dst2, dst3);
 
 1107         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1108              offset_vec, dst4, dst5, dst6, dst7);
 
 1109         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 1110              offset_vec, dst8, dst9, dst10, dst11);
 
 1113         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1114                     vec0, vec1, vec2, vec3);
 
 1115         PCKEV_H2_SH(dst9, dst8, dst11, dst10, vec4, vec5);
 
 1117         PCKEV_B3_UB(vec1, vec0, vec4, vec3, vec5, vec2, out0, out1, out2);
 
 1119         ST_D2(out2, 0, 1, 
dst + 16, dst_stride);
 
 1120         dst += (2 * dst_stride);
 
 1135     v16u8 out0, out1, out2, out3;
 
 1137     v8i16 filt0, filt1, filt2, filt3;
 
 1138     v16i8 mask0, mask1, mask2, mask3;
 
 1139     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 1140     v16i8 vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;
 
 1142     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 1143     v4i32 dst10, dst11, dst12, dst13, dst14, dst15, dst16, dst17;
 
 1144     v4i32 weight_vec, rnd_vec, offset_vec;
 
 1149     weight_vec = __msa_fill_w(
weight);
 
 1150     rnd_vec = __msa_fill_w(rnd_val);
 
 1151     offset_vec = __msa_fill_w(
offset);
 
 1162     for (loop_cnt = 
height >> 1; loop_cnt--;) {
 
 1169                    vec0, vec1, vec2, vec3);
 
 1171                    vec4, vec5, vec6, vec7);
 
 1173                    vec8, vec9, vec10, vec11);
 
 1174         VSHF_B4_SB(src3, src3, mask0, mask1, mask2, mask3,
 
 1175                    vec12, vec13, vec14, vec15);
 
 1185         VSHF_B4_SB(src4, src4, mask0, mask1, mask2, mask3,
 
 1186                    vec0, vec1, vec2, vec3);
 
 1187         VSHF_B4_SB(src5, src5, mask0, mask1, mask2, mask3,
 
 1188                    vec4, vec5, vec6, vec7);
 
 1189         VSHF_B4_SB(src6, src6, mask0, mask1, mask2, mask3,
 
 1190                    vec8, vec9, vec10, vec11);
 
 1191         VSHF_B4_SB(src7, src7, mask0, mask1, mask2, mask3,
 
 1192                    vec12, vec13, vec14, vec15);
 
 1194                              filt3, dst10, dst11);
 
 1196                              filt3, dst12, dst13);
 
 1198                              filt3, dst14, dst15);
 
 1200                              filt3, dst16, dst17);
 
 1202         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1203              weight_vec, dst0, dst1, dst2, dst3)
 
 1204         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1205              weight_vec, dst4, dst5, dst6, dst7);
 
 1206         MUL4(dst10, weight_vec, dst11, weight_vec, dst12, weight_vec, dst13,
 
 1207              weight_vec, dst10, dst11, dst12, dst13)
 
 1208         MUL4(dst14, weight_vec, dst15, weight_vec, dst16, weight_vec, dst17,
 
 1209              weight_vec, dst14, dst15, dst16, dst17);
 
 1212         SRAR_W4_SW(dst10, dst11, dst12, dst13, rnd_vec);
 
 1213         SRAR_W4_SW(dst14, dst15, dst16, dst17, rnd_vec);
 
 1214         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1215              offset_vec, dst0, dst1, dst2, dst3);
 
 1216         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1217              offset_vec, dst4, dst5, dst6, dst7);
 
 1218         ADD4(dst10, offset_vec, dst11, offset_vec, dst12, offset_vec, dst13,
 
 1219              offset_vec, dst10, dst11, dst12, dst13);
 
 1220         ADD4(dst14, offset_vec, dst15, offset_vec, dst16, offset_vec, dst17,
 
 1221              offset_vec, dst14, dst15, dst16, dst17);
 
 1223         CLIP_SW8_0_255(dst10, dst11, dst12, dst13, dst14, dst15, dst16, dst17);
 
 1224         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1225                     vec0, vec1, vec2, vec3);
 
 1226         PCKEV_H4_SH(dst11, dst10, dst13, dst12, dst15, dst14, dst17, dst16,
 
 1227                     vec4, vec5, vec6, vec7);
 
 1249     v16u8 out0, out1, out2;
 
 1251     v8i16 filt0, filt1, filt2, filt3;
 
 1252     v16i8 mask0, mask1, mask2, mask3, mask4, mask5, mask6, mask7;
 
 1253     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 1254     v16i8 vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;
 
 1255     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 1256     v4i32 dst8, dst9, dst10, dst11;
 
 1258     v4i32 weight_vec, rnd_vec, offset_vec;
 
 1263     weight_vec = __msa_fill_w(
weight);
 
 1264     rnd_vec = __msa_fill_w(rnd_val);
 
 1265     offset_vec = __msa_fill_w(
offset);
 
 1280     for (loop_cnt = 64; loop_cnt--;) {
 
 1286                    vec0, vec1, vec2, vec3);
 
 1288                    vec4, vec5, vec6, vec7);
 
 1290                    vec8, vec9, vec10, vec11);
 
 1292                    vec12, vec13, vec14, vec15);
 
 1303                    vec0, vec1, vec2, vec3);
 
 1304         VSHF_B4_SB(src3, src3, mask0, mask1, mask2, mask3,
 
 1305                    vec4, vec5, vec6, vec7);
 
 1309                              filt3, dst10, dst11);
 
 1311         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1312              weight_vec, dst0, dst1, dst2, dst3)
 
 1313         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1314              weight_vec, dst4, dst5, dst6, dst7);
 
 1315         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 1316              weight_vec, dst8, dst9, dst10, dst11)
 
 1319         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 1320         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1321              offset_vec, dst0, dst1, dst2, dst3);
 
 1322         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1323              offset_vec, dst4, dst5, dst6, dst7);
 
 1324         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 1325              offset_vec, dst8, dst9, dst10, dst11);
 
 1328         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1329                     vec0, vec1, vec2, vec3);
 
 1330         PCKEV_H2_SH(dst9, dst8, dst11, dst10, vec4, vec5);
 
 1332         out2 = __msa_pckev_b((v16i8) vec5, (v16i8) vec4);
 
 1349     const uint8_t *src_tmp;
 
 1351     uint32_t loop_cnt, cnt;
 
 1354     v8i16 filt0, filt1, filt2, filt3;
 
 1355     v16i8 mask0, mask1, mask2, mask3, mask4, mask5, mask6, mask7;
 
 1356     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 1357     v16i8 vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;
 
 1358     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 1360     v4i32 weight_vec, rnd_vec, offset_vec;
 
 1365     weight_vec = __msa_fill_w(
weight);
 
 1366     rnd_vec = __msa_fill_w(rnd_val);
 
 1367     offset_vec = __msa_fill_w(
offset);
 
 1382     for (loop_cnt = 
height; loop_cnt--;) {
 
 1386         for (cnt = 2; cnt--;) {
 
 1392                        vec0, vec1, vec2, vec3);
 
 1394                        vec4, vec5, vec6, vec7);
 
 1396                        vec8, vec9, vec10, vec11);
 
 1398                        vec12, vec13, vec14, vec15);
 
 1407             MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1408                  weight_vec, dst0, dst1, dst2, dst3)
 
 1409             MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1410                  weight_vec, dst4, dst5, dst6, dst7);
 
 1413             ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1414                  offset_vec, dst0, dst1, dst2, dst3);
 
 1415             ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1416                  offset_vec, dst4, dst5, dst6, dst7);
 
 1418             PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1419                         vec0, vec1, vec2, vec3);
 
 1421             ST_UB2(out0, out1, dst_tmp, 16);
 
 1443     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8;
 
 1444     v16i8 src9, src10, src11, src12, src13, src14;
 
 1445     v16i8 src10_r, src32_r, src54_r, src76_r, src98_r;
 
 1446     v16i8 src21_r, src43_r, src65_r, src87_r, src109_r;
 
 1447     v16i8 src1110_r, src1211_r, src1312_r, src1413_r;
 
 1448     v16i8 src2110, src4332, src6554, src8776, src10998;
 
 1449     v16i8 src12111110, src14131312;
 
 1451     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 1452     v8i16 filt0, filt1, filt2, filt3;
 
 1453     v8i16 vec0, vec1, vec2, vec3;
 
 1454     v4i32 weight_vec, rnd_vec, offset_vec;
 
 1457     src -= (3 * src_stride);
 
 1460     weight_vec = __msa_fill_w(
weight);
 
 1461     rnd_vec = __msa_fill_w(rnd_val);
 
 1462     offset_vec = __msa_fill_w(
offset);
 
 1469     src += (7 * src_stride);
 
 1472                src10_r, src32_r, src54_r, src21_r);
 
 1474     ILVR_B2_SB(src4, src3, src6, src5, src43_r, src65_r);
 
 1477                src32_r, src65_r, src54_r, src2110, src4332, src6554);
 
 1480     for (loop_cnt = (
height >> 3); loop_cnt--;) {
 
 1482                src7, src8, src9, src10, src11, src12, src13, src14);
 
 1483         src += (8 * src_stride);
 
 1484         ILVR_B4_SB(src7, src6, src8, src7, src9, src8, src10, src9,
 
 1485                    src76_r, src87_r, src98_r, src109_r);
 
 1486         ILVR_B4_SB(src11, src10, src12, src11, src13, src12, src14, src13,
 
 1487                    src1110_r, src1211_r, src1312_r, src1413_r);
 
 1488         ILVR_D4_SB(src87_r, src76_r, src109_r, src98_r, src1211_r, src1110_r,
 
 1489                    src1413_r, src1312_r,
 
 1490                    src8776, src10998, src12111110, src14131312);
 
 1492                              filt1, filt2, filt3, dst0, dst1);
 
 1494                              filt1, filt2, filt3, dst2, dst3);
 
 1496                              filt0, filt1, filt2, filt3, dst4, dst5);
 
 1498                              filt0, filt1, filt2, filt3, dst6, dst7);
 
 1499         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1500              weight_vec, dst0, dst1, dst2, dst3)
 
 1501         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1502              weight_vec, dst4, dst5, dst6, dst7);
 
 1505         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1506              offset_vec, dst0, dst1, dst2, dst3);
 
 1507         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1508              offset_vec, dst4, dst5, dst6, dst7);
 
 1510         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1511                     vec0, vec1, vec2, vec3);
 
 1515         ST_W8(out0, out1, 0, 1, 2, 3, 0, 1, 2, 3, 
dst, dst_stride);
 
 1516         dst += (8 * dst_stride);
 
 1519         src4332 = src12111110;
 
 1520         src6554 = src14131312;
 
 1525                src7, src8, src9, src10, src11, src12, src13, src14);
 
 1526         ILVR_B4_SB(src7, src6, src8, src7, src9, src8, src10, src9,
 
 1527                    src76_r, src87_r, src98_r, src109_r);
 
 1528         ILVR_B4_SB(src11, src10, src12, src11, src13, src12, src14, src13,
 
 1529                    src1110_r, src1211_r, src1312_r, src1413_r);
 
 1530         ILVR_D4_SB(src87_r, src76_r, src109_r, src98_r, src1211_r, src1110_r,
 
 1531                    src1413_r, src1312_r,
 
 1532                    src8776, src10998, src12111110, src14131312);
 
 1534                              filt1, filt2, filt3, dst0, dst1);
 
 1536                              filt1, filt2, filt3, dst2, dst3);
 
 1538                              filt0, filt1, filt2, filt3, dst4, dst5);
 
 1540                              filt0, filt1, filt2, filt3, dst6, dst7);
 
 1541         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1542              weight_vec, dst0, dst1, dst2, dst3)
 
 1543         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1544              weight_vec, dst4, dst5, dst6, dst7);
 
 1547         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1548              offset_vec, dst0, dst1, dst2, dst3);
 
 1549         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1550              offset_vec, dst4, dst5, dst6, dst7);
 
 1552         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1553                     vec0, vec1, vec2, vec3);
 
 1557             ST_W2(out0, 0, 1, 
dst, dst_stride);
 
 1558         } 
else if (res == 4) {
 
 1559             ST_W4(out0, 0, 1, 2, 3, 
dst, dst_stride);
 
 1561             ST_W4(out0, 0, 1, 2, 3, 
dst, dst_stride);
 
 1562             ST_W2(out1, 0, 1, 
dst + 4 * dst_stride, dst_stride);
 
 1580     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 1581     v16i8 src10_r, src32_r, src54_r, src76_r, src98_r;
 
 1582     v16i8 src21_r, src43_r, src65_r, src87_r, src109_r;
 
 1583     v8i16 filt0, filt1, filt2, filt3;
 
 1584     v8i16 filter_vec, vec0, vec1, vec2, vec3;
 
 1585     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 1586     v4i32 weight_vec, rnd_vec, offset_vec;
 
 1589     src -= (3 * src_stride);
 
 1591     weight_vec = __msa_fill_w(
weight);
 
 1592     rnd_vec = __msa_fill_w(rnd_val);
 
 1593     offset_vec = __msa_fill_w(
offset);
 
 1600     src += (7 * src_stride);
 
 1603                src10_r, src32_r, src54_r, src21_r);
 
 1604     ILVR_B2_SB(src4, src3, src6, src5, src43_r, src65_r);
 
 1606     for (loop_cnt = (
height >> 2); loop_cnt--;) {
 
 1607         LD_SB4(
src, src_stride, src7, src8, src9, src10);
 
 1608         src += (4 * src_stride);
 
 1609         ILVR_B4_SB(src7, src6, src8, src7, src9, src8, src10, src9,
 
 1610                    src76_r, src87_r, src98_r, src109_r);
 
 1612                              filt1, filt2, filt3, dst0, dst1);
 
 1614                              filt1, filt2, filt3, dst2, dst3);
 
 1616                              filt0, filt1, filt2, filt3, dst4, dst5);
 
 1618                              filt0, filt1, filt2, filt3, dst6, dst7);
 
 1619         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1620              weight_vec, dst0, dst1, dst2, dst3)
 
 1621         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1622              weight_vec, dst4, dst5, dst6, dst7);
 
 1625         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1626              offset_vec, dst0, dst1, dst2, dst3);
 
 1627         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1628              offset_vec, dst4, dst5, dst6, dst7);
 
 1630         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1631                     vec0, vec1, vec2, vec3);
 
 1633         ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
 1634         dst += (4 * dst_stride);
 
 1646         ILVR_B2_SB(src7, src6, src8, src7, src76_r, src87_r);
 
 1648                              filt1, filt2, filt3, dst0, dst1);
 
 1650                              filt1, filt2, filt3, dst2, dst3);
 
 1651         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1652              weight_vec, dst0, dst1, dst2, dst3)
 
 1654         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1655              offset_vec, dst0, dst1, dst2, dst3);
 
 1658         out0 = __msa_pckev_b((v16i8) vec1, (v16i8) vec0);
 
 1659         ST_D2(out0, 0, 1, 
dst, dst_stride);
 
 1674     v16u8 out0, out1, out2;
 
 1675     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 1676     v16i8 src10_r, src32_r, src54_r, src76_r, src98_r;
 
 1677     v16i8 src21_r, src43_r, src65_r, src87_r, src109_r;
 
 1678     v16i8 src10_l, src32_l, src54_l, src76_l, src98_l;
 
 1679     v16i8 src21_l, src43_l, src65_l, src87_l, src109_l;
 
 1680     v16i8 src2110, src4332, src6554, src8776, src10998;
 
 1681     v8i16 filt0, filt1, filt2, filt3;
 
 1682     v4i32 dst0, dst1, dst2, dst3, dst4, dst5;
 
 1683     v4i32 dst6, dst7, dst8, dst9, dst10, dst11;
 
 1684     v8i16 filter_vec, vec0, vec1, vec2, vec3, vec4, vec5;
 
 1685     v4i32 weight_vec, rnd_vec, offset_vec;
 
 1688     src -= (3 * src_stride);
 
 1690     weight_vec = __msa_fill_w(
weight);
 
 1691     rnd_vec = __msa_fill_w(rnd_val);
 
 1692     offset_vec = __msa_fill_w(
offset);
 
 1699     src += (7 * src_stride);
 
 1702                src10_r, src32_r, src54_r, src21_r);
 
 1703     ILVR_B2_SB(src4, src3, src6, src5, src43_r, src65_r);
 
 1705                src10_l, src32_l, src54_l, src21_l);
 
 1706     ILVL_B2_SB(src4, src3, src6, src5, src43_l, src65_l);
 
 1707     ILVR_D3_SB(src21_l, src10_l, src43_l, src32_l, src65_l, src54_l,
 
 1708                src2110, src4332, src6554);
 
 1710     for (loop_cnt = 4; loop_cnt--;) {
 
 1711         LD_SB4(
src, src_stride, src7, src8, src9, src10);
 
 1712         src += (4 * src_stride);
 
 1714         ILVR_B4_SB(src7, src6, src8, src7, src9, src8, src10, src9,
 
 1715                    src76_r, src87_r, src98_r, src109_r);
 
 1716         ILVL_B4_SB(src7, src6, src8, src7, src9, src8, src10, src9,
 
 1717                    src76_l, src87_l, src98_l, src109_l);
 
 1718         ILVR_D2_SB(src87_l, src76_l, src109_l, src98_l, src8776, src10998);
 
 1721                              filt1, filt2, filt3, dst0, dst1);
 
 1723                              filt1, filt2, filt3, dst2, dst3);
 
 1725                              filt0, filt1, filt2, filt3, dst4, dst5);
 
 1727                              filt0, filt1, filt2, filt3, dst6, dst7);
 
 1729                              filt0, filt1, filt2, filt3, dst8, dst9);
 
 1731                              filt0, filt1, filt2, filt3, dst10, dst11);
 
 1733         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1734              weight_vec, dst0, dst1, dst2, dst3)
 
 1735         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1736              weight_vec, dst4, dst5, dst6, dst7);
 
 1737         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 1738              weight_vec, dst8, dst9, dst10, dst11);
 
 1741         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 1742         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1743              offset_vec, dst0, dst1, dst2, dst3);
 
 1744         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1745              offset_vec, dst4, dst5, dst6, dst7);
 
 1746         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 1747              offset_vec, dst8, dst9, dst10, dst11);
 
 1750         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1751                     vec0, vec1, vec2, vec3);
 
 1752         PCKEV_H2_SH(dst9, dst8, dst11, dst10, vec4, vec5);
 
 1753         PCKEV_B3_UB(vec1, vec0, vec3, vec2, vec5, vec4, out0, out1, out2);
 
 1754         ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
 1755         ST_W4(out2, 0, 1, 2, 3, 
dst + 8, dst_stride);
 
 1756         dst += (4 * dst_stride);
 
 1782     const uint8_t *src_tmp;
 
 1786     v16u8 out0, out1, out2, out3;
 
 1787     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 1788     v16i8 src10_r, src32_r, src54_r, src76_r;
 
 1789     v16i8 src21_r, src43_r, src65_r, src87_r;
 
 1790     v16i8 src10_l, src32_l, src54_l, src76_l;
 
 1791     v16i8 src21_l, src43_l, src65_l, src87_l;
 
 1792     v16i8 src98_r, src109_r, src98_l, src109_l;
 
 1793     v8i16 filt0, filt1, filt2, filt3;
 
 1794     v8i16 filter_vec, vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 1795     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 1796     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 1797     v4i32 weight_vec, rnd_vec, offset_vec;
 
 1800     src -= (3 * src_stride);
 
 1802     weight_vec = __msa_fill_w(
weight);
 
 1803     rnd_vec = __msa_fill_w(rnd_val);
 
 1804     offset_vec = __msa_fill_w(
offset);
 
 1811     for (cnt = weightmul16; cnt--;) {
 
 1816         src_tmp += (7 * src_stride);
 
 1818         for (loop_cnt = (
height >> 2); loop_cnt--;) {
 
 1819             LD_SB4(src_tmp, src_stride, src7, src8, src9, src10);
 
 1820             src_tmp += (4 * src_stride);
 
 1823                        src10_r, src32_r, src54_r, src21_r);
 
 1824             ILVR_B2_SB(src4, src3, src6, src5, src43_r, src65_r);
 
 1826                        src10_l, src32_l, src54_l, src21_l);
 
 1827             ILVL_B2_SB(src4, src3, src6, src5, src43_l, src65_l);
 
 1828             ILVR_B4_SB(src7, src6, src8, src7, src9, src8, src10, src9,
 
 1829                        src76_r, src87_r, src98_r, src109_r);
 
 1830             ILVL_B4_SB(src7, src6, src8, src7, src9, src8, src10, src9,
 
 1831                        src76_l, src87_l, src98_l, src109_l);
 
 1834                                  filt1, filt2, filt3, dst0, dst1);
 
 1836                                  filt1, filt2, filt3, dst2, dst3);
 
 1838                                  filt1, filt2, filt3, dst4, dst5);
 
 1840                                  filt1, filt2, filt3, dst6, dst7);
 
 1842                                  filt1, filt2, filt3, dst8, dst9);
 
 1844                                  filt1, filt2, filt3, dst10, dst11);
 
 1846                                  filt1, filt2, filt3, dst12, dst13);
 
 1848                                  filt1, filt2, filt3, dst14, dst15);
 
 1850             MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1851                  weight_vec, dst0, dst1, dst2, dst3)
 
 1852             MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1853                  weight_vec, dst4, dst5, dst6, dst7);
 
 1854             MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 1855                  weight_vec, dst8, dst9, dst10, dst11);
 
 1856             MUL4(dst12, weight_vec, dst13, weight_vec, dst14, weight_vec, dst15,
 
 1857                  weight_vec, dst12, dst13, dst14, dst15);
 
 1860             SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 1861             SRAR_W4_SW(dst12, dst13, dst14, dst15, rnd_vec);
 
 1862             ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1863                  offset_vec, dst0, dst1, dst2, dst3);
 
 1864             ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1865                  offset_vec, dst4, dst5, dst6, dst7);
 
 1866             ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 1867                  offset_vec, dst8, dst9, dst10, dst11);
 
 1868             ADD4(dst12, offset_vec, dst13, offset_vec, dst14, offset_vec, dst15,
 
 1869                  offset_vec, dst12, dst13, dst14, dst15);
 
 1871             CLIP_SW8_0_255(dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15);
 
 1872             PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1873                         vec0, vec1, vec2, vec3);
 
 1874             PCKEV_H4_SH(dst9, dst8, dst11, dst10, dst13, dst12, dst15,
 
 1875                         dst14, vec4, vec5, vec6, vec7);
 
 1876             PCKEV_B4_UB(vec1, vec0, vec3, vec2, vec5, vec4, vec7, vec6,
 
 1877                         out0, out1, out2, out3);
 
 1879             ST_UB4(out0, out1, out2, out3, dst_tmp, dst_stride);
 
 1880             dst_tmp += (4 * dst_stride);
 
 1891             LD_SB2(src_tmp, src_stride, src7, src8);
 
 1894                        src10_r, src32_r, src54_r, src21_r);
 
 1895             ILVR_B2_SB(src4, src3, src6, src5, src43_r, src65_r);
 
 1897                        src10_l, src32_l, src54_l, src21_l);
 
 1898             ILVL_B2_SB(src4, src3, src6, src5, src43_l, src65_l);
 
 1899             ILVR_B2_SB(src7, src6, src8, src7, src76_r, src87_r);
 
 1900             ILVL_B2_SB(src7, src6, src8, src7, src76_l, src87_l);
 
 1903                                  filt1, filt2, filt3, dst0, dst1);
 
 1905                                  filt1, filt2, filt3, dst2, dst3);
 
 1907                                  filt1, filt2, filt3, dst4, dst5);
 
 1909                                  filt1, filt2, filt3, dst6, dst7);
 
 1910             MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 1911                  weight_vec, dst0, dst1, dst2, dst3)
 
 1912             MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec, dst7,
 
 1913                  weight_vec, dst4, dst5, dst6, dst7);
 
 1916             ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 1917                  offset_vec, dst0, dst1, dst2, dst3);
 
 1918             ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 1919                  offset_vec, dst4, dst5, dst6, dst7);
 
 1921             PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6,
 
 1922                         vec0, vec1, vec2, vec3);
 
 1925             ST_UB2(out0, out1, dst_tmp, dst_stride);
 
 2015                                      const int8_t *filter_x,
 
 2016                                      const int8_t *filter_y,
 
 2024     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 2025     v8i16 filt0, filt1, filt2, filt3;
 
 2026     v8i16 filt_h0, filt_h1, filt_h2, filt_h3;
 
 2027     v16i8 mask1, mask2, mask3;
 
 2029     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 2030     v16i8 vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;
 
 2031     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, dst8, dst9, dst10;
 
 2032     v8i16 dst10_r, dst32_r, dst54_r, dst76_r, dst98_r;
 
 2033     v8i16 dst21_r, dst43_r, dst65_r, dst87_r, dst109_r;
 
 2034     v4i32 dst0_r, dst1_r, dst2_r, dst3_r;
 
 2035     v4i32 weight_vec, offset_vec, rnd_vec;
 
 2039     src -= ((3 * src_stride) + 3);
 
 2040     filter_vec = 
LD_SH(filter_x);
 
 2044     filter_vec = 
LD_SH(filter_y);
 
 2046     SPLATI_W4_SH(filter_vec, filt_h0, filt_h1, filt_h2, filt_h3);
 
 2052     weight_vec = __msa_fill_w(
weight);
 
 2053     offset_vec = __msa_fill_w(
offset);
 
 2054     rnd_vec = __msa_fill_w(rnd_val);
 
 2057     src += (7 * src_stride);
 
 2060     VSHF_B4_SB(
src0, src3, mask0, mask1, mask2, mask3, vec0, vec1, vec2, vec3);
 
 2061     VSHF_B4_SB(
src1, src4, mask0, mask1, mask2, mask3, vec4, vec5, vec6, vec7);
 
 2063                vec8, vec9, vec10, vec11);
 
 2064     VSHF_B4_SB(src3, src6, mask0, mask1, mask2, mask3,
 
 2065                vec12, vec13, vec14, vec15);
 
 2072     vec0 = __msa_ilvl_b((v16i8) 
zero, (v16i8) vec12);
 
 2073     vec1 = __msa_ilvl_b((v16i8) 
zero, (v16i8) vec13);
 
 2074     vec2 = __msa_ilvl_b((v16i8) 
zero, (v16i8) vec14);
 
 2075     vec3 = __msa_ilvl_b((v16i8) 
zero, (v16i8) vec15);
 
 2076     dst6 = __msa_dotp_s_w((v8i16) vec0, (v8i16) filt0);
 
 2077     dst6 = __msa_dpadd_s_w((v4i32) dst6, (v8i16) vec1, (v8i16) filt1);
 
 2078     dst6 = __msa_dpadd_s_w((v4i32) dst6, (v8i16) vec2, (v8i16) filt2);
 
 2079     dst6 = __msa_dpadd_s_w((v4i32) dst6, (v8i16) vec3, (v8i16) filt3);
 
 2081     ILVEV_H2_SH(dst0, dst1, dst3, dst4, dst10_r, dst43_r);
 
 2082     ILVEV_H2_SH(dst1, dst2, dst4, dst5, dst21_r, dst54_r);
 
 2083     ILVEV_H2_SH(dst2, dst3, dst5, dst6, dst32_r, dst65_r);
 
 2085     for (loop_cnt = 
height >> 2; loop_cnt--;) {
 
 2086         LD_SB4(
src, src_stride, src7, src8, src9, src10);
 
 2087         src += (4 * src_stride);
 
 2089         VSHF_B4_SB(src7, src9, mask0, mask1, mask2, mask3,
 
 2090                    vec0, vec1, vec2, vec3);
 
 2091         VSHF_B4_SB(src8, src10, mask0, mask1, mask2, mask3,
 
 2092                    vec4, vec5, vec6, vec7);
 
 2096                              filt3, dst8, dst10);
 
 2098         dst76_r = __msa_ilvev_h((v8i16) dst7, (v8i16) dst6);
 
 2099         ILVEV_H2_SH(dst7, dst8, dst9, dst10, dst87_r, dst109_r);
 
 2100         dst98_r = __msa_ilvev_h((v8i16) dst9, (v8i16) dst8);
 
 2102         dst0_r = 
HEVC_FILT_8TAP(dst10_r, dst32_r, dst54_r, dst76_r, filt_h0,
 
 2103                                 filt_h1, filt_h2, filt_h3);
 
 2104         dst1_r = 
HEVC_FILT_8TAP(dst21_r, dst43_r, dst65_r, dst87_r, filt_h0,
 
 2105                                 filt_h1, filt_h2, filt_h3);
 
 2106         dst2_r = 
HEVC_FILT_8TAP(dst32_r, dst54_r, dst76_r, dst98_r, filt_h0,
 
 2107                                 filt_h1, filt_h2, filt_h3);
 
 2108         dst3_r = 
HEVC_FILT_8TAP(dst43_r, dst65_r, dst87_r, dst109_r, filt_h0,
 
 2109                                 filt_h1, filt_h2, filt_h3);
 
 2111         SRA_4V(dst0_r, dst1_r, dst2_r, dst3_r, 6);
 
 2112         MUL2(dst0_r, weight_vec, dst1_r, weight_vec, dst0_r, dst1_r);
 
 2113         MUL2(dst2_r, weight_vec, dst3_r, weight_vec, dst2_r, dst3_r);
 
 2114         SRAR_W4_SW(dst0_r, dst1_r, dst2_r, dst3_r, rnd_vec);
 
 2115         ADD2(dst0_r, offset_vec, dst1_r, offset_vec, dst0_r, dst1_r);
 
 2116         ADD2(dst2_r, offset_vec, dst3_r, offset_vec, dst2_r, dst3_r);
 
 2118         PCKEV_H2_SW(dst1_r, dst0_r, dst3_r, dst2_r, dst0_r, dst1_r);
 
 2119         out = (v16u8) __msa_pckev_b((v16i8) dst1_r, (v16i8) dst0_r);
 
 2121         dst += (4 * dst_stride);
 
 2137                                               const int8_t *filter_x,
 
 2138                                               const int8_t *filter_y,
 
 2145     uint32_t loop_cnt, cnt;
 
 2146     const uint8_t *src_tmp;
 
 2148     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8;
 
 2149     v8i16 filt0, filt1, filt2, filt3;
 
 2150     v8i16 filt_h0, filt_h1, filt_h2, filt_h3;
 
 2151     v16i8 mask1, mask2, mask3;
 
 2153     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 2154     v16i8 vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;
 
 2155     v4i32 dst0_r, dst0_l, dst1_r, dst1_l;
 
 2156     v8i16 dst10_r, dst32_r, dst54_r, dst76_r;
 
 2157     v8i16 dst10_l, dst32_l, dst54_l, dst76_l;
 
 2158     v8i16 dst21_r, dst43_r, dst65_r, dst87_r;
 
 2159     v8i16 dst21_l, dst43_l, dst65_l, dst87_l;
 
 2160     v4i32 weight_vec, offset_vec, rnd_vec;
 
 2161     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, dst8, dst9, dst10;
 
 2162     v4i32 dst11, dst12, dst13, dst14, dst15;
 
 2166     src -= ((3 * src_stride) + 3);
 
 2168     weight_vec = __msa_fill_w(
weight);
 
 2169     offset_vec = __msa_fill_w(
offset);
 
 2170     rnd_vec = __msa_fill_w(rnd_val);
 
 2173     filter_vec = 
LD_SH(filter_x);
 
 2177     filter_vec = 
LD_SH(filter_y);
 
 2179     SPLATI_W4_SW(filter_vec, filt_h0, filt_h1, filt_h2, filt_h3);
 
 2185     for (cnt = 
width >> 3; cnt--;) {
 
 2190         src_tmp += (7 * src_stride);
 
 2193                    vec0, vec1, vec2, vec3);
 
 2195                    vec4, vec5, vec6, vec7);
 
 2197                    vec8, vec9, vec10, vec11);
 
 2198         VSHF_B4_SB(src3, src3, mask0, mask1, mask2, mask3,
 
 2199                    vec12, vec13, vec14, vec15);
 
 2207                              filt2, filt3, dst6, dst7);
 
 2209         VSHF_B4_SB(src4, src4, mask0, mask1, mask2, mask3,
 
 2210                    vec0, vec1, vec2, vec3);
 
 2211         VSHF_B4_SB(src5, src5, mask0, mask1, mask2, mask3,
 
 2212                    vec4, vec5, vec6, vec7);
 
 2213         VSHF_B4_SB(src6, src6, mask0, mask1, mask2, mask3,
 
 2214                    vec8, vec9, vec10, vec11);
 
 2218                              filt3, dst10, dst11);
 
 2220                              filt3, dst12, dst13);
 
 2222         ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst10_r, dst10_l);
 
 2223         ILVEV_H2_SH(dst2, dst4, dst3, dst5, dst21_r, dst21_l);
 
 2224         ILVEV_H2_SH(dst4, dst6, dst5, dst7, dst32_r, dst32_l);
 
 2225         ILVEV_H2_SH(dst6, dst8, dst7, dst9, dst43_r, dst43_l);
 
 2226         ILVEV_H2_SH(dst8, dst10, dst9, dst11, dst54_r, dst54_l);
 
 2227         ILVEV_H2_SH(dst10, dst12, dst11, dst13, dst65_r, dst65_l);
 
 2229         for (loop_cnt = 
height >> 1; loop_cnt--;) {
 
 2230             LD_SB2(src_tmp, src_stride, src7, src8);
 
 2231             src_tmp += 2 * src_stride;
 
 2233             VSHF_B4_SB(src7, src7, mask0, mask1, mask2, mask3,
 
 2234                        vec0, vec1, vec2, vec3);
 
 2236                                  filt2, filt3, dst14, dst15);
 
 2238             ILVEV_H2_SH(dst12, dst14, dst13, dst15, dst76_r, dst76_l);
 
 2240                                     filt_h0, filt_h1, filt_h2, filt_h3);
 
 2242                                     filt_h0, filt_h1, filt_h2, filt_h3);
 
 2247             VSHF_B4_SB(src8, src8, mask0, mask1, mask2, mask3,
 
 2248                        vec0, vec1, vec2, vec3);
 
 2250                                  filt2, filt3, dst0, dst1);
 
 2252             ILVEV_H2_SH(dst14, dst0, dst15, dst1, dst87_r, dst87_l);
 
 2254                                     filt_h0, filt_h1, filt_h2, filt_h3);
 
 2256                                     filt_h0, filt_h1, filt_h2, filt_h3);
 
 2260             MUL2(dst0_r, weight_vec, dst0_l, weight_vec, dst0_r, dst0_l);
 
 2261             MUL2(dst1_r, weight_vec, dst1_l, weight_vec, dst1_r, dst1_l);
 
 2262             SRAR_W4_SW(dst0_r, dst1_r, dst0_l, dst1_l, rnd_vec);
 
 2263             ADD2(dst0_r, offset_vec, dst0_l, offset_vec, dst0_r, dst0_l);
 
 2264             ADD2(dst1_r, offset_vec, dst1_l, offset_vec, dst1_r, dst1_l);
 
 2267             PCKEV_H2_SW(dst0_l, dst0_r, dst1_l, dst1_r, dst0_r, dst1_r);
 
 2268             dst0_r = (v4i32) __msa_pckev_b((v16i8) dst1_r, (v16i8) dst0_r);
 
 2269             ST_D2(dst0_r, 0, 1, dst_tmp, dst_stride);
 
 2270             dst_tmp += (2 * dst_stride);
 
 2297                                      const int8_t *filter_x,
 
 2298                                      const int8_t *filter_y,
 
 2313                                       const int8_t *filter_x,
 
 2314                                       const int8_t *filter_y,
 
 2321     const uint8_t *src_tmp;
 
 2324     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 2325     v16i8 mask0, mask1, mask2, mask3, mask4, mask5, mask6, mask7;
 
 2326     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 2327     v16i8 vec8, vec9, vec10, vec11, vec12, vec13, vec14, vec15;
 
 2328     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 2329     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 2330     v8i16 filt0, filt1, filt2, filt3, filt_h0, filt_h1, filt_h2, filt_h3;
 
 2331     v8i16 dst10_r, dst32_r, dst54_r, dst76_r, dst10_l, dst32_l, dst54_l;
 
 2332     v8i16 dst98_r, dst21_r, dst43_r, dst65_r, dst87_r, dst109_r;
 
 2333     v8i16 dst76_l, filter_vec;
 
 2334     v4i32 dst0_r, dst0_l, dst1_r, dst2_r, dst3_r;
 
 2335     v4i32 weight_vec, offset_vec, rnd_vec;
 
 2338     src -= ((3 * src_stride) + 3);
 
 2340     filter_vec = 
LD_SH(filter_x);
 
 2344     filter_vec = 
LD_SH(filter_y);
 
 2347     SPLATI_W4_SH(filter_vec, filt_h0, filt_h1, filt_h2, filt_h3);
 
 2349     weight_vec = __msa_fill_w(
weight);
 
 2350     offset_vec = __msa_fill_w(
offset);
 
 2351     rnd_vec = __msa_fill_w(rnd_val);
 
 2362     src_tmp += (7 * src_stride);
 
 2369     VSHF_B4_SB(src3, src3, mask0, mask1, mask2, mask3, vec12, vec13, vec14,
 
 2378                          filt2, filt3, dst6, dst7);
 
 2379     VSHF_B4_SB(src4, src4, mask0, mask1, mask2, mask3, vec0, vec1, vec2, vec3);
 
 2380     VSHF_B4_SB(src5, src5, mask0, mask1, mask2, mask3, vec4, vec5, vec6, vec7);
 
 2381     VSHF_B4_SB(src6, src6, mask0, mask1, mask2, mask3, vec8, vec9, vec10,
 
 2386                          filt3, dst10, dst11);
 
 2388                          filt3, dst12, dst13);
 
 2390     for (loop_cnt = 16; loop_cnt--;) {
 
 2391         src7 = 
LD_SB(src_tmp);
 
 2392         src_tmp += src_stride;
 
 2394         VSHF_B4_SB(src7, src7, mask0, mask1, mask2, mask3, vec0, vec1, vec2,
 
 2397                              filt3, dst14, dst15);
 
 2398         ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst10_r, dst10_l);
 
 2399         ILVEV_H2_SH(dst4, dst6, dst5, dst7, dst32_r, dst32_l);
 
 2400         ILVEV_H2_SH(dst8, dst10, dst9, dst11, dst54_r, dst54_l);
 
 2401         ILVEV_H2_SH(dst12, dst14, dst13, dst15, dst76_r, dst76_l);
 
 2404                                 filt_h0, filt_h1, filt_h2, filt_h3);
 
 2406                                 filt_h0, filt_h1, filt_h2, filt_h3);
 
 2410         MUL2(dst0_r, weight_vec, dst0_l, weight_vec, dst0_r, dst0_l);
 
 2412         ADD2(dst0_r, offset_vec, dst0_l, offset_vec, dst0_r, dst0_l);
 
 2414         dst0_r = (v4i32) __msa_pckev_h((v8i16) dst0_l, (v8i16) dst0_r);
 
 2415         out = (v16u8) __msa_pckev_b((v16i8) dst0_r, (v16i8) dst0_r);
 
 2417         dst_tmp += dst_stride;
 
 2444     src += (7 * src_stride);
 
 2446     VSHF_B4_SB(
src0, src3, mask4, mask5, mask6, mask7, vec0, vec1, vec2, vec3);
 
 2447     VSHF_B4_SB(
src1, src4, mask4, mask5, mask6, mask7, vec4, vec5, vec6, vec7);
 
 2448     VSHF_B4_SB(
src2, src5, mask4, mask5, mask6, mask7, vec8, vec9, vec10,
 
 2450     VSHF_B4_SB(src3, src6, mask4, mask5, mask6, mask7, vec12, vec13, vec14,
 
 2460     ILVEV_H2_SH(dst0, dst1, dst3, dst4, dst10_r, dst43_r);
 
 2461     ILVEV_H2_SH(dst1, dst2, dst4, dst5, dst21_r, dst54_r);
 
 2462     ILVEV_H2_SH(dst2, dst3, dst5, dst6, dst32_r, dst65_r);
 
 2464     for (loop_cnt = 4; loop_cnt--;) {
 
 2465         LD_SB4(
src, src_stride, src7, src8, src9, src10);
 
 2466         src += (4 * src_stride);
 
 2468         VSHF_B4_SB(src7, src9, mask4, mask5, mask6, mask7, vec0, vec1, vec2,
 
 2470         VSHF_B4_SB(src8, src10, mask4, mask5, mask6, mask7, vec4, vec5, vec6,
 
 2475                              filt3, dst8, dst10);
 
 2477         ILVEV_H2_SH(dst6, dst7, dst7, dst8, dst76_r, dst87_r);
 
 2478         ILVEV_H2_SH(dst9, dst10, dst8, dst9, dst109_r, dst98_r);
 
 2480         dst0_r = 
HEVC_FILT_8TAP(dst10_r, dst32_r, dst54_r, dst76_r, filt_h0,
 
 2481                                 filt_h1, filt_h2, filt_h3);
 
 2482         dst1_r = 
HEVC_FILT_8TAP(dst21_r, dst43_r, dst65_r, dst87_r, filt_h0,
 
 2483                                 filt_h1, filt_h2, filt_h3);
 
 2484         dst2_r = 
HEVC_FILT_8TAP(dst32_r, dst54_r, dst76_r, dst98_r, filt_h0,
 
 2485                                 filt_h1, filt_h2, filt_h3);
 
 2486         dst3_r = 
HEVC_FILT_8TAP(dst43_r, dst65_r, dst87_r, dst109_r, filt_h0,
 
 2487                                 filt_h1, filt_h2, filt_h3);
 
 2489         SRA_4V(dst0_r, dst1_r, dst2_r, dst3_r, 6);
 
 2490         MUL2(dst0_r, weight_vec, dst1_r, weight_vec, dst0_r, dst1_r);
 
 2491         MUL2(dst2_r, weight_vec, dst3_r, weight_vec, dst2_r, dst3_r);
 
 2492         SRAR_W4_SW(dst0_r, dst1_r, dst2_r, dst3_r, rnd_vec);
 
 2493         ADD2(dst0_r, offset_vec, dst1_r, offset_vec, dst0_r, dst1_r);
 
 2494         ADD2(dst2_r, offset_vec, dst3_r, offset_vec, dst2_r, dst3_r);
 
 2496         PCKEV_H2_SW(dst1_r, dst0_r, dst3_r, dst2_r, dst0_r, dst1_r);
 
 2497         out = (v16u8) __msa_pckev_b((v16i8) dst1_r, (v16i8) dst0_r);
 
 2499         dst += (4 * dst_stride);
 
 2515                                       const int8_t *filter_x,
 
 2516                                       const int8_t *filter_y,
 
 2531                                       const int8_t *filter_x,
 
 2532                                       const int8_t *filter_y,
 
 2547                                       const int8_t *filter_x,
 
 2548                                       const int8_t *filter_y,
 
 2563                                       const int8_t *filter_x,
 
 2564                                       const int8_t *filter_y,
 
 2579                                       const int8_t *filter_x,
 
 2580                                       const int8_t *filter_y,
 
 2601     v8i16 filt0, filt1, filter_vec;
 
 2603     v8i16 tmp0, tmp1, tmp2, tmp3;
 
 2606     v4i32 weight_vec, rnd_vec, offset_vec;
 
 2618     weight_vec = __msa_fill_w(
weight);
 
 2619     rnd_vec = __msa_fill_w(rnd_val);
 
 2620     offset_vec = __msa_fill_w(
offset);
 
 2630     MUL2(dst0, weight_vec, dst1, weight_vec, dst0, dst1);
 
 2632     ADD2(dst0, offset_vec, dst1, offset_vec, dst0, dst1);
 
 2634     vec0 = __msa_pckev_h((v8i16) dst1, (v8i16) dst0);
 
 2635     out = (v16u8) __msa_pckev_b((v16i8) vec0, (v16i8) vec0);
 
 2637     dst += (4 * dst_stride);
 
 2652     v16i8 mask1, vec0, vec1, vec2, vec3;
 
 2653     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 2654     v4i32 dst0, dst1, dst2, dst3;
 
 2656     v4i32 weight_vec, rnd_vec, offset_vec;
 
 2667     weight_vec = __msa_fill_w(
weight);
 
 2668     rnd_vec = __msa_fill_w(rnd_val);
 
 2669     offset_vec = __msa_fill_w(
offset);
 
 2685     MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 2686          weight_vec, dst0, dst1, dst2, dst3);
 
 2688     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 2689          offset_vec, dst0, dst1, dst2, dst3);
 
 2691     tmp0 = __msa_pckev_h((v8i16) dst1, (v8i16) dst0);
 
 2692     tmp1 = __msa_pckev_h((v8i16) dst3, (v8i16) dst2);
 
 2694     out = (v16u8) __msa_pckev_b((v16i8) tmp1, (v16i8) tmp0);
 
 2712     v16i8 mask1, vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 2713     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 2714     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 2716     v4i32 weight_vec, rnd_vec, offset_vec;
 
 2726     weight_vec = __msa_fill_w(
weight);
 
 2727     rnd_vec = __msa_fill_w(rnd_val);
 
 2728     offset_vec = __msa_fill_w(
offset);
 
 2732     for (loop_cnt = (
height >> 3); loop_cnt--;) {
 
 2734         src += (8 * src_stride);
 
 2738         VSHF_B2_SB(src4, src5, src4, src5, mask0, mask1, vec4, vec5);
 
 2739         VSHF_B2_SB(src6, src7, src6, src7, mask0, mask1, vec6, vec7);
 
 2757         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 2758              weight_vec, dst0, dst1, dst2, dst3);
 
 2759         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 2760              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 2763         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 2764              offset_vec, dst0, dst1, dst2, dst3);
 
 2765         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 2766              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 2768         tmp0 = __msa_pckev_h((v8i16) dst1, (v8i16) dst0);
 
 2769         tmp1 = __msa_pckev_h((v8i16) dst3, (v8i16) dst2);
 
 2770         tmp2 = __msa_pckev_h((v8i16) dst5, (v8i16) dst4);
 
 2771         tmp3 = __msa_pckev_h((v8i16) dst7, (v8i16) dst6);
 
 2773         ST_W8(out0, out1, 0, 1, 2, 3, 0, 1, 2, 3, 
dst, dst_stride);
 
 2774         dst += (8 * dst_stride);
 
 2791     } 
else if (4 == 
height) {
 
 2811     v16u8 out0, out1, out2, out3;
 
 2812     v8i16 filter_vec, filt0, filt1;
 
 2816     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 2817     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 2818     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 2819     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 2820     v4i32 weight_vec, rnd_vec, offset_vec;
 
 2829     weight_vec = __msa_fill_w(
weight);
 
 2830     rnd_vec = __msa_fill_w(rnd_val);
 
 2831     offset_vec = __msa_fill_w(
offset);
 
 2839     VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec6, vec7);
 
 2856     VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec0, vec1);
 
 2857     VSHF_B2_SB(src5, src5, src5, src5, mask0, mask1, vec2, vec3);
 
 2858     VSHF_B2_SB(src6, src6, src6, src6, mask0, mask1, vec4, vec5);
 
 2859     VSHF_B2_SB(src7, src7, src7, src7, mask0, mask1, vec6, vec7);
 
 2877     MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 2878          weight_vec, dst0, dst1, dst2, dst3);
 
 2879     MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 2880          dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 2883     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 2884          offset_vec, dst0, dst1, dst2, dst3);
 
 2885     ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 2886          dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 2889     MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 2890          weight_vec, dst8, dst9, dst10, dst11);
 
 2891     MUL4(dst12, weight_vec, dst13, weight_vec, dst14, weight_vec,
 
 2892          dst15, weight_vec, dst12, dst13, dst14, dst15);
 
 2893     SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 2894     SRAR_W4_SW(dst12, dst13, dst14, dst15, rnd_vec);
 
 2895     ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 2896          offset_vec, dst8, dst9, dst10, dst11);
 
 2897     ADD4(dst12, offset_vec, dst13, offset_vec, dst14, offset_vec,
 
 2898          dst15, offset_vec, dst12, dst13, dst14, dst15);
 
 2899     CLIP_SW8_0_255(dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15);
 
 2903     PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 2904     PCKEV_H2_SH(dst13, dst12, dst15, dst14, tmp6, tmp7);
 
 2907     ST_W2(out0, 0, 2, 
dst, dst_stride);
 
 2908     ST_H2(out0, 2, 6, 
dst + 4, dst_stride);
 
 2909     ST_W2(out1, 0, 2, 
dst + 2 * dst_stride, dst_stride);
 
 2910     ST_H2(out1, 2, 6, 
dst + 2 * dst_stride + 4, dst_stride);
 
 2911     dst += (4 * dst_stride);
 
 2912     ST_W2(out2, 0, 2, 
dst, dst_stride);
 
 2913     ST_H2(out2, 2, 6, 
dst + 4, dst_stride);
 
 2914     ST_W2(out3, 0, 2, 
dst + 2 * dst_stride, dst_stride);
 
 2915     ST_H2(out3, 2, 6, 
dst + 2 * dst_stride + 4, dst_stride);
 
 2928     v8i16 filter_vec, filt0, filt1;
 
 2932     v16i8 vec0, vec1, vec2, vec3;
 
 2933     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 2934     v4i32 weight_vec, rnd_vec, offset_vec;
 
 2935     v4i32 dst0, dst1, dst2, dst3;
 
 2944     weight_vec = __msa_fill_w(
weight);
 
 2945     rnd_vec = __msa_fill_w(rnd_val);
 
 2946     offset_vec = __msa_fill_w(
offset);
 
 2962     MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 2963          weight_vec, dst0, dst1, dst2, dst3);
 
 2965     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 2966          offset_vec, dst0, dst1, dst2, dst3);
 
 2970     out = (v16u8) __msa_pckev_b((v16i8) tmp1, (v16i8) tmp0);
 
 2985     v16i8 mask0, mask1, vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 2986     v8i16 filter_vec, filt0, filt1;
 
 2987     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 2988     v4i32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 2989     v4i32 weight_vec, rnd_vec, offset_vec;
 
 2998     weight_vec = __msa_fill_w(
weight);
 
 2999     rnd_vec = __msa_fill_w(rnd_val);
 
 3000     offset_vec = __msa_fill_w(
offset);
 
 3009     VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec6, vec7);
 
 3027     MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 3028          weight_vec, dst0, dst1, dst2, dst3);
 
 3029     MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 3030          dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 3033     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 3034          offset_vec, dst0, dst1, dst2, dst3);
 
 3035     ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 3036          dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 3043     ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
 3055     v16u8 out0, out1, out2;
 
 3056     v8i16 filter_vec, filt0, filt1;
 
 3061     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7, vec8, vec9, vec10;
 
 3062     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 3063     v4i32 dst8, dst9, dst10, dst11;
 
 3064     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 3065     v4i32 weight_vec, rnd_vec, offset_vec;
 
 3074     weight_vec = __msa_fill_w(
weight);
 
 3075     rnd_vec = __msa_fill_w(rnd_val);
 
 3076     offset_vec = __msa_fill_w(
offset);
 
 3085     VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec6, vec7);
 
 3086     VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec8, vec9);
 
 3087     VSHF_B2_SB(src5, src5, src5, src5, mask0, mask1, vec10, vec11);
 
 3113     MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 3114          weight_vec, dst0, dst1, dst2, dst3);
 
 3115     MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 3116          dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 3119     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 3120          offset_vec, dst0, dst1, dst2, dst3);
 
 3121     ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 3122          dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 3125     MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 3126          weight_vec, dst8, dst9, dst10, dst11);
 
 3127     SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 3128     ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 3129          offset_vec, dst8, dst9, dst10, dst11);
 
 3134     PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 3136     PCKEV_B3_UB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp4, out0, out1, out2);
 
 3137     ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
 3138     ST_D2(out2, 0, 1, 
dst + 4 * dst_stride, dst_stride);
 
 3152     v8i16 filter_vec, filt0, filt1;
 
 3153     v16u8 out0, out1, out2, out3;
 
 3157     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 3158     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 3159     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 3160     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 3161     v4i32 weight_vec, rnd_vec, offset_vec;
 
 3170     weight_vec = __msa_fill_w(
weight);
 
 3171     rnd_vec = __msa_fill_w(rnd_val);
 
 3172     offset_vec = __msa_fill_w(
offset);
 
 3176     for (loop_cnt = (
height >> 3); loop_cnt--;) {
 
 3178         src += (8 * src_stride);
 
 3183         VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec6, vec7);
 
 3201         VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec0, vec1);
 
 3202         VSHF_B2_SB(src5, src5, src5, src5, mask0, mask1, vec2, vec3);
 
 3203         VSHF_B2_SB(src6, src6, src6, src6, mask0, mask1, vec4, vec5);
 
 3204         VSHF_B2_SB(src7, src7, src7, src7, mask0, mask1, vec6, vec7);
 
 3222         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 3223              weight_vec, dst0, dst1, dst2, dst3);
 
 3224         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 3225              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 3228         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 3229              offset_vec, dst0, dst1, dst2, dst3);
 
 3230         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 3231              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 3234         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 3235              weight_vec, dst8, dst9, dst10, dst11);
 
 3236         MUL4(dst12, weight_vec, dst13, weight_vec, dst14, weight_vec,
 
 3237              dst15, weight_vec, dst12, dst13, dst14, dst15);
 
 3238         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 3239         SRAR_W4_SW(dst12, dst13, dst14, dst15, rnd_vec);
 
 3240         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 3241              offset_vec, dst8, dst9, dst10, dst11);
 
 3242         ADD4(dst12, offset_vec, dst13, offset_vec, dst14, offset_vec,
 
 3243              dst15, offset_vec, dst12, dst13, dst14, dst15);
 
 3244         CLIP_SW8_0_255(dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15);
 
 3248         PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 3249         PCKEV_H2_SH(dst13, dst12, dst15, dst14, tmp6, tmp7);
 
 3253         ST_D8(out0, out1, out2, out3, 0, 1, 0, 1, 0, 1, 0, 1, 
dst, dst_stride);
 
 3254         dst += (8 * dst_stride);
 
 3271     } 
else if (4 == 
height) {
 
 3274     } 
else if (6 == 
height) {
 
 3295     v16u8 out0, out1, out2;
 
 3296     v8i16 filter_vec, filt0, filt1;
 
 3299     v16i8 mask2 = { 8, 9, 9, 10, 10, 11, 11, 12, 24, 25, 25, 26, 26, 27, 27, 28
 
 3302     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7, vec8, vec9, vec10;
 
 3303     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 3304     v4i32 dst8, dst9, dst10, dst11;
 
 3305     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 3307     v4i32 weight_vec, rnd_vec, offset_vec;
 
 3316     weight_vec = __msa_fill_w(
weight);
 
 3317     rnd_vec = __msa_fill_w(rnd_val);
 
 3318     offset_vec = __msa_fill_w(
offset);
 
 3323     for (loop_cnt = 4; loop_cnt--;) {
 
 3325         src += (4 * src_stride);
 
 3330         VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec6, vec7);
 
 3359         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 3360              weight_vec, dst0, dst1, dst2, dst3);
 
 3361         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 3362              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 3365         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 3366              offset_vec, dst0, dst1, dst2, dst3);
 
 3367         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 3368              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 3371         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 3372              weight_vec, dst8, dst9, dst10, dst11);
 
 3373         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 3374         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 3375              offset_vec, dst8, dst9, dst10, dst11);
 
 3380         PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 3382         PCKEV_B3_UB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp4, out0, out1, out2);
 
 3383         ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
 3384         ST_W4(out2, 0, 1, 2, 3, 
dst + 8, dst_stride);
 
 3385         dst += (4 * dst_stride);
 
 3400     v16u8 out0, out1, out2, out3;
 
 3402     v8i16 filter_vec, filt0, filt1;
 
 3405     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 3406     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 3407     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 3408     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 3409     v4i32 weight_vec, rnd_vec, offset_vec;
 
 3418     weight_vec = __msa_fill_w(
weight);
 
 3419     rnd_vec = __msa_fill_w(rnd_val);
 
 3420     offset_vec = __msa_fill_w(
offset);
 
 3424     for (loop_cnt = (
height >> 2); loop_cnt--;) {
 
 3427         src += (4 * src_stride);
 
 3432         VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec6, vec7);
 
 3450         VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec0, vec1);
 
 3451         VSHF_B2_SB(src5, src5, src5, src5, mask0, mask1, vec2, vec3);
 
 3452         VSHF_B2_SB(src6, src6, src6, src6, mask0, mask1, vec4, vec5);
 
 3453         VSHF_B2_SB(src7, src7, src7, src7, mask0, mask1, vec6, vec7);
 
 3471         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 3472              weight_vec, dst0, dst1, dst2, dst3);
 
 3473         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 3474              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 3477         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 3478              offset_vec, dst0, dst1, dst2, dst3);
 
 3479         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 3480              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 3483         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 3484              weight_vec, dst8, dst9, dst10, dst11);
 
 3485         MUL4(dst12, weight_vec, dst13, weight_vec, dst14, weight_vec,
 
 3486              dst15, weight_vec, dst12, dst13, dst14, dst15);
 
 3487         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 3488         SRAR_W4_SW(dst12, dst13, dst14, dst15, rnd_vec);
 
 3489         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 3490              offset_vec, dst8, dst9, dst10, dst11);
 
 3491         ADD4(dst12, offset_vec, dst13, offset_vec, dst14, offset_vec,
 
 3492              dst15, offset_vec, dst12, dst13, dst14, dst15);
 
 3493         CLIP_SW8_0_255(dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15);
 
 3497         PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 3498         PCKEV_H2_SH(dst13, dst12, dst15, dst14, tmp6, tmp7);
 
 3499         PCKEV_B4_UB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp4, tmp7, tmp6,
 
 3500                     out0, out1, out2, out3);
 
 3502         ST_UB4(out0, out1, out2, out3, 
dst, dst_stride);
 
 3503         dst += (4 * dst_stride);
 
 3518     v16u8 out0, out1, out2;
 
 3520     v8i16 filter_vec, filt0, filt1;
 
 3521     v16i8 mask0, mask1, mask2, mask3;
 
 3522     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 3523     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 3524     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 3525     v4i32 dst8, dst9, dst10, dst11;
 
 3526     v4i32 weight_vec, rnd_vec, offset_vec;
 
 3535     weight_vec = __msa_fill_w(
weight);
 
 3536     rnd_vec = __msa_fill_w(rnd_val);
 
 3537     offset_vec = __msa_fill_w(
offset);
 
 3544     for (loop_cnt = 16; loop_cnt--;) {
 
 3547         src += (2 * src_stride);
 
 3571         VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec2, vec3);
 
 3581         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 3582              weight_vec, dst0, dst1, dst2, dst3);
 
 3583         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 3584              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 3587         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 3588              offset_vec, dst0, dst1, dst2, dst3);
 
 3589         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 3590              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 3593         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 3594              weight_vec, dst8, dst9, dst10, dst11);
 
 3595         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 3596         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 3597              offset_vec, dst8, dst9, dst10, dst11);
 
 3602         PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 3604         PCKEV_B3_UB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp4, out0, out1, out2);
 
 3606         ST_D2(out2, 0, 1, 
dst + 16, dst_stride);
 
 3607         dst += (2 * dst_stride);
 
 3622     v16u8 out0, out1, out2, out3;
 
 3624     v8i16 filter_vec, filt0, filt1;
 
 3626     v16i8 mask1, mask2, mask3;
 
 3627     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 3628     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 3629     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 3630     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 3631     v4i32 weight_vec, rnd_vec, offset_vec;
 
 3640     weight_vec = __msa_fill_w(
weight);
 
 3641     rnd_vec = __msa_fill_w(rnd_val);
 
 3642     offset_vec = __msa_fill_w(
offset);
 
 3648     for (loop_cnt = (
height >> 1); loop_cnt--;) {
 
 3676         VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec0, vec1);
 
 3677         VSHF_B2_SB(src3, src4, src3, src4, mask2, mask3, vec2, vec3);
 
 3678         VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec4, vec5);
 
 3679         VSHF_B2_SB(src5, src5, src5, src5, mask0, mask1, vec6, vec7);
 
 3697         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 3698              weight_vec, dst0, dst1, dst2, dst3);
 
 3699         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 3700              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 3703         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 3704              offset_vec, dst0, dst1, dst2, dst3);
 
 3705         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 3706              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 3709         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 3710              weight_vec, dst8, dst9, dst10, dst11);
 
 3711         MUL4(dst12, weight_vec, dst13, weight_vec, dst14, weight_vec,
 
 3712              dst15, weight_vec, dst12, dst13, dst14, dst15);
 
 3713         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 3714         SRAR_W4_SW(dst12, dst13, dst14, dst15, rnd_vec);
 
 3715         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 3716              offset_vec, dst8, dst9, dst10, dst11);
 
 3717         ADD4(dst12, offset_vec, dst13, offset_vec, dst14, offset_vec,
 
 3718              dst15, offset_vec, dst12, dst13, dst14, dst15);
 
 3719         CLIP_SW8_0_255(dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15);
 
 3723         PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 3724         PCKEV_H2_SH(dst13, dst12, dst15, dst14, tmp6, tmp7);
 
 3725         PCKEV_B4_UB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp4, tmp7, tmp6,
 
 3726                     out0, out1, out2, out3);
 
 3745     v16i8 src10_r, src32_r, src21_r, src43_r;
 
 3746     v16i8 src2110, src4332;
 
 3748     v4i32 dst0_r, dst0_l;
 
 3749     v8i16 filter_vec, filt0, filt1;
 
 3750     v8i16 tmp0, tmp1, tmp2, tmp3;
 
 3751     v4i32 weight_vec, rnd_vec, offset_vec;
 
 3756     weight_vec = __msa_fill_w(
weight);
 
 3757     rnd_vec = __msa_fill_w(rnd_val);
 
 3758     offset_vec = __msa_fill_w(
offset);
 
 3767     ILVR_D2_SB(src21_r, src10_r, src43_r, src32_r, src2110, src4332);
 
 3774     MUL2(dst0_r, weight_vec, dst0_l, weight_vec, dst0_r, dst0_l);
 
 3776     ADD2(dst0_r, offset_vec, dst0_l, offset_vec, dst0_r, dst0_l);
 
 3778     dst0 = __msa_pckev_h((v8i16) dst0_l, (v8i16) dst0_r);
 
 3779     out = (v16u8) __msa_pckev_b((v16i8) dst0, (v16i8) dst0);
 
 3794     v16i8 src10_r, src32_r, src54_r, src21_r, src43_r, src65_r;
 
 3795     v16i8 src2110, src4332, src6554;
 
 3796     v4i32 dst0, dst1, dst2, dst3;
 
 3797     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
 
 3798     v8i16 filter_vec, filt0, filt1;
 
 3799     v4i32 weight_vec, rnd_vec, offset_vec;
 
 3804     weight_vec = __msa_fill_w(
weight);
 
 3805     rnd_vec = __msa_fill_w(rnd_val);
 
 3806     offset_vec = __msa_fill_w(
offset);
 
 3815                src32_r, src43_r, src54_r, src65_r);
 
 3816     ILVR_D3_SB(src21_r, src10_r, src43_r, src32_r, src65_r, src54_r,
 
 3817                src2110, src4332, src6554);
 
 3828     MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 3829          weight_vec, dst0, dst1, dst2, dst3);
 
 3831     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 3832          offset_vec, dst0, dst1, dst2, dst3);
 
 3836     out = (v16u8) __msa_pckev_b((v16i8) tmp1, (v16i8) tmp0);
 
 3852     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 3853     v16i8 src10_r, src32_r, src54_r, src76_r, src98_r;
 
 3854     v16i8 src21_r, src43_r, src65_r, src87_r, src109_r;
 
 3855     v16i8 src2110, src4332, src6554, src8776;
 
 3857     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 3858     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 3859     v8i16 filter_vec, filt0, filt1;
 
 3860     v4i32 weight_vec, rnd_vec, offset_vec;
 
 3865     weight_vec = __msa_fill_w(
weight);
 
 3866     rnd_vec = __msa_fill_w(rnd_val);
 
 3867     offset_vec = __msa_fill_w(
offset);
 
 3874     src += (3 * src_stride);
 
 3876     src2110 = (v16i8) __msa_ilvr_d((v2i64) src21_r, (v2i64) src10_r);
 
 3878     for (loop_cnt = (
height >> 3); loop_cnt--;) {
 
 3880                src3, src4, src5, src6, src7, src8, src9, src10);
 
 3881         src += (8 * src_stride);
 
 3883                    src32_r, src43_r, src54_r, src65_r);
 
 3884         ILVR_B2_SB(src7, src6, src8, src7, src76_r, src87_r);
 
 3885         ILVR_B2_SB(src9, src8, src10, src9, src98_r, src109_r);
 
 3886         ILVR_D4_SB(src43_r, src32_r, src65_r, src54_r, src87_r, src76_r,
 
 3887                    src109_r, src98_r, src4332, src6554, src8776, src10998);
 
 3903         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 3904              weight_vec, dst0, dst1, dst2, dst3);
 
 3905         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 3906              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 3909         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 3910              offset_vec, dst0, dst1, dst2, dst3);
 
 3911         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 3912              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 3918         ST_W8(out0, out1, 0, 1, 2, 3, 0, 1, 2, 3, 
dst, dst_stride);
 
 3919         dst += (8 * dst_stride);
 
 3939     } 
else if (4 == 
height) {
 
 3942     } 
else if (0 == (
height % 8)) {
 
 3959     v16u8 out0, out1, out2, out3;
 
 3960     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 3961     v16i8 src10_r, src32_r, src21_r, src43_r;
 
 3962     v16i8 src54_r, src65_r, src76_r, src87_r, src98_r, src109_r;
 
 3963     v8i16 filter_vec, filt0, filt1;
 
 3964     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 3965     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 3966     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 3967     v4i32 weight_vec, rnd_vec, offset_vec;
 
 3972     weight_vec = __msa_fill_w(
weight);
 
 3973     rnd_vec = __msa_fill_w(rnd_val);
 
 3974     offset_vec = __msa_fill_w(
offset);
 
 3981     src += (3 * src_stride);
 
 3982     LD_SB8(
src, src_stride, src3, src4, src5, src6, src7, src8, src9, src10);
 
 3985     ILVR_B2_SB(src5, src4, src6, src5, src54_r, src65_r);
 
 3986     ILVR_B2_SB(src7, src6, src8, src7, src76_r, src87_r);
 
 3987     ILVR_B2_SB(src9, src8, src10, src9, src98_r, src109_r);
 
 4016     MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 4017          weight_vec, dst0, dst1, dst2, dst3);
 
 4018     MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 4019          dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 4022     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 4023          offset_vec, dst0, dst1, dst2, dst3);
 
 4024     ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 4025          dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 4028     MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 4029          weight_vec, dst8, dst9, dst10, dst11);
 
 4030     MUL4(dst12, weight_vec, dst13, weight_vec, dst14, weight_vec,
 
 4031          dst15, weight_vec, dst12, dst13, dst14, dst15);
 
 4032     SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 4033     SRAR_W4_SW(dst12, dst13, dst14, dst15, rnd_vec);
 
 4034     ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 4035          offset_vec, dst8, dst9, dst10, dst11);
 
 4036     ADD4(dst12, offset_vec, dst13, offset_vec, dst14, offset_vec,
 
 4037          dst15, offset_vec, dst12, dst13, dst14, dst15);
 
 4038     CLIP_SW8_0_255(dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15);
 
 4042     PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 4043     PCKEV_H2_SH(dst13, dst12, dst15, dst14, tmp6, tmp7);
 
 4047     ST_W2(out0, 0, 2, 
dst, dst_stride);
 
 4048     ST_H2(out0, 2, 6, 
dst + 4, dst_stride);
 
 4049     ST_W2(out1, 0, 2, 
dst + 2 * dst_stride, dst_stride);
 
 4050     ST_H2(out1, 2, 6, 
dst + 2 * dst_stride + 4, dst_stride);
 
 4051     dst += (4 * dst_stride);
 
 4052     ST_W2(out2, 0, 2, 
dst, dst_stride);
 
 4053     ST_H2(out2, 2, 6, 
dst + 4, dst_stride);
 
 4054     ST_W2(out3, 0, 2, 
dst + 2 * dst_stride, dst_stride);
 
 4055     ST_H2(out3, 2, 6, 
dst + 2 * dst_stride + 4, dst_stride);
 
 4069     v16i8 src10_r, src32_r, src21_r, src43_r;
 
 4070     v4i32 dst0, dst1, dst2, dst3;
 
 4071     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 4072     v8i16 filter_vec, filt0, filt1;
 
 4073     v4i32 weight_vec, rnd_vec, offset_vec;
 
 4078     weight_vec = __msa_fill_w(
weight);
 
 4079     rnd_vec = __msa_fill_w(rnd_val);
 
 4080     offset_vec = __msa_fill_w(
offset);
 
 4099     MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 4100          weight_vec, dst0, dst1, dst2, dst3);
 
 4102     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 4103          offset_vec, dst0, dst1, dst2, dst3);
 
 4107     out = (v16u8) __msa_pckev_b((v16i8) tmp1, (v16i8) tmp0);
 
 4122     v16i8 src10_r, src32_r, src21_r, src43_r;
 
 4123     v16i8 src5, src6, src54_r, src65_r;
 
 4124     v8i16 filter_vec, filt0, filt1;
 
 4125     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 4126     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 4127     v4i32 weight_vec, rnd_vec, offset_vec;
 
 4132     weight_vec = __msa_fill_w(
weight);
 
 4133     rnd_vec = __msa_fill_w(rnd_val);
 
 4134     offset_vec = __msa_fill_w(
offset);
 
 4143     ILVR_B2_SB(src5, src4, src6, src5, src54_r, src65_r);
 
 4160     MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 4161          weight_vec, dst0, dst1, dst2, dst3);
 
 4162     MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 4163          dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 4166     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 4167          offset_vec, dst0, dst1, dst2, dst3);
 
 4168     ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 4169          dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 4174     ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
 4186     v16u8 out0, out1, out2;
 
 4187     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8;
 
 4188     v16i8 src10_r, src32_r, src54_r, src76_r;
 
 4189     v16i8 src21_r, src43_r, src65_r, src87_r;
 
 4190     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 4191     v4i32 dst8, dst9, dst10, dst11;
 
 4192     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 4193     v8i16 filter_vec, filt0, filt1;
 
 4194     v4i32 weight_vec, rnd_vec, offset_vec;
 
 4198     weight_vec = __msa_fill_w(
weight);
 
 4199     rnd_vec = __msa_fill_w(rnd_val);
 
 4200     offset_vec = __msa_fill_w(
offset);
 
 4207     src += (3 * src_stride);
 
 4208     LD_SB6(
src, src_stride, src3, src4, src5, src6, src7, src8);
 
 4210     ILVR_B4_SB(
src1, 
src0, 
src2, 
src1, src3, 
src2, src4, src3, src10_r, src21_r,
 
 4212     ILVR_B4_SB(src5, src4, src6, src5, src7, src6, src8, src7, src54_r, src65_r,
 
 4236     MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 4237          weight_vec, dst0, dst1, dst2, dst3);
 
 4238     MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 4239          dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 4242     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 4243          offset_vec, dst0, dst1, dst2, dst3);
 
 4244     ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 4245          dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 4247     MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 4248          weight_vec, dst8, dst9, dst10, dst11);
 
 4249     SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 4250     ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 4251          offset_vec, dst8, dst9, dst10, dst11);
 
 4256     PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 4257     PCKEV_B3_UB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp4, out0, out1, out2);
 
 4258     ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
 4259     ST_D2(out2, 0, 1, 
dst + 4 * dst_stride, dst_stride);
 
 4273     v16u8 out0, out1, out2, out3;
 
 4274     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 4275     v16i8 src10_r, src32_r, src21_r, src43_r;
 
 4276     v16i8 src54_r, src65_r, src76_r, src87_r, src98_r, src109_r;
 
 4277     v8i16 filter_vec, filt0, filt1;
 
 4278     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 4279     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 4280     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 4281     v4i32 weight_vec, rnd_vec, offset_vec;
 
 4286     weight_vec = __msa_fill_w(
weight);
 
 4287     rnd_vec = __msa_fill_w(rnd_val);
 
 4288     offset_vec = __msa_fill_w(
offset);
 
 4295     src += (3 * src_stride);
 
 4298     for (loop_cnt = (
height >> 3); loop_cnt--;) {
 
 4300                src3, src4, src5, src6, src7, src8, src9, src10);
 
 4301         src += (8 * src_stride);
 
 4303         ILVR_B2_SB(src5, src4, src6, src5, src54_r, src65_r);
 
 4304         ILVR_B2_SB(src7, src6, src8, src7, src76_r, src87_r);
 
 4305         ILVR_B2_SB(src9, src8, src10, src9, src98_r, src109_r);
 
 4334         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 4335              weight_vec, dst0, dst1, dst2, dst3);
 
 4336         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 4337              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 4340         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 4341              offset_vec, dst0, dst1, dst2, dst3);
 
 4342         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 4343              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 4346         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 4347              weight_vec, dst8, dst9, dst10, dst11);
 
 4348         MUL4(dst12, weight_vec, dst13, weight_vec, dst14, weight_vec,
 
 4349              dst15, weight_vec, dst12, dst13, dst14, dst15);
 
 4350         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 4351         SRAR_W4_SW(dst12, dst13, dst14, dst15, rnd_vec);
 
 4352         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 4353              offset_vec, dst8, dst9, dst10, dst11);
 
 4354         ADD4(dst12, offset_vec, dst13, offset_vec, dst14, offset_vec,
 
 4355              dst15, offset_vec, dst12, dst13, dst14, dst15);
 
 4356         CLIP_SW8_0_255(dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15);
 
 4360         PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 4361         PCKEV_H2_SH(dst13, dst12, dst15, dst14, tmp6, tmp7);
 
 4365         ST_D8(out0, out1, out2, out3, 0, 1, 0, 1, 0, 1, 0, 1, 
dst, dst_stride);
 
 4366         dst += (8 * dst_stride);
 
 4387     } 
else if (4 == 
height) {
 
 4390     } 
else if (6 == 
height) {
 
 4411     v16u8 out0, out1, out2, out3, out4, out5;
 
 4412     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 4413     v16i8 src10_r, src32_r, src21_r, src43_r;
 
 4414     v16i8 src10_l, src32_l, src54_l, src21_l, src43_l, src65_l;
 
 4415     v16i8 src2110, src4332;
 
 4416     v16i8 src54_r, src76_r, src98_r, src65_r, src87_r, src109_r;
 
 4417     v16i8 src76_l, src98_l, src87_l, src109_l, src6554, src8776, src10998;
 
 4418     v8i16 filter_vec, filt0, filt1;
 
 4419     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, dst8;
 
 4420     v4i32 dst9, dst10, dst11;
 
 4421     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9;
 
 4422     v4i32 weight_vec, rnd_vec, offset_vec;
 
 4425     src -= (1 * src_stride);
 
 4427     weight_vec = __msa_fill_w(
weight);
 
 4428     rnd_vec = __msa_fill_w(rnd_val);
 
 4429     offset_vec = __msa_fill_w(
offset);
 
 4436     src += (3 * src_stride);
 
 4439     src2110 = (v16i8) __msa_ilvr_d((v2i64) src21_l, (v2i64) src10_l);
 
 4441     for (loop_cnt = 2; loop_cnt--;) {
 
 4442         LD_SB8(
src, src_stride, src3, src4, src5, src6, src7, src8, src9, src10);
 
 4443         src += (8 * src_stride);
 
 4448         src4332 = (v16i8) __msa_ilvr_d((v2i64) src43_l, (v2i64) src32_l);
 
 4449         src6554 = (v16i8) __msa_ilvr_d((v2i64) src65_l, (v2i64) src54_l);
 
 4473         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 4474              weight_vec, dst0, dst1, dst2, dst3);
 
 4475         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 4476              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 4479         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 4480              offset_vec, dst0, dst1, dst2, dst3);
 
 4481         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 4482              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 4485         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 4486              weight_vec, dst8, dst9, dst10, dst11);
 
 4487         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 4488         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 4489              offset_vec, dst8, dst9, dst10, dst11);
 
 4494         PCKEV_H2_SH(dst9, dst8, dst11, dst10, dst4, dst5);
 
 4496         PCKEV_B3_UB(dst1, dst0, dst3, dst2, dst5, dst4, out0, out1, out2);
 
 4497         ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
 4498         ST_W4(out2, 0, 1, 2, 3, 
dst + 8, dst_stride);
 
 4499         dst += (4 * dst_stride);
 
 4505         src8776 = (v16i8) __msa_ilvr_d((v2i64) src87_l, (v2i64) src76_l);
 
 4506         src10998 = (v16i8) __msa_ilvr_d((v2i64) src109_l, (v2i64) src98_l);
 
 4528         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 4529              weight_vec, dst0, dst1, dst2, dst3);
 
 4530         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 4531              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 4534         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 4535              offset_vec, dst0, dst1, dst2, dst3);
 
 4536         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 4537              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 4540         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 4541              weight_vec, dst8, dst9, dst10, dst11);
 
 4542         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 4543         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 4544              offset_vec, dst8, dst9, dst10, dst11);
 
 4549         PCKEV_H2_SH(dst9, dst8, dst11, dst10, dst4, dst5);
 
 4551         PCKEV_B3_UB(dst1, dst0, dst3, dst2, dst5, dst4, out3, out4, out5);
 
 4552         ST_D4(out3, out4, 0, 1, 0, 1, 
dst, dst_stride);
 
 4553         ST_W4(out5, 0, 1, 2, 3, 
dst + 8, dst_stride);
 
 4554         dst += (4 * dst_stride);
 
 4574     v16u8 out0, out1, out2, out3;
 
 4576     v16i8 src10_r, src32_r, src21_r, src43_r;
 
 4577     v16i8 src10_l, src32_l, src21_l, src43_l;
 
 4578     v16i8 src54_r, src54_l, src65_r, src65_l, src6;
 
 4579     v8i16 filter_vec, filt0, filt1;
 
 4580     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 4581     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 4582     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 4583     v4i32 weight_vec, rnd_vec, offset_vec;
 
 4588     weight_vec = __msa_fill_w(
weight);
 
 4589     rnd_vec = __msa_fill_w(rnd_val);
 
 4590     offset_vec = __msa_fill_w(
offset);
 
 4597     src += (3 * src_stride);
 
 4601     for (loop_cnt = (
height >> 2); loop_cnt--;) {
 
 4602         LD_SB4(
src, src_stride, src3, src4, src5, src6);
 
 4603         src += (4 * src_stride);
 
 4638         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 4639              weight_vec, dst0, dst1, dst2, dst3);
 
 4640         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 4641              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 4644         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 4645              offset_vec, dst0, dst1, dst2, dst3);
 
 4646         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 4647              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 4650         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 4651              weight_vec, dst8, dst9, dst10, dst11);
 
 4652         MUL4(dst12, weight_vec, dst13, weight_vec, dst14, weight_vec,
 
 4653              dst15, weight_vec, dst12, dst13, dst14, dst15);
 
 4654         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 4655         SRAR_W4_SW(dst12, dst13, dst14, dst15, rnd_vec);
 
 4656         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 4657              offset_vec, dst8, dst9, dst10, dst11);
 
 4658         ADD4(dst12, offset_vec, dst13, offset_vec, dst14, offset_vec,
 
 4659              dst15, offset_vec, dst12, dst13, dst14, dst15);
 
 4660         CLIP_SW8_0_255(dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15);
 
 4664         PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 4665         PCKEV_H2_SH(dst13, dst12, dst15, dst14, tmp6, tmp7);
 
 4666         PCKEV_B4_UB(tmp4, tmp0, tmp5, tmp1, tmp6, tmp2, tmp7, tmp3, out0, out1,
 
 4668         ST_UB4(out0, out1, out2, out3, 
dst, dst_stride);
 
 4669         dst += (4 * dst_stride);
 
 4690     v16u8 out0, out1, out2, out3, out4, out5;
 
 4692     v16i8 src6, src7, src8, src9, src10, src11, src12, src13;
 
 4693     v16i8 src10_r, src32_r, src54_r, src21_r, src43_r, src65_r;
 
 4694     v16i8 src10_l, src32_l, src54_l, src21_l, src43_l, src65_l;
 
 4695     v16i8 src87_r, src98_r, src109_r, src1110_r, src1211_r, src1312_r;
 
 4696     v8i16 filter_vec, filt0, filt1;
 
 4697     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 4698     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 4699     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 4700     v4i32 dst16, dst17, dst18, dst19, dst20, dst21, dst22, dst23;
 
 4701     v4i32 weight_vec, rnd_vec, offset_vec;
 
 4706     weight_vec = __msa_fill_w(
weight);
 
 4707     rnd_vec = __msa_fill_w(rnd_val);
 
 4708     offset_vec = __msa_fill_w(
offset);
 
 4715     LD_SB3(
src + 16, src_stride, src7, src8, src9);
 
 4716     src += (3 * src_stride);
 
 4719     ILVR_B2_SB(src8, src7, src9, src8, src87_r, src98_r);
 
 4721     for (loop_cnt = 8; loop_cnt--;) {
 
 4722         LD_SB4(
src, src_stride, src3, src4, src5, src6);
 
 4723         LD_SB4(
src + 16, src_stride, src10, src11, src12, src13);
 
 4724         src += (4 * src_stride);
 
 4729         ILVR_B2_SB(src10, src9, src11, src10, src109_r, src1110_r);
 
 4730         ILVR_B2_SB(src12, src11, src13, src12, src1211_r, src1312_r);
 
 4775         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 4776              weight_vec, dst0, dst1, dst2, dst3);
 
 4777         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 4778              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 4781         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 4782              offset_vec, dst0, dst1, dst2, dst3);
 
 4783         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 4784              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 4787         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 4788              weight_vec, dst8, dst9, dst10, dst11);
 
 4789         MUL4(dst12, weight_vec, dst13, weight_vec, dst14, weight_vec,
 
 4790              dst15, weight_vec, dst12, dst13, dst14, dst15);
 
 4791         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 4792         SRAR_W4_SW(dst12, dst13, dst14, dst15, rnd_vec);
 
 4793         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 4794              offset_vec, dst8, dst9, dst10, dst11);
 
 4795         ADD4(dst12, offset_vec, dst13, offset_vec, dst14, offset_vec,
 
 4796              dst15, offset_vec, dst12, dst13, dst14, dst15);
 
 4797         CLIP_SW8_0_255(dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15);
 
 4799         MUL4(dst16, weight_vec, dst17, weight_vec, dst18, weight_vec, dst19,
 
 4800              weight_vec, dst16, dst17, dst18, dst19);
 
 4801         MUL4(dst20, weight_vec, dst21, weight_vec, dst22, weight_vec,
 
 4802              dst23, weight_vec, dst20, dst21, dst22, dst23);
 
 4803         SRAR_W4_SW(dst16, dst17, dst18, dst19, rnd_vec);
 
 4804         SRAR_W4_SW(dst20, dst21, dst22, dst23, rnd_vec);
 
 4805         ADD4(dst16, offset_vec, dst17, offset_vec, dst18, offset_vec, dst19,
 
 4806              offset_vec, dst16, dst17, dst18, dst19);
 
 4807         ADD4(dst20, offset_vec, dst21, offset_vec, dst22, offset_vec,
 
 4808              dst23, offset_vec, dst20, dst21, dst22, dst23);
 
 4809         CLIP_SW8_0_255(dst16, dst17, dst18, dst19, dst20, dst21, dst22, dst23);
 
 4813         PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 4814         PCKEV_H2_SH(dst13, dst12, dst15, dst14, tmp6, tmp7);
 
 4815         PCKEV_B4_UB(tmp4, tmp0, tmp5, tmp1, tmp6, tmp2, tmp7, tmp3, out0, out1,
 
 4818         PCKEV_H2_SH(dst17, dst16, dst19, dst18, tmp0, tmp1);
 
 4819         PCKEV_H2_SH(dst21, dst20, dst23, dst22, tmp2, tmp3);
 
 4822         ST_UB4(out0, out1, out2, out3, 
dst, dst_stride);
 
 4823         ST_D4(out4, out5, 0, 1, 0, 1, 
dst + 16, dst_stride);
 
 4824         dst += (4 * dst_stride);
 
 4832         src87_r = src1211_r;
 
 4833         src98_r = src1312_r;
 
 4848     v16u8 out0, out1, out2, out3;
 
 4849     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9;
 
 4850     v16i8 src10_r, src32_r, src76_r, src98_r;
 
 4851     v16i8 src21_r, src43_r, src65_r, src87_r;
 
 4852     v16i8 src10_l, src32_l, src76_l, src98_l;
 
 4853     v16i8 src21_l, src43_l, src65_l, src87_l;
 
 4854     v8i16 filter_vec, filt0, filt1;
 
 4855     v4i32 weight_vec, rnd_vec, offset_vec;
 
 4856     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 4857     v4i32 dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15;
 
 4858     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 4863     weight_vec = __msa_fill_w(
weight);
 
 4864     rnd_vec = __msa_fill_w(rnd_val);
 
 4865     offset_vec = __msa_fill_w(
offset);
 
 4872     LD_SB3(
src + 16, src_stride, src5, src6, src7);
 
 4873     src += (3 * src_stride);
 
 4876     ILVR_B2_SB(src6, src5, src7, src6, src65_r, src76_r);
 
 4877     ILVL_B2_SB(src6, src5, src7, src6, src65_l, src76_l);
 
 4879     for (loop_cnt = (
height >> 1); loop_cnt--;) {
 
 4881         LD_SB2(
src + 16, src_stride, src8, src9);
 
 4882         src += (2 * src_stride);
 
 4923         MUL4(dst0, weight_vec, dst1, weight_vec, dst2, weight_vec, dst3,
 
 4924              weight_vec, dst0, dst1, dst2, dst3);
 
 4925         MUL4(dst4, weight_vec, dst5, weight_vec, dst6, weight_vec,
 
 4926              dst7, weight_vec, dst4, dst5, dst6, dst7);
 
 4929         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 4930              offset_vec, dst0, dst1, dst2, dst3);
 
 4931         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec,
 
 4932              dst7, offset_vec, dst4, dst5, dst6, dst7);
 
 4935         MUL4(dst8, weight_vec, dst9, weight_vec, dst10, weight_vec, dst11,
 
 4936              weight_vec, dst8, dst9, dst10, dst11);
 
 4937         MUL4(dst12, weight_vec, dst13, weight_vec, dst14, weight_vec,
 
 4938              dst15, weight_vec, dst12, dst13, dst14, dst15);
 
 4939         SRAR_W4_SW(dst8, dst9, dst10, dst11, rnd_vec);
 
 4940         SRAR_W4_SW(dst12, dst13, dst14, dst15, rnd_vec);
 
 4941         ADD4(dst8, offset_vec, dst9, offset_vec, dst10, offset_vec, dst11,
 
 4942              offset_vec, dst8, dst9, dst10, dst11);
 
 4943         ADD4(dst12, offset_vec, dst13, offset_vec, dst14, offset_vec,
 
 4944              dst15, offset_vec, dst12, dst13, dst14, dst15);
 
 4945         CLIP_SW8_0_255(dst8, dst9, dst10, dst11, dst12, dst13, dst14, dst15);
 
 4949         PCKEV_H2_SH(dst9, dst8, dst11, dst10, tmp4, tmp5);
 
 4950         PCKEV_H2_SH(dst13, dst12, dst15, dst14, tmp6, tmp7);
 
 4951         PCKEV_B4_UB(tmp2, tmp0, tmp3, tmp1, tmp6, tmp4, tmp7, tmp5, out0, out1,
 
 4975                                       const int8_t *filter_x,
 
 4976                                       const int8_t *filter_y,
 
 4986     v8i16 filt_h0, filt_h1, filter_vec, 
tmp;
 
 4987     v16i8 vec0, vec1, vec2, vec3, vec4, vec5;
 
 4988     v8i16 dst10, dst21, dst32, dst43;
 
 4989     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 4990     v4i32 dst0, dst1, dst2, dst3, dst4;
 
 4991     v4i32 weight_vec, rnd_vec, offset_vec;
 
 4994     src -= (src_stride + 1);
 
 4996     filter_vec = 
LD_SH(filter_x);
 
 5000     filter_vec = 
LD_SH(filter_y);
 
 5006     weight_vec = __msa_fill_w(
weight);
 
 5007     rnd_vec = __msa_fill_w(rnd_val);
 
 5008     offset_vec = __msa_fill_w(
offset);
 
 5025     ILVEV_H2_SH(dst0, dst1, dst2, dst3, dst10, dst32);
 
 5026     ILVEV_H2_SH(dst1, dst2, dst3, dst4, dst21, dst43);
 
 5031     MUL2(dst0, weight_vec, dst1, weight_vec, dst0, dst1);
 
 5033     ADD2(dst0, offset_vec, dst1, offset_vec, dst0, dst1);
 
 5035     tmp = __msa_pckev_h((v8i16) dst1, (v8i16) dst0);
 
 5036     out = (v16u8) __msa_pckev_b((v16i8) 
tmp, (v16i8) 
tmp);
 
 5044                                       const int8_t *filter_x,
 
 5045                                       const int8_t *filter_y,
 
 5053     v8i16 filt_h0, filt_h1, filter_vec;
 
 5056     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 5057     v8i16 dst10, dst32, dst54, dst21, dst43, dst65;
 
 5058     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6;
 
 5059     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 5060     v4i32 weight_vec, rnd_vec, offset_vec;
 
 5063     src -= (src_stride + 1);
 
 5065     filter_vec = 
LD_SH(filter_x);
 
 5069     filter_vec = 
LD_SH(filter_y);
 
 5075     weight_vec = __msa_fill_w(
weight);
 
 5076     rnd_vec = __msa_fill_w(rnd_val);
 
 5077     offset_vec = __msa_fill_w(
offset);
 
 5083     VSHF_B2_SB(src3, src6, src3, src6, mask0, mask1, vec6, vec7);
 
 5099     ILVEV_H2_SH(dst0, dst1, dst3, dst4, dst10, dst43);
 
 5100     ILVEV_H2_SH(dst1, dst2, dst4, dst5, dst21, dst54);
 
 5101     ILVEV_H2_SH(dst2, dst3, dst5, dst6, dst32, dst65);
 
 5106     SRA_4V(dst0, dst1, dst2, dst3, 6);
 
 5107     MUL2(dst0, weight_vec, dst1, weight_vec, dst0, dst1);
 
 5108     MUL2(dst2, weight_vec, dst3, weight_vec, dst2, dst3);
 
 5110     ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 5111          offset_vec, dst0, dst1, dst2, dst3);
 
 5114     out = (v16u8) __msa_pckev_b((v16i8) tmp1, (v16i8) tmp0);
 
 5122                                               const int8_t *filter_x,
 
 5123                                               const int8_t *filter_y,
 
 5131     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 5135     v8i16 filter_vec, filt_h0, filt_h1;
 
 5136     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 5137     v8i16 dst10_r, dst32_r, dst54_r, dst76_r;
 
 5138     v8i16 dst21_r, dst43_r, dst65_r, dst87_r;
 
 5139     v8i16 dst98_r, dst109_r;
 
 5140     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 5141     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, dst8, dst9, dst10;
 
 5142     v4i32 offset_vec, weight_vec, rnd_vec;
 
 5145     src -= (src_stride + 1);
 
 5147     filter_vec = 
LD_SH(filter_x);
 
 5151     filter_vec = 
LD_SH(filter_y);
 
 5157     weight_vec = __msa_fill_w(
weight);
 
 5158     rnd_vec = __msa_fill_w(rnd_val);
 
 5159     offset_vec = __msa_fill_w(
offset);
 
 5162     src += (3 * src_stride);
 
 5173     ILVEV_H2_SH(dst0, dst1, dst1, dst2, dst10_r, dst21_r);
 
 5175     for (loop_cnt = 
height >> 3; loop_cnt--;) {
 
 5177                src3, src4, src5, src6, src7, src8, src9, src10);
 
 5178         src += (8 * src_stride);
 
 5180         VSHF_B2_SB(src3, src7, src3, src7, mask0, mask1, vec0, vec1);
 
 5181         VSHF_B2_SB(src4, src8, src4, src8, mask0, mask1, vec2, vec3);
 
 5182         VSHF_B2_SB(src5, src9, src5, src9, mask0, mask1, vec4, vec5);
 
 5183         VSHF_B2_SB(src6, src10, src6, src10, mask0, mask1, vec6, vec7);
 
 5202         dst32_r = __msa_ilvev_h(dst3, dst2);
 
 5203         ILVEV_H2_SH(dst3, dst4, dst7, dst8, dst43_r, dst87_r);
 
 5204         ILVEV_H2_SH(dst4, dst5, dst8, dst9, dst54_r, dst98_r);
 
 5205         ILVEV_H2_SH(dst5, dst6, dst9, dst10, dst65_r, dst109_r);
 
 5206         dst76_r = __msa_ilvev_h(dst7, dst6);
 
 5215         SRA_4V(dst0, dst1, dst2, dst3, 6);
 
 5216         SRA_4V(dst4, dst5, dst6, dst7, 6);
 
 5217         MUL2(dst0, weight_vec, dst1, weight_vec, dst0, dst1);
 
 5218         MUL2(dst2, weight_vec, dst3, weight_vec, dst2, dst3);
 
 5219         MUL2(dst4, weight_vec, dst5, weight_vec, dst4, dst5);
 
 5220         MUL2(dst6, weight_vec, dst7, weight_vec, dst6, dst7);
 
 5223         ADD4(dst0, offset_vec, dst1, offset_vec, dst2, offset_vec, dst3,
 
 5224              offset_vec, dst0, dst1, dst2, dst3);
 
 5225         ADD4(dst4, offset_vec, dst5, offset_vec, dst6, offset_vec, dst7,
 
 5226              offset_vec, dst4, dst5, dst6, dst7);
 
 5228         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6, tmp0, tmp1,
 
 5231         ST_W8(out0, out1, 0, 1, 2, 3, 0, 1, 2, 3, 
dst, dst_stride);
 
 5232         dst += (8 * dst_stride);
 
 5244                                      const int8_t *filter_x,
 
 5245                                      const int8_t *filter_y,
 
 5253                                   filter_x, filter_y, 
weight,
 
 5255     } 
else if (4 == 
height) {
 
 5257                                   filter_x,filter_y, 
weight,
 
 5259     } 
else if (0 == (
height % 8)) {
 
 5270                                      const int8_t *filter_x,
 
 5271                                      const int8_t *filter_y,
 
 5277     v16u8 out0, out1, out2;
 
 5278     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 5282     v8i16 filt_h0, filt_h1, filter_vec;
 
 5283     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 5284     v8i16 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, dst8, dst9;
 
 5285     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 5286     v8i16 dst10_r, dst32_r, dst54_r, dst76_r, dst98_r, dst21_r, dst43_r;
 
 5287     v8i16 dst65_r, dst87_r, dst109_r, dst10_l, dst32_l, dst54_l, dst76_l;
 
 5288     v8i16 dst98_l, dst21_l, dst43_l, dst65_l, dst87_l, dst109_l;
 
 5289     v8i16 dst1021_l, dst3243_l, dst5465_l, dst7687_l, dst98109_l;
 
 5290     v4i32 dst0_r, dst1_r, dst2_r, dst3_r, dst4_r, dst5_r, dst6_r, dst7_r;
 
 5291     v4i32 dst0_l, dst1_l, dst2_l, dst3_l, weight_vec, rnd_vec, offset_vec;
 
 5294     src -= (src_stride + 1);
 
 5296     filter_vec = 
LD_SH(filter_x);
 
 5300     filter_vec = 
LD_SH(filter_y);
 
 5306     weight_vec = __msa_fill_w(
weight);
 
 5307     rnd_vec = __msa_fill_w(rnd_val);
 
 5308     offset_vec = __msa_fill_w(
offset);
 
 5311     src += (3 * src_stride);
 
 5329     ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst10_r, dst10_l);
 
 5330     ILVEV_H2_SH(dst2, dst4, dst3, dst5, dst21_r, dst21_l);
 
 5332     LD_SB8(
src, src_stride, src3, src4, src5, src6, src7, src8, src9, src10);
 
 5333     VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec0, vec1);
 
 5334     VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec2, vec3);
 
 5335     VSHF_B2_SB(src5, src5, src5, src5, mask0, mask1, vec4, vec5);
 
 5336     VSHF_B2_SB(src6, src6, src6, src6, mask0, mask1, vec6, vec7);
 
 5345     ILVEV_H2_SH(dst4, dst6, dst5, dst7, dst32_r, dst32_l);
 
 5346     ILVEV_H2_SH(dst6, dst8, dst7, dst9, dst43_r, dst43_l);
 
 5355     ILVEV_H2_SH(dst8, dst0, dst9, dst1, dst54_r, dst54_l);
 
 5356     ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst65_r, dst65_l);
 
 5357     VSHF_B2_SB(src7, src7, src7, src7, mask0, mask1, vec0, vec1);
 
 5358     VSHF_B2_SB(src8, src8, src8, src8, mask0, mask1, vec2, vec3);
 
 5359     VSHF_B2_SB(src9, src9, src9, src9, mask0, mask1, vec4, vec5);
 
 5360     VSHF_B2_SB(src10, src10, src10, src10, mask0, mask1, vec6, vec7);
 
 5369     ILVEV_H2_SH(dst2, dst4, dst3, dst5, dst76_r, dst76_l);
 
 5370     ILVEV_H2_SH(dst4, dst6, dst5, dst7, dst87_r, dst87_l);
 
 5379     ILVEV_H2_SH(dst6, dst0, dst7, dst1, dst98_r, dst98_l);
 
 5380     ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst109_r, dst109_l);
 
 5381     PCKEV_D2_SH(dst21_l, dst10_l, dst43_l, dst32_l, dst1021_l, dst3243_l);
 
 5382     PCKEV_D2_SH(dst65_l, dst54_l, dst87_l, dst76_l, dst5465_l, dst7687_l);
 
 5383     dst98109_l = (v8i16) __msa_pckev_d((v2i64) dst109_l, (v2i64) dst98_l);
 
 5395     dst3_l = 
HEVC_FILT_4TAP(dst7687_l, dst98109_l, filt_h0, filt_h1);
 
 5396     SRA_4V(dst0_r, dst1_r, dst2_r, dst3_r, 6);
 
 5397     SRA_4V(dst4_r, dst5_r, dst6_r, dst7_r, 6);
 
 5398     SRA_4V(dst0_l, dst1_l, dst2_l, dst3_l, 6);
 
 5399     MUL2(dst0_r, weight_vec, dst1_r, weight_vec, dst0_r, dst1_r);
 
 5400     MUL2(dst2_r, weight_vec, dst3_r, weight_vec, dst2_r, dst3_r);
 
 5401     MUL2(dst4_r, weight_vec, dst5_r, weight_vec, dst4_r, dst5_r);
 
 5402     MUL2(dst6_r, weight_vec, dst7_r, weight_vec, dst6_r, dst7_r);
 
 5403     MUL2(dst0_l, weight_vec, dst1_l, weight_vec, dst0_l, dst1_l);
 
 5404     MUL2(dst2_l, weight_vec, dst3_l, weight_vec, dst2_l, dst3_l);
 
 5405     SRAR_W4_SW(dst0_r, dst1_r, dst2_r, dst3_r, rnd_vec);
 
 5406     SRAR_W4_SW(dst4_r, dst5_r, dst6_r, dst7_r, rnd_vec);
 
 5407     SRAR_W4_SW(dst0_l, dst1_l, dst2_l, dst3_l, rnd_vec);
 
 5408     ADD4(dst0_r, offset_vec, dst1_r, offset_vec, dst2_r, offset_vec, dst3_r,
 
 5409          offset_vec, dst0_r, dst1_r, dst2_r, dst3_r);
 
 5410     ADD4(dst4_r, offset_vec, dst5_r, offset_vec, dst6_r, offset_vec, dst7_r,
 
 5411          offset_vec, dst4_r, dst5_r, dst6_r, dst7_r);
 
 5412     ADD4(dst0_l, offset_vec, dst1_l, offset_vec, dst2_l, offset_vec, dst3_l,
 
 5413          offset_vec, dst0_l, dst1_l, dst2_l, dst3_l);
 
 5415                    dst4_r, dst5_r, dst6_r, dst7_r);
 
 5417     PCKEV_H2_SH(dst1_r, dst0_r, dst3_r, dst2_r, tmp0, tmp1);
 
 5418     PCKEV_H2_SH(dst5_r, dst4_r, dst7_r, dst6_r, tmp2, tmp3);
 
 5419     PCKEV_H2_SH(dst1_l, dst0_l, dst3_l, dst2_l, tmp4, tmp5);
 
 5420     PCKEV_B3_UB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp4, out0, out1, out2);
 
 5421     ST_W8(out0, out1, 0, 1, 2, 3, 0, 1, 2, 3, 
dst, dst_stride);
 
 5422     ST_H8(out2, 0, 1, 2, 3, 4, 5, 6, 7, 
dst + 4, dst_stride);
 
 5429                                       const int8_t *filter_x,
 
 5430                                       const int8_t *filter_y,
 
 5438     v8i16 filt_h0, filt_h1, filter_vec;
 
 5441     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7, vec8, vec9;
 
 5442     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 5443     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 5444     v4i32 dst0_r, dst0_l, dst1_r, dst1_l;
 
 5445     v8i16 dst10_r, dst32_r, dst21_r, dst43_r;
 
 5446     v8i16 dst10_l, dst32_l, dst21_l, dst43_l;
 
 5447     v4i32 weight_vec, rnd_vec, offset_vec;
 
 5450     src -= (src_stride + 1);
 
 5452     filter_vec = 
LD_SH(filter_x);
 
 5456     filter_vec = 
LD_SH(filter_y);
 
 5462     weight_vec = __msa_fill_w(
weight);
 
 5463     rnd_vec = __msa_fill_w(rnd_val);
 
 5464     offset_vec = __msa_fill_w(
offset);
 
 5470     VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec6, vec7);
 
 5471     VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec8, vec9);
 
 5490     ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst10_r, dst10_l);
 
 5491     ILVEV_H2_SH(dst2, dst4, dst3, dst5, dst21_r, dst21_l);
 
 5492     ILVEV_H2_SH(dst4, dst6, dst5, dst7, dst32_r, dst32_l);
 
 5497     ILVEV_H2_SH(dst6, dst0, dst7, dst1, dst43_r, dst43_l);
 
 5503     SRA_4V(dst0_r, dst0_l, dst1_r, dst1_l, 6);
 
 5504     MUL2(dst0_r, weight_vec, dst1_r, weight_vec, dst0_r, dst1_r);
 
 5505     MUL2(dst0_l, weight_vec, dst1_l, weight_vec, dst0_l, dst1_l);
 
 5506     SRAR_W4_SW(dst0_r, dst0_l, dst1_r, dst1_l, rnd_vec);
 
 5507     ADD4(dst0_r, offset_vec, dst0_l, offset_vec, dst1_r, offset_vec,
 
 5508          dst1_l, offset_vec, dst0_r, dst0_l, dst1_r, dst1_l);
 
 5510     PCKEV_H2_SH(dst0_l, dst0_r, dst1_l, dst1_r, tmp0, tmp1);
 
 5511     out = (v16u8) __msa_pckev_b((v16i8) tmp1, (v16i8) tmp0);
 
 5519                                           const int8_t *filter_x,
 
 5520                                           const int8_t *filter_y,
 
 5528     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, mask0, mask1;
 
 5529     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 5530     v8i16 filt0, filt1, filt_h0, filt_h1, filter_vec;
 
 5531     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 5532     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 5533     v8i16 dst10_r, dst32_r, dst54_r, dst21_r, dst43_r, dst65_r;
 
 5534     v8i16 dst10_l, dst32_l, dst54_l, dst21_l, dst43_l, dst65_l;
 
 5535     v4i32 dst0_r, dst0_l, dst1_r, dst1_l, dst2_r, dst2_l, dst3_r, dst3_l;
 
 5536     v4i32 weight_vec, rnd_vec, offset_vec;
 
 5539     src -= (src_stride + 1);
 
 5541     filter_vec = 
LD_SH(filter_x);
 
 5545     filter_vec = 
LD_SH(filter_y);
 
 5552     weight_vec = __msa_fill_w(
weight);
 
 5553     rnd_vec = __msa_fill_w(rnd_val);
 
 5554     offset_vec = __msa_fill_w(
offset);
 
 5556     for (cnt = width8mult; cnt--;) {
 
 5574         ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst10_r, dst10_l);
 
 5575         ILVEV_H2_SH(dst2, dst4, dst3, dst5, dst21_r, dst21_l);
 
 5576         VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec0, vec1);
 
 5577         VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec2, vec3);
 
 5578         VSHF_B2_SB(src5, src5, src5, src5, mask0, mask1, vec4, vec5);
 
 5579         VSHF_B2_SB(src6, src6, src6, src6, mask0, mask1, vec6, vec7);
 
 5588         ILVEV_H2_SH(dst4, dst0, dst5, dst1, dst32_r, dst32_l);
 
 5589         ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst43_r, dst43_l);
 
 5598         ILVEV_H2_SH(dst2, dst4, dst3, dst5, dst54_r, dst54_l);
 
 5599         ILVEV_H2_SH(dst4, dst6, dst5, dst7, dst65_r, dst65_l);
 
 5609         SRA_4V(dst0_r, dst0_l, dst1_r, dst1_l, 6);
 
 5610         SRA_4V(dst2_r, dst2_l, dst3_r, dst3_l, 6);
 
 5611         MUL2(dst0_r, weight_vec, dst1_r, weight_vec, dst0_r, dst1_r);
 
 5612         MUL2(dst2_r, weight_vec, dst3_r, weight_vec, dst2_r, dst3_r);
 
 5613         MUL2(dst0_l, weight_vec, dst1_l, weight_vec, dst0_l, dst1_l);
 
 5614         MUL2(dst2_l, weight_vec, dst3_l, weight_vec, dst2_l, dst3_l);
 
 5615         SRAR_W4_SW(dst0_r, dst0_l, dst1_r, dst1_l, rnd_vec);
 
 5616         SRAR_W4_SW(dst2_r, dst2_l, dst3_r, dst3_l, rnd_vec);
 
 5617         ADD2(dst0_r, offset_vec, dst1_r, offset_vec, dst0_r, dst1_r);
 
 5618         ADD2(dst2_r, offset_vec, dst3_r, offset_vec, dst2_r, dst3_r);
 
 5619         ADD2(dst0_l, offset_vec, dst1_l, offset_vec, dst0_l, dst1_l);
 
 5620         ADD2(dst2_l, offset_vec, dst3_l, offset_vec, dst2_l, dst3_l);
 
 5622                        dst2_r, dst2_l, dst3_r, dst3_l);
 
 5623         PCKEV_H4_SH(dst0_l, dst0_r, dst1_l, dst1_r, dst2_l, dst2_r, dst3_l,
 
 5624                     dst3_r, tmp0, tmp1, tmp2, tmp3);
 
 5626         ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
 5635                                       const int8_t *filter_x,
 
 5636                                       const int8_t *filter_y,
 
 5641     v16u8 out0, out1, out2;
 
 5642     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8;
 
 5644     v8i16 filt_h0, filt_h1, filter_vec;
 
 5647     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7, vec8, vec9;
 
 5648     v16i8 vec10, vec11, vec12, vec13, vec14, vec15, vec16, vec17;
 
 5649     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 5650     v4i32 dst0_r, dst0_l, dst1_r, dst1_l, dst2_r, dst2_l, dst3_r, dst3_l;
 
 5651     v4i32 dst4_r, dst4_l, dst5_r, dst5_l, weight_vec, rnd_vec, offset_vec;
 
 5652     v8i16 dst10_r, dst32_r, dst10_l, dst32_l;
 
 5653     v8i16 dst21_r, dst43_r, dst21_l, dst43_l;
 
 5654     v8i16 dst54_r, dst54_l, dst65_r, dst65_l;
 
 5655     v8i16 dst76_r, dst76_l, dst87_r, dst87_l;
 
 5656     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 5659     src -= (src_stride + 1);
 
 5661     filter_vec = 
LD_SH(filter_x);
 
 5665     filter_vec = 
LD_SH(filter_y);
 
 5671     weight_vec = __msa_fill_w(
weight);
 
 5672     rnd_vec = __msa_fill_w(rnd_val);
 
 5673     offset_vec = __msa_fill_w(
offset);
 
 5676     src += (5 * src_stride);
 
 5677     LD_SB4(
src, src_stride, src5, src6, src7, src8);
 
 5681     VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec6, vec7);
 
 5682     VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec8, vec9);
 
 5683     VSHF_B2_SB(src5, src5, src5, src5, mask0, mask1, vec10, vec11);
 
 5684     VSHF_B2_SB(src6, src6, src6, src6, mask0, mask1, vec12, vec13);
 
 5685     VSHF_B2_SB(src7, src7, src7, src7, mask0, mask1, vec14, vec15);
 
 5686     VSHF_B2_SB(src8, src8, src8, src8, mask0, mask1, vec16, vec17);
 
 5704     ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst10_r, dst10_l);
 
 5705     ILVEV_H2_SH(dst2, dst4, dst3, dst5, dst21_r, dst21_l);
 
 5706     ILVEV_H2_SH(dst4, dst6, dst5, dst7, dst32_r, dst32_l);
 
 5715     ILVEV_H2_SH(dst6, dst0, dst7, dst1, dst43_r, dst43_l);
 
 5716     ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst54_r, dst54_l);
 
 5725     ILVEV_H2_SH(dst2, dst4, dst3, dst5, dst65_r, dst65_l);
 
 5726     ILVEV_H2_SH(dst4, dst6, dst5, dst7, dst76_r, dst76_l);
 
 5731     ILVEV_H2_SH(dst6, dst0, dst7, dst1, dst87_r, dst87_l);
 
 5744     SRA_4V(dst0_r, dst0_l, dst1_r, dst1_l, 6);
 
 5745     SRA_4V(dst2_r, dst2_l, dst3_r, dst3_l, 6);
 
 5746     SRA_4V(dst4_r, dst4_l, dst5_r, dst5_l, 6);
 
 5747     MUL2(dst0_r, weight_vec, dst1_r, weight_vec, dst0_r, dst1_r);
 
 5748     MUL2(dst2_r, weight_vec, dst3_r, weight_vec, dst2_r, dst3_r);
 
 5749     MUL2(dst4_r, weight_vec, dst5_r, weight_vec, dst4_r, dst5_r);
 
 5750     MUL2(dst0_l, weight_vec, dst1_l, weight_vec, dst0_l, dst1_l);
 
 5751     MUL2(dst2_l, weight_vec, dst3_l, weight_vec, dst2_l, dst3_l);
 
 5752     MUL2(dst4_l, weight_vec, dst5_l, weight_vec, dst4_l, dst5_l);
 
 5753     SRAR_W4_SW(dst0_r, dst0_l, dst1_r, dst1_l, rnd_vec);
 
 5754     SRAR_W4_SW(dst2_r, dst2_l, dst3_r, dst3_l, rnd_vec);
 
 5755     SRAR_W4_SW(dst4_r, dst4_l, dst5_r, dst5_l, rnd_vec);
 
 5756     ADD2(dst0_r, offset_vec, dst1_r, offset_vec, dst0_r, dst1_r);
 
 5757     ADD2(dst2_r, offset_vec, dst3_r, offset_vec, dst2_r, dst3_r);
 
 5758     ADD2(dst4_r, offset_vec, dst5_r, offset_vec, dst4_r, dst5_r);
 
 5759     ADD2(dst0_l, offset_vec, dst1_l, offset_vec, dst0_l, dst1_l);
 
 5760     ADD2(dst2_l, offset_vec, dst3_l, offset_vec, dst2_l, dst3_l);
 
 5761     ADD2(dst4_l, offset_vec, dst5_l, offset_vec, dst4_l, dst5_l);
 
 5763                    dst4_r, dst5_r, dst0_l, dst1_l);
 
 5765     PCKEV_H4_SH(dst0_l, dst0_r, dst1_l, dst1_r, dst2_l, dst2_r, dst3_l, dst3_r,
 
 5766                 tmp0, tmp1, tmp2, tmp3);
 
 5767     PCKEV_H2_SH(dst4_l, dst4_r, dst5_l, dst5_r, tmp4, tmp5);
 
 5768     PCKEV_B3_UB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp4, out0, out1, out2);
 
 5769     ST_D4(out0, out1, 0, 1, 0, 1, 
dst, dst_stride);
 
 5770     ST_D2(out2, 0, 1, 
dst + 4 * dst_stride, dst_stride);
 
 5777                                               const int8_t *filter_x,
 
 5778                                               const int8_t *filter_y,
 
 5785     uint32_t loop_cnt, cnt;
 
 5786     const uint8_t *src_tmp;
 
 5791     v8i16 filt_h0, filt_h1, filter_vec;
 
 5794     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 5795     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7;
 
 5796     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 5797     v8i16 dst10_r, dst32_r, dst54_r, dst21_r, dst43_r, dst65_r;
 
 5798     v8i16 dst10_l, dst32_l, dst54_l, dst21_l, dst43_l, dst65_l;
 
 5799     v4i32 dst0_r, dst0_l, dst1_r, dst1_l;
 
 5800     v4i32 dst2_r, dst2_l, dst3_r, dst3_l;
 
 5801     v4i32 weight_vec, rnd_vec, offset_vec;
 
 5804     src -= (src_stride + 1);
 
 5806     filter_vec = 
LD_SH(filter_x);
 
 5810     filter_vec = 
LD_SH(filter_y);
 
 5816     weight_vec = __msa_fill_w(
weight);
 
 5817     rnd_vec = __msa_fill_w(rnd_val);
 
 5818     offset_vec = __msa_fill_w(
offset);
 
 5820     for (cnt = width8mult; cnt--;) {
 
 5825         src_tmp += (3 * src_stride);
 
 5843         ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst10_r, dst10_l);
 
 5844         ILVEV_H2_SH(dst2, dst4, dst3, dst5, dst21_r, dst21_l);
 
 5846         for (loop_cnt = 
height >> 2; loop_cnt--;) {
 
 5847             LD_SB4(src_tmp, src_stride, src3, src4, src5, src6);
 
 5848             src_tmp += (4 * src_stride);
 
 5850             VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec0, vec1);
 
 5851             VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec2, vec3);
 
 5852             VSHF_B2_SB(src5, src5, src5, src5, mask0, mask1, vec4, vec5);
 
 5853             VSHF_B2_SB(src6, src6, src6, src6, mask0, mask1, vec6, vec7);
 
 5863             ILVEV_H2_SH(dst4, dst0, dst5, dst1, dst32_r, dst32_l);
 
 5864             ILVEV_H2_SH(dst0, dst2, dst1, dst3, dst43_r, dst43_l);
 
 5873             ILVEV_H2_SH(dst2, dst4, dst3, dst5, dst54_r, dst54_l);
 
 5874             ILVEV_H2_SH(dst4, dst6, dst5, dst7, dst65_r, dst65_l);
 
 5883             SRA_4V(dst0_r, dst0_l, dst1_r, dst1_l, 6);
 
 5884             SRA_4V(dst2_r, dst2_l, dst3_r, dst3_l, 6);
 
 5885             MUL2(dst0_r, weight_vec, dst1_r, weight_vec, dst0_r, dst1_r);
 
 5886             MUL2(dst2_r, weight_vec, dst3_r, weight_vec, dst2_r, dst3_r);
 
 5887             MUL2(dst0_l, weight_vec, dst1_l, weight_vec, dst0_l, dst1_l);
 
 5888             MUL2(dst2_l, weight_vec, dst3_l, weight_vec, dst2_l, dst3_l);
 
 5889             SRAR_W4_SW(dst0_r, dst0_l, dst1_r, dst1_l, rnd_vec);
 
 5890             SRAR_W4_SW(dst2_r, dst2_l, dst3_r, dst3_l, rnd_vec);
 
 5891             ADD2(dst0_r, offset_vec, dst1_r, offset_vec, dst0_r, dst1_r);
 
 5892             ADD2(dst2_r, offset_vec, dst3_r, offset_vec, dst2_r, dst3_r);
 
 5893             ADD2(dst0_l, offset_vec, dst1_l, offset_vec, dst0_l, dst1_l);
 
 5894             ADD2(dst2_l, offset_vec, dst3_l, offset_vec, dst2_l, dst3_l);
 
 5896                            dst2_r, dst2_l, dst3_r, dst3_l);
 
 5897             PCKEV_H4_SH(dst0_l, dst0_r, dst1_l, dst1_r, dst2_l, dst2_r, dst3_l,
 
 5898                         dst3_r, tmp0, tmp1, tmp2, tmp3);
 
 5900             ST_D4(out0, out1, 0, 1, 0, 1, dst_tmp, dst_stride);
 
 5901             dst_tmp += (4 * dst_stride);
 
 5920                                      const int8_t *filter_x,
 
 5921                                      const int8_t *filter_y,
 
 5930                                   filter_x, filter_y, 
weight,
 
 5932     } 
else if (4 == 
height) {
 
 5934                                       filter_x, filter_y, 1, 
weight,
 
 5936     } 
else if (6 == 
height) {
 
 5938                                   filter_x, filter_y, 
weight,
 
 5940     } 
else if (0 == (
height % 4)) {
 
 5951                                       const int8_t *filter_x,
 
 5952                                       const int8_t *filter_y,
 
 5959     const uint8_t *src_tmp;
 
 5962     v16i8 
src0, 
src1, 
src2, src3, src4, src5, src6, src7, src8, src9, src10;
 
 5963     v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7;
 
 5964     v16i8 mask0, mask1, mask2, mask3;
 
 5965     v8i16 filt0, filt1, filt_h0, filt_h1, filter_vec;
 
 5966     v4i32 dsth0, dsth1, dsth2, dsth3, dsth4, dsth5, dsth6, dsth7;
 
 5967     v8i16 dst76_r, dst98_r, dst87_r, dst109_r;
 
 5968     v8i16 dst10_r, dst32_r, dst54_r, dst21_r, dst43_r, dst65_r;
 
 5969     v8i16 dst10_l, dst32_l, dst54_l, dst21_l, dst43_l, dst65_l;
 
 5970     v4i32 dst0_r, dst0_l, dst1_r, dst1_l, dst2_r, dst2_l, dst3_r, dst3_l;
 
 5971     v4i32 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, weight_vec, rnd_vec;
 
 5972     v4i32 dst8, dst9, dst10, offset_vec;
 
 5973     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
 
 5976     src -= (src_stride + 1);
 
 5978     filter_vec = 
LD_SH(filter_x);
 
 5982     filter_vec = 
LD_SH(filter_y);
 
 5989     weight_vec = __msa_fill_w(
weight);
 
 5990     rnd_vec = __msa_fill_w(rnd_val);
 
 5991     offset_vec = __msa_fill_w(
offset);
 
 5997     src_tmp += (3 * src_stride);
 
 6014     ILVEV_H2_SH(dsth0, dsth2, dsth1, dsth3, dst10_r, dst10_l);
 
 6015     ILVEV_H2_SH(dsth2, dsth4, dsth3, dsth5, dst21_r, dst21_l);
 
 6017     for (loop_cnt = 4; loop_cnt--;) {
 
 6018         LD_SB4(src_tmp, src_stride, src3, src4, src5, src6);
 
 6019         src_tmp += (4 * src_stride);
 
 6020         VSHF_B2_SB(src3, src3, src3, src3, mask0, mask1, vec0, vec1);
 
 6021         VSHF_B2_SB(src4, src4, src4, src4, mask0, mask1, vec2, vec3);
 
 6022         VSHF_B2_SB(src5, src5, src5, src5, mask0, mask1, vec4, vec5);
 
 6023         VSHF_B2_SB(src6, src6, src6, src6, mask0, mask1, vec6, vec7);
 
 6033         ILVEV_H2_SH(dsth4, dsth0, dsth5, dsth1, dst32_r, dst32_l);
 
 6034         ILVEV_H2_SH(dsth0, dsth2, dsth1, dsth3, dst43_r, dst43_l);
 
 6043         ILVEV_H2_SH(dsth2, dsth4, dsth3, dsth5, dst54_r, dst54_l);
 
 6044         ILVEV_H2_SH(dsth4, dsth6, dsth5, dsth7, dst65_r, dst65_l);
 
 6054         SRA_4V(dst0_r, dst0_l, dst1_r, dst1_l, 6);
 
 6055         SRA_4V(dst2_r, dst2_l, dst3_r, dst3_l, 6);
 
 6056         MUL2(dst0_r, weight_vec, dst1_r, weight_vec, dst0_r, dst1_r);
 
 6057         MUL2(dst2_r, weight_vec, dst3_r, weight_vec, dst2_r, dst3_r);
 
 6058         MUL2(dst0_l, weight_vec, dst1_l, weight_vec, dst0_l, dst1_l);
 
 6059         MUL2(dst2_l, weight_vec, dst3_l, weight_vec, dst2_l, dst3_l);
 
 6060         SRAR_W4_SW(dst0_r, dst0_l, dst1_r, dst1_l, rnd_vec);
 
 6061         SRAR_W4_SW(dst2_r, dst2_l, dst3_r, dst3_l, rnd_vec);
 
 6062         ADD2(dst0_r, offset_vec, dst1_r, offset_vec, dst0_r, dst1_r);
 
 6063         ADD2(dst2_r, offset_vec, dst3_r, offset_vec, dst2_r, dst3_r);
 
 6064         ADD2(dst0_l, offset_vec, dst1_l, offset_vec, dst0_l, dst1_l);
 
 6065         ADD2(dst2_l, offset_vec, dst3_l, offset_vec, dst2_l, dst3_l);
 
 6067                        dst2_r, dst2_l, dst3_r, dst3_l);
 
 6068         PCKEV_H4_SH(dst0_l, dst0_r, dst1_l, dst1_r, dst2_l, dst2_r, dst3_l,
 
 6069                     dst3_r, tmp0, tmp1, tmp2, tmp3);
 
 6071         ST_D4(out0, out1, 0, 1, 0, 1, dst_tmp, dst_stride);
 
 6072         dst_tmp += (4 * dst_stride);
 
 6089     src += (3 * src_stride);
 
 6100     ILVEV_H2_SH(dst0, dst1, dst1, dst2, dst10_r, dst21_r);
 
 6102     for (loop_cnt = 2; loop_cnt--;) {
 
 6103         LD_SB8(
src, src_stride, src3, src4, src5, src6, src7, src8, src9,
 
 6105         src += (8 * src_stride);
 
 6106         VSHF_B2_SB(src3, src7, src3, src7, mask2, mask3, vec0, vec1);
 
 6107         VSHF_B2_SB(src4, src8, src4, src8, mask2, mask3, vec2, vec3);
 
 6108         VSHF_B2_SB(src5, src9, src5, src9, mask2, mask3, vec4, vec5);
 
 6109         VSHF_B2_SB(src6, src10, src6, src10, mask2, mask3, vec6, vec7);
 
 6128         dst32_r = __msa_ilvev_h(dst3, dst2);
 
 6129         ILVEV_H2_SH(dst3, dst4, dst7, dst8, dst43_r, dst87_r);
 
 6130         ILVEV_H2_SH(dst4, dst5, dst8, dst9, dst54_r, dst98_r);
 
 6131         ILVEV_H2_SH(dst5, dst6, dst9, dst10, dst65_r, dst109_r);
 
 6132         dst76_r = __msa_ilvev_h(dst7, dst6);
 
 6141         SRA_4V(dst0, dst1, dst2, dst3, 6);
 
 6142         SRA_4V(dst4, dst5, dst6, dst7, 6);
 
 6143         MUL2(dst0, weight_vec, dst1, weight_vec, dst0, dst1);
 
 6144         MUL2(dst2, weight_vec, dst3, weight_vec, dst2, dst3);
 
 6145         MUL2(dst4, weight_vec, dst5, weight_vec, dst4, dst5);
 
 6146         MUL2(dst6, weight_vec, dst7, weight_vec, dst6, dst7);
 
 6149         ADD2(dst0, offset_vec, dst1, offset_vec, dst0, dst1);
 
 6150         ADD2(dst2, offset_vec, dst3, offset_vec, dst2, dst3);
 
 6151         ADD2(dst4, offset_vec, dst5, offset_vec, dst4, dst5);
 
 6152         ADD2(dst6, offset_vec, dst7, offset_vec, dst6, dst7);
 
 6154                        dst4, dst5, dst6, dst7);
 
 6155         PCKEV_H4_SH(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6, tmp0, tmp1,
 
 6158         ST_W8(out0, out1, 0, 1, 2, 3, 0, 1, 2, 3, 
dst, dst_stride);
 
 6159         dst += (8 * dst_stride);
 
 6171                                       const int8_t *filter_x,
 
 6172                                       const int8_t *filter_y,
 
 6193                                       const int8_t *filter_x,
 
 6194                                       const int8_t *filter_y,
 
 6209                                       const int8_t *filter_x,
 
 6210                                       const int8_t *filter_y,
 
 6221 #define UNIWGT_MC_COPY(WIDTH)                                                \ 
 6222 void ff_hevc_put_hevc_uni_w_pel_pixels##WIDTH##_8_msa(uint8_t *dst,          \ 
 6223                                                       ptrdiff_t dst_stride,  \ 
 6224                                                       const uint8_t *src,    \ 
 6225                                                       ptrdiff_t src_stride,  \ 
 6234     int shift = denom + 14 - 8;                                              \ 
 6235     hevc_uniwgt_copy_##WIDTH##w_msa(src, src_stride, dst, dst_stride,        \ 
 6236                                     height, weight, offset, shift);          \ 
 6249 #undef UNIWGT_MC_COPY 
 6251 #define UNI_W_MC(PEL, DIR, WIDTH, TAP, DIR1, FILT_DIR)                        \ 
 6252 void ff_hevc_put_hevc_uni_w_##PEL##_##DIR##WIDTH##_8_msa(uint8_t *dst,        \ 
 6255                                                          const uint8_t *src,  \ 
 6266     const int8_t *filter = ff_hevc_##PEL##_filters[FILT_DIR];                 \ 
 6267     int shift = denom + 14 - 8;                                               \ 
 6269     hevc_##DIR1##_uniwgt_##TAP##t_##WIDTH##w_msa(src, src_stride, dst,        \ 
 6270                                                  dst_stride, filter, height,  \ 
 6271                                                  weight, offset, shift);      \ 
 6310 #define UNI_W_MC_HV(PEL, WIDTH, TAP)                                          \ 
 6311 void ff_hevc_put_hevc_uni_w_##PEL##_hv##WIDTH##_8_msa(uint8_t *dst,           \ 
 6312                                                       ptrdiff_t dst_stride,   \ 
 6313                                                       const uint8_t *src,     \ 
 6314                                                       ptrdiff_t src_stride,   \ 
 6323     const int8_t *filter_x = ff_hevc_##PEL##_filters[mx];                     \ 
 6324     const int8_t *filter_y = ff_hevc_##PEL##_filters[my];                     \ 
 6325     int shift = denom + 14 - 8;                                               \ 
 6327     hevc_hv_uniwgt_##TAP##t_##WIDTH##w_msa(src, src_stride, dst, dst_stride,  \ 
 6328                                            filter_x, filter_y,  height,       \ 
 6329                                            weight, offset, shift);            \