History

avutil/mips: refactor msa SLDI_Bn_0 and SLDI_Bn macros.

Changing details as following: 1. The previous order of parameters are irregular and difficult to understand. Adjust the order of the parameters according to the rule: (RTYPE, input registers, input mask/input index/..., output registers). Most of the existing msa macros follow the rule. 2. Remove the redundant macro SLDI_Bn_0 and use SLDI_Bn instead.

gxw committed 7 years ago

Commit 92fc0bf1 parent 77937a412 files · +222 −215Browse files

Unified · Split

12 files
  1. libavcodec/mips/h264dsp_msa.c +5 −4
  2. libavcodec/mips/h264qpel_msa.c +32 −32
  3. libavcodec/mips/hevc_lpf_sao_msa.c +36 −34
  4. libavcodec/mips/hevcpred_msa.c +16 −14
  5. libavcodec/mips/hpeldsp_msa.c +42 −24
  6. libavcodec/mips/me_cmp_msa.c +4 −4
  7. libavcodec/mips/qpeldsp_msa.c +42 −42
  8. libavcodec/mips/vp8_mc_msa.c +2 −2
  9. libavcodec/mips/vp9_idct_msa.c +2 −1
  10. libavcodec/mips/vp9_lpf_msa.c +2 −1
  11. libavcodec/mips/vp9_mc_msa.c +8 −8
  12. libavutil/mips/generic_macros_msa.h +31 −49
libavcodec/mips/h264dsp_msa.c+5−4
@@ -618,7 +618,7 @@ static void avc_biwgt_8x16_msa(uint8_t *src, uint8_t *dst, int32_t stride, · 617 unmodified lines
618618 \
619619 out0 = (v16u8) __msa_ilvr_b((v16i8) in1, (v16i8) in0); \
620620 out1 = (v16u8) __msa_sldi_b(zero_m, (v16i8) out0, 2); \
621− SLDI_B2_0_UB(out1, out2, out2, out3, 2); \
621+ SLDI_B2_UB(zero_m, out1, zero_m, out2, 2, out2, out3); \
622622 }
623623
624624 #define AVC_LPF_H_2BYTE_CHROMA_422(src, stride, tc_val, alpha, beta, res) \
@@ -1023,7 +1023,8 @@ static void avc_h_loop_filter_luma_mbaff_intra_msa(uint8_t *src, int32_t stride, · 398 unmodified lines
10231023
10241024 ILVR_W2_SB(tmp2, tmp0, tmp3, tmp1, src6, src3);
10251025 ILVL_W2_SB(tmp2, tmp0, tmp3, tmp1, src1, src5);
1026− SLDI_B4_0_SB(src6, src1, src3, src5, src0, src2, src4, src7, 8);
1026+ SLDI_B4_SB(zeros, src6, zeros, src1, zeros, src3, zeros, src5,
1027+ 8, src0, src2, src4, src7);
10271028
10281029 p0_asub_q0 = __msa_asub_u_b((v16u8) src2, (v16u8) src3);
10291030 p1_asub_p0 = __msa_asub_u_b((v16u8) src1, (v16u8) src2);
@@ -1114,10 +1115,10 @@ static void avc_h_loop_filter_luma_mbaff_intra_msa(uint8_t *src, int32_t stride, · 84 unmodified lines
11141115 ILVRL_H2_SH(zeros, dst2_x, tmp2, tmp3);
11151116
11161117 ILVR_W2_UB(tmp2, tmp0, tmp3, tmp1, dst0, dst4);
1117− SLDI_B2_0_UB(dst0, dst4, dst1, dst5, 8);
1118+ SLDI_B2_UB(zeros, dst0, zeros, dst4, 8, dst1, dst5);
11181119 dst2_x = (v16u8) __msa_ilvl_w((v4i32) tmp2, (v4i32) tmp0);
11191120 dst2_y = (v16u8) __msa_ilvl_w((v4i32) tmp3, (v4i32) tmp1);
1120− SLDI_B2_0_UB(dst2_x, dst2_y, dst3_x, dst3_y, 8);
1121+ SLDI_B2_UB(zeros, dst2_x, zeros, dst2_y, 8, dst3_x, dst3_y);
11211122
11221123 out0 = __msa_copy_u_w((v4i32) dst0, 0);
11231124 out1 = __msa_copy_u_h((v8i16) dst0, 2);
libavcodec/mips/h264qpel_msa.c+32−32
@@ -790,8 +790,8 @@ void ff_put_h264_qpel16_mc10_msa(uint8_t *dst, const uint8_t *src, · 789 unmodified lines
790790 minus5b, res4, res5, res6, res7);
791791 DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b,
792792 plus20b, res4, res5, res6, res7);
793− SLDI_B2_SB(src1, src3, src0, src2, src0, src2, 2);
794− SLDI_B2_SB(src5, src7, src4, src6, src4, src6, 2);
793+ SLDI_B4_SB(src1, src0, src3, src2, src5, src4, src7, src6, 2,
794+ src0, src2, src4, src6);
795795 SRARI_H4_SH(res0, res1, res2, res3, 5);
796796 SRARI_H4_SH(res4, res5, res6, res7, 5);
797797 SAT_SH4_SH(res0, res1, res2, res3, 7);
@@ -858,8 +858,8 @@ void ff_put_h264_qpel16_mc30_msa(uint8_t *dst, const uint8_t *src, · 60 unmodified lines
858858 minus5b, res4, res5, res6, res7);
859859 DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b,
860860 plus20b, res4, res5, res6, res7);
861− SLDI_B2_SB(src1, src3, src0, src2, src0, src2, 3);
862− SLDI_B2_SB(src5, src7, src4, src6, src4, src6, 3);
861+ SLDI_B4_SB(src1, src0, src3, src2, src5, src4, src7, src6, 3,
862+ src0, src2, src4, src6);
863863 SRARI_H4_SH(res0, res1, res2, res3, 5);
864864 SRARI_H4_SH(res4, res5, res6, res7, 5);
865865 SAT_SH4_SH(res0, res1, res2, res3, 7);
@@ -911,10 +911,10 @@ void ff_put_h264_qpel8_mc10_msa(uint8_t *dst, const uint8_t *src, · 45 unmodified lines
911911 VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11);
912912 DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b,
913913 res4, res5, res6, res7);
914− SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 2);
915− SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 2);
916− SLDI_B2_SB(src4, src5, src4, src5, src4, src5, 2);
917− SLDI_B2_SB(src6, src7, src6, src7, src6, src7, 2);
914+ SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 2,
915+ src0, src1, src2, src3);
916+ SLDI_B4_SB(src4, src4, src5, src5, src6, src6, src7, src7, 2,
917+ src4, src5, src6, src7);
918918 PCKEV_D2_SB(src1, src0, src3, src2, src0, src1);
919919 PCKEV_D2_SB(src5, src4, src7, src6, src4, src5);
920920 SRARI_H4_SH(res0, res1, res2, res3, 5);
@@ -966,10 +966,10 @@ void ff_put_h264_qpel8_mc30_msa(uint8_t *dst, const uint8_t *src, · 45 unmodified lines
966966 VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11);
967967 DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b,
968968 res4, res5, res6, res7);
969− SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 3);
970− SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 3);
971− SLDI_B2_SB(src4, src5, src4, src5, src4, src5, 3);
972− SLDI_B2_SB(src6, src7, src6, src7, src6, src7, 3);
969+ SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 3,
970+ src0, src1, src2, src3);
971+ SLDI_B4_SB(src4, src4, src5, src5, src6, src6, src7, src7, 3,
972+ src4, src5, src6, src7);
973973 PCKEV_D2_SB(src1, src0, src3, src2, src0, src1);
974974 PCKEV_D2_SB(src5, src4, src7, src6, src4, src5);
975975 SRARI_H4_SH(res0, res1, res2, res3, 5);
@@ -1007,8 +1007,8 @@ void ff_put_h264_qpel4_mc10_msa(uint8_t *dst, const uint8_t *src, · 31 unmodified lines
10071007 SRARI_H2_SH(res0, res1, 5);
10081008 SAT_SH2_SH(res0, res1, 7);
10091009 res = __msa_pckev_b((v16i8) res1, (v16i8) res0);
1010− SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 2);
1011− SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 2);
1010+ SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 2,
1011+ src0, src1, src2, src3);
10121012 src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1);
10131013 src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3);
10141014 src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1);
@@ -1038,8 +1038,8 @@ void ff_put_h264_qpel4_mc30_msa(uint8_t *dst, const uint8_t *src, · 23 unmodified lines
10381038 SRARI_H2_SH(res0, res1, 5);
10391039 SAT_SH2_SH(res0, res1, 7);
10401040 res = __msa_pckev_b((v16i8) res1, (v16i8) res0);
1041− SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 3);
1042− SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 3);
1041+ SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 3,
1042+ src0, src1, src2, src3);
10431043 src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1);
10441044 src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3);
10451045 src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1);
@@ -3194,8 +3194,8 @@ void ff_avg_h264_qpel16_mc10_msa(uint8_t *dst, const uint8_t *src, · 2148 unmodified lines
31943194 minus5b, res4, res5, res6, res7);
31953195 DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b,
31963196 plus20b, res4, res5, res6, res7);
3197− SLDI_B2_SB(src1, src3, src0, src2, src0, src2, 2);
3198− SLDI_B2_SB(src5, src7, src4, src6, src4, src6, 2);
3197+ SLDI_B4_SB(src1, src0, src3, src2, src5, src4, src7, src6, 2,
3198+ src0, src2, src4, src6);
31993199 SRARI_H4_SH(res0, res1, res2, res3, 5);
32003200 SRARI_H4_SH(res4, res5, res6, res7, 5);
32013201 SAT_SH4_SH(res0, res1, res2, res3, 7);
@@ -3266,8 +3266,8 @@ void ff_avg_h264_qpel16_mc30_msa(uint8_t *dst, const uint8_t *src, · 64 unmodified lines
32663266 minus5b, res4, res5, res6, res7);
32673267 DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b,
32683268 plus20b, res4, res5, res6, res7);
3269− SLDI_B2_SB(src1, src3, src0, src2, src0, src2, 3);
3270− SLDI_B2_SB(src5, src7, src4, src6, src4, src6, 3);
3269+ SLDI_B4_SB(src1, src0, src3, src2, src5, src4, src7, src6, 3,
3270+ src0, src2, src4, src6);
32713271 SRARI_H4_SH(res0, res1, res2, res3, 5);
32723272 SRARI_H4_SH(res4, res5, res6, res7, 5);
32733273 SAT_SH4_SH(res0, res1, res2, res3, 7);
@@ -3323,10 +3323,10 @@ void ff_avg_h264_qpel8_mc10_msa(uint8_t *dst, const uint8_t *src, · 49 unmodified lines
33233323 VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11);
33243324 DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b,
33253325 res4, res5, res6, res7);
3326− SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 2);
3327− SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 2);
3328− SLDI_B2_SB(src4, src5, src4, src5, src4, src5, 2);
3329− SLDI_B2_SB(src6, src7, src6, src7, src6, src7, 2);
3326+ SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 2,
3327+ src0, src1, src2, src3);
3328+ SLDI_B4_SB(src4, src4, src5, src5, src6, src6, src7, src7, 2,
3329+ src4, src5, src6, src7);
33303330 PCKEV_D2_SB(src1, src0, src3, src2, src0, src1);
33313331 PCKEV_D2_SB(src5, src4, src7, src6, src4, src5);
33323332 SRARI_H4_SH(res0, res1, res2, res3, 5);
@@ -3388,10 +3388,10 @@ void ff_avg_h264_qpel8_mc30_msa(uint8_t *dst, const uint8_t *src, · 55 unmodified lines
33883388 VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11);
33893389 DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b,
33903390 res4, res5, res6, res7);
3391− SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 3);
3392− SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 3);
3393− SLDI_B2_SB(src4, src5, src4, src5, src4, src5, 3);
3394− SLDI_B2_SB(src6, src7, src6, src7, src6, src7, 3);
3391+ SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 3,
3392+ src0, src1, src2, src3);
3393+ SLDI_B4_SB(src4, src4, src5, src5, src6, src6, src7, src7, 3,
3394+ src4, src5, src6, src7);
33953395 PCKEV_D2_SB(src1, src0, src3, src2, src0, src1);
33963396 PCKEV_D2_SB(src5, src4, src7, src6, src4, src5);
33973397 SRARI_H4_SH(res0, res1, res2, res3, 5);
@@ -3439,8 +3439,8 @@ void ff_avg_h264_qpel4_mc10_msa(uint8_t *dst, const uint8_t *src, · 41 unmodified lines
34393439 SRARI_H2_SH(out0, out1, 5);
34403440 SAT_SH2_SH(out0, out1, 7);
34413441 res = __msa_pckev_b((v16i8) out1, (v16i8) out0);
3442− SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 2);
3443− SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 2);
3442+ SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 2,
3443+ src0, src1, src2, src3);
34443444 src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1);
34453445 src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3);
34463446 src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1);
@@ -3475,8 +3475,8 @@ void ff_avg_h264_qpel4_mc30_msa(uint8_t *dst, const uint8_t *src, · 28 unmodified lines
34753475 SRARI_H2_SH(out0, out1, 5);
34763476 SAT_SH2_SH(out0, out1, 7);
34773477 res = __msa_pckev_b((v16i8) out1, (v16i8) out0);
3478− SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 3);
3479− SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 3);
3478+ SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 3,
3479+ src0, src1, src2, src3);
34803480 src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1);
34813481 src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3);
34823482 src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1);
libavcodec/mips/hevc_lpf_sao_msa.c+36−34
@@ -1357,6 +1357,7 @@ static void hevc_sao_edge_filter_0degree_8width_msa(uint8_t *dst, · 1356 unmodified lines
13571357 v16u8 cmp_minus10, diff_minus10, diff_minus11;
13581358 v16u8 src0, src1, dst0, src_minus10, src_minus11, src_plus10, src_plus11;
13591359 v16i8 offset, sao_offset = LD_SB(sao_offset_val);
1360+ v16i8 zeros = { 0 };
13601361
13611362 sao_offset = __msa_pckev_b(sao_offset, sao_offset);
13621363 src -= 1;
@@ -1367,8 +1368,8 @@ static void hevc_sao_edge_filter_0degree_8width_msa(uint8_t *dst, · 4 unmodified lines
13671368 for (height -= 2; height; height -= 2) {
13681369 src += (src_stride << 1);
13691370
1370− SLDI_B2_0_UB(src_minus10, src_minus11, src0, src1, 1);
1371− SLDI_B2_0_UB(src_minus10, src_minus11, src_plus10, src_plus11, 2);
1371+ SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 1, src0, src1);
1372+ SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_plus10, src_plus11);
13721373
13731374 PCKEV_D2_UB(src_minus11, src_minus10, src_plus11, src_plus10,
13741375 src_minus10, src_plus10);
@@ -1404,8 +1405,8 @@ static void hevc_sao_edge_filter_0degree_8width_msa(uint8_t *dst, · 29 unmodified lines
14041405 dst += dst_stride;
14051406 }
14061407
1407− SLDI_B2_0_UB(src_minus10, src_minus11, src0, src1, 1);
1408− SLDI_B2_0_UB(src_minus10, src_minus11, src_plus10, src_plus11, 2);
1408+ SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 1, src0, src1);
1409+ SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_plus10, src_plus11);
14091410
14101411 PCKEV_D2_UB(src_minus11, src_minus10, src_plus11, src_plus10, src_minus10,
14111412 src_plus10);
@@ -1473,14 +1474,12 @@ static void hevc_sao_edge_filter_0degree_16multiple_msa(uint8_t *dst, · 61 unmodified lines
14731474 dst_ptr = dst + v_cnt;
14741475 LD_UB4(src_minus1, src_stride, src10, src11, src12, src13);
14751476
1476− SLDI_B2_SB(src10, src11, src_minus10, src_minus11, src_zero0,
1477− src_zero1, 1);
1478− SLDI_B2_SB(src12, src13, src_minus12, src_minus13, src_zero2,
1479− src_zero3, 1);
1480− SLDI_B2_SB(src10, src11, src_minus10, src_minus11, src_plus10,
1481− src_plus11, 2);
1482− SLDI_B2_SB(src12, src13, src_minus12, src_minus13, src_plus12,
1483− src_plus13, 2);
1477+ SLDI_B4_SB(src10, src_minus10, src11, src_minus11,
1478+ src12, src_minus12, src13, src_minus13, 1,
1479+ src_zero0, src_zero1, src_zero2, src_zero3);
1480+ SLDI_B4_SB(src10, src_minus10, src11, src_minus11,
1481+ src12, src_minus12, src13, src_minus13, 2,
1482+ src_plus10, src_plus11, src_plus12, src_plus13);
14841483
14851484 cmp_minus10 = ((v16u8) src_zero0 == src_minus10);
14861485 cmp_plus10 = ((v16u8) src_zero0 == (v16u8) src_plus10);
@@ -1880,6 +1879,7 @@ static void hevc_sao_edge_filter_45degree_4width_msa(uint8_t *dst, · 393 unmodified lines
18801879 v16u8 src_minus11, src10, src11;
18811880 v16i8 src_plus0, src_zero0, src_plus1, src_zero1, dst0;
18821881 v8i16 offset_mask0, offset_mask1;
1882+ v16i8 zeros = { 0 };
18831883
18841884 sao_offset = __msa_pckev_b(sao_offset, sao_offset);
18851885
@@ -1892,8 +1892,8 @@ static void hevc_sao_edge_filter_45degree_4width_msa(uint8_t *dst, · 6 unmodified lines
18921892 for (height -= 2; height; height -= 2) {
18931893 src_orig += (src_stride << 1);
18941894
1895− SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1);
1896− SLDI_B2_0_SB(src10, src11, src_plus0, src_plus1, 2);
1895+ SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1);
1896+ SLDI_B2_SB(zeros, src10, zeros, src11, 2, src_plus0, src_plus1);
18971897
18981898 ILVR_B2_UB(src_plus0, src_minus10, src_plus1, src_minus11, src_minus10,
18991899 src_minus11);
@@ -1938,8 +1938,8 @@ static void hevc_sao_edge_filter_45degree_4width_msa(uint8_t *dst, · 38 unmodified lines
19381938 dst += dst_stride;
19391939 }
19401940
1941− SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1);
1942− SLDI_B2_0_SB(src10, src11, src_plus0, src_plus1, 2);
1941+ SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1);
1942+ SLDI_B2_SB(zeros, src10, zeros, src11, 2, src_plus0, src_plus1);
19431943
19441944 ILVR_B2_UB(src_plus0, src_minus10, src_plus1, src_minus11, src_minus10,
19451945 src_minus11);
@@ -1992,6 +1992,7 @@ static void hevc_sao_edge_filter_45degree_8width_msa(uint8_t *dst, · 46 unmodified lines
19921992 v16u8 src_minus10, src10, src_minus11, src11;
19931993 v16i8 src_zero0, src_plus10, src_zero1, src_plus11, dst0;
19941994 v8i16 offset_mask0, offset_mask1;
1995+ v16i8 zeros = { 0 };
19951996
19961997 sao_offset = __msa_pckev_b(sao_offset, sao_offset);
19971998 src_orig = src - 1;
@@ -2003,8 +2004,8 @@ static void hevc_sao_edge_filter_45degree_8width_msa(uint8_t *dst, · 5 unmodified lines
20032004 for (height -= 2; height; height -= 2) {
20042005 src_orig += (src_stride << 1);
20052006
2006− SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1);
2007− SLDI_B2_0_SB(src10, src11, src_plus10, src_plus11, 2);
2007+ SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1);
2008+ SLDI_B2_SB(zeros, src10, zeros, src11, 2, src_plus10, src_plus11);
20082009
20092010 ILVR_B2_UB(src_plus10, src_minus10, src_plus11, src_minus11,
20102011 src_minus10, src_minus11);
@@ -2048,8 +2049,8 @@ static void hevc_sao_edge_filter_45degree_8width_msa(uint8_t *dst, · 37 unmodified lines
20482049 dst += dst_stride;
20492050 }
20502051
2051− SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1);
2052− SLDI_B2_0_SB(src10, src11, src_plus10, src_plus11, 2);
2052+ SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1);
2053+ SLDI_B2_SB(zeros, src10, zeros, src11, 2, src_plus10, src_plus11);
20532054 ILVR_B2_UB(src_plus10, src_minus10, src_plus11, src_minus11, src_minus10,
20542055 src_minus11);
20552056 ILVR_B2_SB(src_zero0, src_zero0, src_zero1, src_zero1, src_zero0,
@@ -2130,12 +2131,11 @@ static void hevc_sao_edge_filter_45degree_16multiple_msa(uint8_t *dst, · 74 unmodified lines
21302131 src_plus13 = LD_UB(src + 1 + v_cnt + (src_stride << 2));
21312132 src_orig += 16;
21322133
2133− SLDI_B2_SB(src10, src11, src_minus11, src_minus12, src_zero0,
2134− src_zero1, 1);
2135− SLDI_B2_SB(src12, src13, src_minus13, src_minus14, src_zero2,
2136− src_zero3, 1);
2137− SLDI_B2_SB(src11, src12, src_minus12, src_minus13, src_plus10,
2138− src_plus11, 2);
2134+ SLDI_B4_SB(src10, src_minus11, src11, src_minus12,
2135+ src12, src_minus13, src13, src_minus14, 1,
2136+ src_zero0, src_zero1, src_zero2, src_zero3);
2137+ SLDI_B2_SB(src11, src_minus12, src12, src_minus13, 2, src_plus10,
2138+ src_plus11);
21392139
21402140 src_plus12 = __msa_sldi_b((v16i8) src13, (v16i8) src_minus14, 2);
21412141
@@ -2228,6 +2228,7 @@ static void hevc_sao_edge_filter_135degree_4width_msa(uint8_t *dst, · 86 unmodified lines
22282228 v16u8 cmp_minus10, diff_minus10, cmp_minus11, diff_minus11;
22292229 v16u8 src_minus10, src10, src_minus11, src11;
22302230 v8i16 offset_mask0, offset_mask1;
2231+ v16i8 zeros = { 0 };
22312232
22322233 sao_offset = __msa_pckev_b(sao_offset, sao_offset);
22332234 src_orig = src - 1;
@@ -2239,8 +2240,8 @@ static void hevc_sao_edge_filter_135degree_4width_msa(uint8_t *dst, · 5 unmodified lines
22392240 for (height -= 2; height; height -= 2) {
22402241 src_orig += (src_stride << 1);
22412242
2242− SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1);
2243− SLDI_B2_0_UB(src_minus10, src_minus11, src_minus10, src_minus11, 2);
2243+ SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1);
2244+ SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_minus10, src_minus11);
22442245
22452246 ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10,
22462247 src_minus11);
@@ -2286,8 +2287,8 @@ static void hevc_sao_edge_filter_135degree_4width_msa(uint8_t *dst, · 39 unmodified lines
22862287 dst += dst_stride;
22872288 }
22882289
2289− SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1);
2290− SLDI_B2_0_UB(src_minus10, src_minus11, src_minus10, src_minus11, 2);
2290+ SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1);
2291+ SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_minus10, src_minus11);
22912292
22922293 ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10,
22932294 src_minus11);
@@ -2342,6 +2343,7 @@ static void hevc_sao_edge_filter_135degree_8width_msa(uint8_t *dst, · 48 unmodified lines
23422343 v16u8 src_minus10, src10, src_minus11, src11;
23432344 v16i8 src_zero0, src_zero1, dst0;
23442345 v8i16 offset_mask0, offset_mask1;
2346+ v16i8 zeros = { 0 };
23452347
23462348 sao_offset = __msa_pckev_b(sao_offset, sao_offset);
23472349 src_orig = src - 1;
@@ -2353,8 +2355,8 @@ static void hevc_sao_edge_filter_135degree_8width_msa(uint8_t *dst, · 5 unmodified lines
23532355 for (height -= 2; height; height -= 2) {
23542356 src_orig += (src_stride << 1);
23552357
2356− SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1);
2357− SLDI_B2_0_UB(src_minus10, src_minus11, src_minus10, src_minus11, 2);
2358+ SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1);
2359+ SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_minus10, src_minus11);
23582360 ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10,
23592361 src_minus11);
23602362 ILVR_B2_SB(src_zero0, src_zero0, src_zero1, src_zero1, src_zero0,
@@ -2398,8 +2400,8 @@ static void hevc_sao_edge_filter_135degree_8width_msa(uint8_t *dst, · 37 unmodified lines
23982400 dst += dst_stride;
23992401 }
24002402
2401− SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1);
2402− SLDI_B2_0_UB(src_minus10, src_minus11, src_minus10, src_minus11, 2);
2403+ SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1);
2404+ SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_minus10, src_minus11);
24032405 ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10,
24042406 src_minus11);
24052407 ILVR_B2_SB(src_zero0, src_zero0, src_zero1, src_zero1, src_zero0,
libavcodec/mips/hevcpred_msa.c+16−14
@@ -998,7 +998,8 @@ static void hevc_intra_pred_angular_upper_4width_msa(const uint8_t *src_top, · 997 unmodified lines
998998 ILVR_D2_SH(fact3, fact1, fact7, fact5, fact1, fact3);
999999 ILVR_B4_SH(zero, top0, zero, top1, zero, top2, zero, top3,
10001000 diff0, diff2, diff4, diff6);
1001− SLDI_B4_0_SH(diff0, diff2, diff4, diff6, diff1, diff3, diff5, diff7, 2);
1001+ SLDI_B4_SH(zero, diff0, zero, diff2, zero, diff4, zero, diff6, 2,
1002+ diff1, diff3, diff5, diff7);
10021003 ILVR_D2_SH(diff2, diff0, diff6, diff4, diff0, diff2);
10031004 ILVR_D2_SH(diff3, diff1, diff7, diff5, diff1, diff3);
10041005 MUL2(diff1, fact0, diff3, fact2, diff1, diff3);
@@ -1093,8 +1094,8 @@ static void hevc_intra_pred_angular_upper_8width_msa(const uint8_t *src_top, · 88 unmodified lines
10931094 UNPCK_UB_SH(top2, diff4, diff5);
10941095 UNPCK_UB_SH(top3, diff6, diff7);
10951096
1096− SLDI_B2_SH(diff1, diff3, diff0, diff2, diff1, diff3, 2);
1097− SLDI_B2_SH(diff5, diff7, diff4, diff6, diff5, diff7, 2);
1097+ SLDI_B4_SH(diff1, diff0, diff3, diff2, diff5, diff4, diff7, diff6, 2,
1098+ diff1, diff3, diff5, diff7);
10981099 MUL4(diff1, fact0, diff3, fact2, diff5, fact4, diff7, fact6,
10991100 diff1, diff3, diff5, diff7);
11001101
@@ -1186,8 +1187,8 @@ static void hevc_intra_pred_angular_upper_16width_msa(const uint8_t *src_top, · 85 unmodified lines
11861187 fact6 = __msa_fill_h(fact_val3);
11871188 fact7 = __msa_fill_h(32 - fact_val3);
11881189
1189− SLDI_B2_UB(top1, top3, top0, top2, top1, top3, 1);
1190− SLDI_B2_UB(top5, top7, top4, top6, top5, top7, 1);
1190+ SLDI_B4_UB(top1, top0, top3, top2, top5, top4, top7, top6, 1,
1191+ top1, top3, top5, top7);
11911192 UNPCK_UB_SH(top0, diff0, diff1);
11921193 UNPCK_UB_SH(top1, diff2, diff3);
11931194 UNPCK_UB_SH(top2, diff4, diff5);
@@ -1297,8 +1298,8 @@ static void hevc_intra_pred_angular_upper_32width_msa(const uint8_t *src_top, · 103 unmodified lines
12971298 top2 = top1;
12981299 top6 = top5;
12991300
1300− SLDI_B2_UB(top1, top3, top0, top2, top1, top3, 1);
1301− SLDI_B2_UB(top5, top7, top4, top6, top5, top7, 1);
1301+ SLDI_B4_UB(top1, top0, top3, top2, top5, top4, top7, top6, 1,
1302+ top1, top3, top5, top7);
13021303 UNPCK_UB_SH(top0, diff0, diff1);
13031304 UNPCK_UB_SH(top1, diff2, diff3);
13041305 UNPCK_UB_SH(top2, diff4, diff5);
@@ -1407,7 +1408,8 @@ static void hevc_intra_pred_angular_lower_4width_msa(const uint8_t *src_top, · 102 unmodified lines
14071408 ILVR_D2_SH(fact3, fact1, fact7, fact5, fact1, fact3);
14081409 ILVR_B4_SH(zero, top0, zero, top1, zero, top2, zero, top3,
14091410 diff0, diff2, diff4, diff6);
1410− SLDI_B4_0_SH(diff0, diff2, diff4, diff6, diff1, diff3, diff5, diff7, 2);
1411+ SLDI_B4_SH(zero, diff0, zero, diff2, zero, diff4, zero, diff6, 2,
1412+ diff1, diff3, diff5, diff7);
14111413 ILVR_D2_SH(diff2, diff0, diff6, diff4, diff0, diff2);
14121414 ILVR_D2_SH(diff3, diff1, diff7, diff5, diff1, diff3);
14131415 MUL2(diff1, fact0, diff3, fact2, diff1, diff3);
@@ -1511,8 +1513,8 @@ static void hevc_intra_pred_angular_lower_8width_msa(const uint8_t *src_top, · 97 unmodified lines
15111513 UNPCK_UB_SH(top1, diff2, diff3);
15121514 UNPCK_UB_SH(top2, diff4, diff5);
15131515 UNPCK_UB_SH(top3, diff6, diff7);
1514− SLDI_B2_SH(diff1, diff3, diff0, diff2, diff1, diff3, 2);
1515− SLDI_B2_SH(diff5, diff7, diff4, diff6, diff5, diff7, 2);
1516+ SLDI_B4_SH(diff1, diff0, diff3, diff2, diff5, diff4, diff7, diff6, 2,
1517+ diff1, diff3, diff5, diff7);
15161518 MUL4(diff1, fact0, diff3, fact2, diff5, fact4, diff7, fact6,
15171519 diff1, diff3, diff5, diff7);
15181520
@@ -1606,8 +1608,8 @@ static void hevc_intra_pred_angular_lower_16width_msa(const uint8_t *src_top, · 87 unmodified lines
16061608 fact6 = __msa_fill_h(fact_val3);
16071609 fact7 = __msa_fill_h(32 - fact_val3);
16081610
1609− SLDI_B2_SB(top1, top3, top0, top2, top1, top3, 1);
1610− SLDI_B2_SB(top5, top7, top4, top6, top5, top7, 1);
1611+ SLDI_B4_SB(top1, top0, top3, top2, top5, top4, top7, top6, 1,
1612+ top1, top3, top5, top7);
16111613
16121614 UNPCK_UB_SH(top0, diff0, diff1);
16131615 UNPCK_UB_SH(top1, diff2, diff3);
@@ -1713,8 +1715,8 @@ static void hevc_intra_pred_angular_lower_32width_msa(const uint8_t *src_top, · 99 unmodified lines
17131715 top2 = top1;
17141716 top6 = top5;
17151717
1716− SLDI_B2_SB(top1, top3, top0, top2, top1, top3, 1);
1717− SLDI_B2_SB(top5, top7, top4, top6, top5, top7, 1);
1718+ SLDI_B4_SB(top1, top0, top3, top2, top5, top4, top7, top6, 1,
1719+ top1, top3, top5, top7);
17181720
17191721 UNPCK_UB_SH(top0, diff0, diff1);
17201722 UNPCK_UB_SH(top1, diff2, diff3);
libavcodec/mips/hpeldsp_msa.c+42−24
@@ -59,12 +59,13 @@ static void common_hz_bil_4w_msa(const uint8_t *src, int32_t src_stride, · 58 unmodified lines
5959 uint8_t loop_cnt;
6060 uint32_t out0, out1;
6161 v16u8 src0, src1, src0_sld1, src1_sld1, res0, res1;
62+ v16i8 zeros = { 0 };
6263
6364 for (loop_cnt = (height >> 1); loop_cnt--;) {
6465 LD_UB2(src, src_stride, src0, src1);
6566 src += (2 * src_stride);
6667
67− SLDI_B2_0_UB(src0, src1, src0_sld1, src1_sld1, 1);
68+ SLDI_B2_UB(zeros, src0, zeros, src1, 1, src0_sld1, src1_sld1);
6869 AVER_UB2_UB(src0_sld1, src0, src1_sld1, src1, res0, res1);
6970
7071 out0 = __msa_copy_u_w((v4i32) res0, 0);
@@ -82,13 +83,14 @@ static void common_hz_bil_8w_msa(const uint8_t *src, int32_t src_stride, · 11 unmodified lines
8283 {
8384 uint8_t loop_cnt;
8485 v16i8 src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1, src3_sld1;
86+ v16i8 zeros = { 0 };
8587
8688 for (loop_cnt = (height >> 2); loop_cnt--;) {
8789 LD_SB4(src, src_stride, src0, src1, src2, src3);
8890 src += (4 * src_stride);
8991
90− SLDI_B4_0_SB(src0, src1, src2, src3,
91− src0_sld1, src1_sld1, src2_sld1, src3_sld1, 1);
92+ SLDI_B4_SB(zeros, src0, zeros, src1, zeros, src2, zeros, src3, 1,
93+ src0_sld1, src1_sld1, src2_sld1, src3_sld1);
9294 AVER_ST8x4_UB(src0, src0_sld1, src1, src1_sld1,
9395 src2, src2_sld1, src3, src3_sld1, dst, dst_stride);
9496 dst += (4 * dst_stride);
@@ -125,14 +127,15 @@ static void common_hz_bil_no_rnd_8x8_msa(const uint8_t *src, int32_t src_stride, · 30 unmodified lines
125127 v16i8 src0, src1, src2, src3, src4, src5, src6, src7;
126128 v16i8 src0_sld1, src1_sld1, src2_sld1, src3_sld1;
127129 v16i8 src4_sld1, src5_sld1, src6_sld1, src7_sld1;
130+ v16i8 zeros = { 0 };
128131
129132 LD_SB8(src, src_stride, src0, src1, src2, src3, src4, src5, src6, src7);
130133 src += (8 * src_stride);
131134
132− SLDI_B4_0_SB(src0, src1, src2, src3,
133− src0_sld1, src1_sld1, src2_sld1, src3_sld1, 1);
134− SLDI_B4_0_SB(src4, src5, src6, src7,
135− src4_sld1, src5_sld1, src6_sld1, src7_sld1, 1);
135+ SLDI_B4_SB(zeros, src0, zeros, src1, zeros, src2, zeros, src3, 1,
136+ src0_sld1, src1_sld1, src2_sld1, src3_sld1);
137+ SLDI_B4_SB(zeros, src4, zeros, src5, zeros, src6, zeros, src7, 1,
138+ src4_sld1, src5_sld1, src6_sld1, src7_sld1);
136139
137140 AVE_ST8x4_UB(src0, src0_sld1, src1, src1_sld1,
138141 src2, src2_sld1, src3, src3_sld1, dst, dst_stride);
@@ -145,10 +148,11 @@ static void common_hz_bil_no_rnd_4x8_msa(const uint8_t *src, int32_t src_stride, · 6 unmodified lines
145148 uint8_t *dst, int32_t dst_stride)
146149 {
147150 v16i8 src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1, src3_sld1;
151+ v16i8 zeros = { 0 };
148152
149153 LD_SB4(src, src_stride, src0, src1, src2, src3);
150− SLDI_B4_0_SB(src0, src1, src2, src3,
151− src0_sld1, src1_sld1, src2_sld1, src3_sld1, 1);
154+ SLDI_B4_SB(zeros, src0, zeros, src1, zeros, src2, zeros, src3, 1,
155+ src0_sld1, src1_sld1, src2_sld1, src3_sld1);
152156 AVE_ST8x4_UB(src0, src0_sld1, src1, src1_sld1,
153157 src2, src2_sld1, src3, src3_sld1, dst, dst_stride);
154158 }
@@ -216,12 +220,13 @@ static void common_hz_bil_and_aver_dst_4w_msa(const uint8_t *src, · 61 unmodified lines
216220 v16u8 src0, src1, src0_sld1, src1_sld1, res0, res1;
217221 v16u8 tmp0 = { 0 };
218222 v16u8 tmp1 = { 0 };
223+ v16i8 zeros = { 0 };
219224
220225 for (loop_cnt = (height >> 1); loop_cnt--;) {
221226 LD_UB2(src, src_stride, src0, src1);
222227 src += (2 * src_stride);
223228
224− SLDI_B2_0_UB(src0, src1, src0_sld1, src1_sld1, 1);
229+ SLDI_B2_UB(zeros, src0, zeros, src1, 1, src0_sld1, src1_sld1);
225230
226231 dst0 = LW(dst);
227232 dst1 = LW(dst + dst_stride);
@@ -247,13 +252,14 @@ static void common_hz_bil_and_aver_dst_8w_msa(const uint8_t *src, · 19 unmodified lines
247252 {
248253 uint8_t loop_cnt;
249254 v16i8 src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1, src3_sld1;
255+ v16i8 zeros = { 0 };
250256
251257 for (loop_cnt = (height >> 2); loop_cnt--;) {
252258 LD_SB4(src, src_stride, src0, src1, src2, src3);
253259 src += (4 * src_stride);
254260
255− SLDI_B4_0_SB(src0, src1, src2, src3,
256− src0_sld1, src1_sld1, src2_sld1, src3_sld1, 1);
261+ SLDI_B4_SB(zeros, src0, zeros, src1, zeros, src2, zeros, src3, 1,
262+ src0_sld1, src1_sld1, src2_sld1, src3_sld1);
257263
258264 AVER_DST_ST8x4_UB(src0, src0_sld1, src1, src1_sld1, src2, src2_sld1,
259265 src3, src3_sld1, dst, dst_stride);
@@ -529,6 +535,7 @@ static void common_hv_bil_4w_msa(const uint8_t *src, int32_t src_stride, · 269 unmodified lines
529535 v16i8 src0, src1, src2, src0_sld1, src1_sld1, src2_sld1;
530536 v16u8 src0_r, src1_r, src2_r, res;
531537 v8u16 add0, add1, add2, sum0, sum1;
538+ v16i8 zeros = { 0 };
532539
533540 src0 = LD_SB(src);
534541 src += src_stride;
@@ -537,7 +544,8 @@ static void common_hv_bil_4w_msa(const uint8_t *src, int32_t src_stride, · 2 unmodified lines
537544 LD_SB2(src, src_stride, src1, src2);
538545 src += (2 * src_stride);
539546
540− SLDI_B3_0_SB(src0, src1, src2, src0_sld1, src1_sld1, src2_sld1, 1);
547+ SLDI_B3_SB(zeros, src0, zeros, src1, zeros, src2, 1, src0_sld1,
548+ src1_sld1, src2_sld1);
541549 ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2,
542550 src0_r, src1_r, src2_r);
543551 HADD_UB3_UH(src0_r, src1_r, src2_r, add0, add1, add2);
@@ -565,6 +573,7 @@ static void common_hv_bil_8w_msa(const uint8_t *src, int32_t src_stride, · 21 unmodified lines
565573 v16u8 src0_r, src1_r, src2_r, src3_r, src4_r;
566574 v8u16 add0, add1, add2, add3, add4;
567575 v8u16 sum0, sum1, sum2, sum3;
576+ v16i8 zeros = { 0 };
568577
569578 src0 = LD_SB(src);
570579 src += src_stride;
@@ -573,8 +582,9 @@ static void common_hv_bil_8w_msa(const uint8_t *src, int32_t src_stride, · 2 unmodified lines
573582 LD_SB4(src, src_stride, src1, src2, src3, src4);
574583 src += (4 * src_stride);
575584
576− SLDI_B3_0_SB(src0, src1, src2, src0_sld1, src1_sld1, src2_sld1, 1);
577− SLDI_B2_0_SB(src3, src4, src3_sld1, src4_sld1, 1);
585+ SLDI_B3_SB(zeros, src0, zeros, src1, zeros, src2, 1, src0_sld1,
586+ src1_sld1, src2_sld1);
587+ SLDI_B2_SB(zeros, src3, zeros, src4, 1, src3_sld1, src4_sld1);
578588 ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r,
579589 src1_r, src2_r);
580590 ILVR_B2_UB(src3_sld1, src3, src4_sld1, src4, src3_r, src4_r);
@@ -659,15 +669,17 @@ static void common_hv_bil_no_rnd_8x8_msa(const uint8_t *src, int32_t src_stride, · 78 unmodified lines
659669 v8u16 add0, add1, add2, add3, add4, add5, add6, add7, add8;
660670 v8u16 sum0, sum1, sum2, sum3, sum4, sum5, sum6, sum7;
661671 v16i8 out0, out1;
672+ v16i8 zeros = { 0 };
662673
663674 LD_UB8(src, src_stride, src0, src1, src2, src3, src4, src5, src6, src7);
664675 src += (8 * src_stride);
665676 src8 = LD_UB(src);
666677
667− SLDI_B4_0_UB(src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1,
668− src3_sld1, 1);
669− SLDI_B3_0_UB(src4, src5, src6, src4_sld1, src5_sld1, src6_sld1, 1);
670− SLDI_B2_0_UB(src7, src8, src7_sld1, src8_sld1, 1);
678+ SLDI_B4_UB(zeros, src0, zeros, src1, zeros, src2, zeros, src3, 1,
679+ src0_sld1, src1_sld1, src2_sld1, src3_sld1);
680+ SLDI_B3_UB(zeros, src4, zeros, src5, zeros, src6, 1, src4_sld1,
681+ src5_sld1, src6_sld1);
682+ SLDI_B2_UB(zeros, src7, zeros, src8, 1, src7_sld1, src8_sld1);
671683 ILVR_B4_UH(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src3_sld1,
672684 src3, src0_r, src1_r, src2_r, src3_r);
673685 ILVR_B3_UH(src4_sld1, src4, src5_sld1, src5, src6_sld1, src6, src4_r,
@@ -703,13 +715,15 @@ static void common_hv_bil_no_rnd_4x8_msa(const uint8_t *src, int32_t src_stride, · 29 unmodified lines
703715 v8u16 add0, add1, add2, add3, add4;
704716 v8u16 sum0, sum1, sum2, sum3;
705717 v16i8 out0, out1;
718+ v16i8 zeros = { 0 };
706719
707720 LD_SB4(src, src_stride, src0, src1, src2, src3);
708721 src += (4 * src_stride);
709722 src4 = LD_SB(src);
710723
711− SLDI_B3_0_SB(src0, src1, src2, src0_sld1, src1_sld1, src2_sld1, 1);
712− SLDI_B2_0_SB(src3, src4, src3_sld1, src4_sld1, 1);
724+ SLDI_B3_SB(zeros, src0, zeros, src1, zeros, src2, 1, src0_sld1,
725+ src1_sld1, src2_sld1);
726+ SLDI_B2_SB(zeros, src3, zeros, src4, 1, src3_sld1, src4_sld1);
713727 ILVR_B3_UH(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r,
714728 src1_r, src2_r);
715729 ILVR_B2_UH(src3_sld1, src3, src4_sld1, src4, src3_r, src4_r);
@@ -918,6 +932,7 @@ static void common_hv_bil_and_aver_dst_4w_msa(const uint8_t *src, · 202 unmodified lines
918932 v16u8 src0_r, src1_r, src2_r;
919933 v8u16 add0, add1, add2, sum0, sum1;
920934 v16u8 dst0, dst1, res0, res1;
935+ v16i8 zeros = { 0 };
921936
922937 src0 = LD_SB(src);
923938 src += src_stride;
@@ -927,7 +942,8 @@ static void common_hv_bil_and_aver_dst_4w_msa(const uint8_t *src, · 3 unmodified lines
927942 src += (2 * src_stride);
928943
929944 LD_UB2(dst, dst_stride, dst0, dst1);
930− SLDI_B3_0_SB(src0, src1, src2, src0_sld1, src1_sld1, src2_sld1, 1);
945+ SLDI_B3_SB(zeros, src0, zeros, src1, zeros, src2, 1, src0_sld1,
946+ src1_sld1, src2_sld1);
931947 ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r,
932948 src1_r, src2_r);
933949 HADD_UB3_UH(src0_r, src1_r, src2_r, add0, add1, add2);
@@ -959,6 +975,7 @@ static void common_hv_bil_and_aver_dst_8w_msa(const uint8_t *src, · 25 unmodified lines
959975 v16u8 src0_r, src1_r, src2_r, src3_r, src4_r;
960976 v8u16 add0, add1, add2, add3, add4;
961977 v8u16 sum0, sum1, sum2, sum3;
978+ v16i8 zeros = { 0 };
962979
963980 src0 = LD_SB(src);
964981 src += src_stride;
@@ -968,8 +985,9 @@ static void common_hv_bil_and_aver_dst_8w_msa(const uint8_t *src, · 3 unmodified lines
968985 src += (4 * src_stride);
969986
970987 LD_UB4(dst, dst_stride, dst0, dst1, dst2, dst3);
971− SLDI_B3_0_SB(src0, src1, src2, src0_sld1, src1_sld1, src2_sld1, 1);
972− SLDI_B2_0_SB(src3, src4, src3_sld1, src4_sld1, 1);
988+ SLDI_B3_SB(zeros, src0, zeros, src1, zeros, src2, 1, src0_sld1,
989+ src1_sld1, src2_sld1);
990+ SLDI_B2_SB(zeros, src3, zeros, src4, 1, src3_sld1, src4_sld1);
973991 ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r,
974992 src1_r, src2_r);
975993 ILVR_B2_UB(src3_sld1, src3, src4_sld1, src4, src3_r, src4_r);
libavcodec/mips/me_cmp_msa.c+4−4
@@ -87,8 +87,8 @@ static uint32_t sad_horiz_bilinear_filter_8width_msa(uint8_t *src, · 86 unmodified lines
8787
8888 PCKEV_D2_UB(src1, src0, src3, src2, src0, src1);
8989 PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref4, ref5);
90− SLDI_B2_UB(ref0, ref1, ref0, ref1, ref0, ref1, 1);
91− SLDI_B2_UB(ref2, ref3, ref2, ref3, ref2, ref3, 1);
90+ SLDI_B4_UB(ref0, ref0, ref1, ref1, ref2, ref2, ref3, ref3, 1,
91+ ref0, ref1, ref2, ref3);
9292 PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref0, ref1);
9393 AVER_UB2_UB(ref4, ref0, ref5, ref1, comp0, comp1);
9494 sad += SAD_UB2_UH(src0, src1, comp0, comp1);
@@ -100,8 +100,8 @@ static uint32_t sad_horiz_bilinear_filter_8width_msa(uint8_t *src, · 5 unmodified lines
100100
101101 PCKEV_D2_UB(src1, src0, src3, src2, src0, src1);
102102 PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref4, ref5);
103− SLDI_B2_UB(ref0, ref1, ref0, ref1, ref0, ref1, 1);
104− SLDI_B2_UB(ref2, ref3, ref2, ref3, ref2, ref3, 1);
103+ SLDI_B4_UB(ref0, ref0, ref1, ref1, ref2, ref2, ref3, ref3, 1,
104+ ref0, ref1, ref2, ref3);
105105 PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref0, ref1);
106106 AVER_UB2_UB(ref4, ref0, ref5, ref1, comp0, comp1);
107107 sad += SAD_UB2_UH(src0, src1, comp0, comp1);
libavcodec/mips/qpeldsp_msa.c+42−42
@@ -480,8 +480,8 @@ static void horiz_mc_qpel_aver_src1_8width_msa(const uint8_t *src, · 479 unmodified lines
480480 res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3,
481481 mask0, mask1, mask2, mask3,
482482 const20, const6, const3);
483− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
484− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
483+ SLDI_B4_UB(inp0, inp0, inp1, inp1, inp2, inp2, inp3, inp3, 1,
484+ inp0, inp1, inp2, inp3);
485485 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
486486 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
487487 AVER_UB2_UB(inp0, res0, inp2, res1, res0, res1);
@@ -710,8 +710,8 @@ static void horiz_mc_qpel_no_rnd_aver_src1_8width_msa(const uint8_t *src, · 222 unmodified lines
710710 res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1,
711711 mask2, mask3, const20,
712712 const6, const3);
713− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
714− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
713+ SLDI_B4_UB(inp0, inp0, inp1, inp1, inp2, inp2, inp3, inp3, 1,
714+ inp0, inp1, inp2, inp3);
715715 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
716716 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
717717 res0 = __msa_ave_u_b(inp0, res0);
@@ -948,8 +948,8 @@ static void horiz_mc_qpel_avg_dst_aver_src1_8width_msa(const uint8_t *src, · 230 unmodified lines
948948 mask0, mask1, mask2, mask3,
949949 const20, const6, const3);
950950 LD_UB4(dst, dst_stride, dst0, dst1, dst2, dst3);
951− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
952− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
951+ SLDI_B4_UB(inp0, inp0, inp1, inp1, inp2, inp2, inp3, inp3, 1,
952+ inp0, inp1, inp2, inp3);
953953 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
954954 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
955955 dst0 = (v16u8) __msa_insve_d((v2i64) dst0, 1, (v2i64) dst1);
@@ -3094,7 +3094,7 @@ static void hv_mc_qpel_no_rnd_aver_hv_src10_8x8_msa(const uint8_t *src, · 2138 unmodified lines
30943094 res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1,
30953095 mask2, mask3, const20,
30963096 const6, const3);
3097− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
3097+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
30983098
30993099 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
31003100 horiz0 = __msa_ave_u_b(inp0, res0);
@@ -3104,7 +3104,7 @@ static void hv_mc_qpel_no_rnd_aver_hv_src10_8x8_msa(const uint8_t *src, · 3 unmodified lines
31043104 res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1,
31053105 mask2, mask3, const20,
31063106 const6, const3);
3107− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
3107+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
31083108
31093109 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
31103110 horiz2 = __msa_ave_u_b(inp2, res1);
@@ -3114,7 +3114,7 @@ static void hv_mc_qpel_no_rnd_aver_hv_src10_8x8_msa(const uint8_t *src, · 3 unmodified lines
31143114 res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1,
31153115 mask2, mask3, const20,
31163116 const6, const3);
3117− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
3117+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
31183118
31193119 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
31203120 horiz4 = __msa_ave_u_b(inp0, res0);
@@ -3134,7 +3134,7 @@ static void hv_mc_qpel_no_rnd_aver_hv_src10_8x8_msa(const uint8_t *src, · 13 unmodified lines
31343134 res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1,
31353135 mask2, mask3, const20,
31363136 const6, const3);
3137− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
3137+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
31383138
31393139 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
31403140 horiz6 = __msa_ave_u_b(inp2, res1);
@@ -3389,7 +3389,7 @@ static void hv_mc_qpel_no_rnd_aver_h_src1_8x8_msa(const uint8_t *src, · 248 unmodified lines
33893389 res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1,
33903390 mask2, mask3, const20,
33913391 const6, const3);
3392− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
3392+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
33933393
33943394 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
33953395 horiz0 = __msa_ave_u_b(inp0, res0);
@@ -3399,7 +3399,7 @@ static void hv_mc_qpel_no_rnd_aver_h_src1_8x8_msa(const uint8_t *src, · 3 unmodified lines
33993399 res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1,
34003400 mask2, mask3, const20,
34013401 const6, const3);
3402− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
3402+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
34033403
34043404 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
34053405 horiz2 = __msa_ave_u_b(inp2, res1);
@@ -3409,7 +3409,7 @@ static void hv_mc_qpel_no_rnd_aver_h_src1_8x8_msa(const uint8_t *src, · 3 unmodified lines
34093409 res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1,
34103410 mask2, mask3, const20,
34113411 const6, const3);
3412− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
3412+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
34133413
34143414 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
34153415 horiz4 = __msa_ave_u_b(inp0, res0);
@@ -3427,7 +3427,7 @@ static void hv_mc_qpel_no_rnd_aver_h_src1_8x8_msa(const uint8_t *src, · 11 unmodified lines
34273427 res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1,
34283428 mask2, mask3, const20,
34293429 const6, const3);
3430− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
3430+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
34313431
34323432 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
34333433 horiz6 = __msa_ave_u_b(inp2, res1);
@@ -3691,7 +3691,7 @@ static void hv_mc_qpel_no_rnd_aver_hv_src11_8x8_msa(const uint8_t *src, · 257 unmodified lines
36913691 res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1,
36923692 mask2, mask3, const20,
36933693 const6, const3);
3694− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
3694+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
36953695
36963696 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
36973697 horiz0 = __msa_ave_u_b(inp0, res0);
@@ -3701,7 +3701,7 @@ static void hv_mc_qpel_no_rnd_aver_hv_src11_8x8_msa(const uint8_t *src, · 3 unmodified lines
37013701 res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1,
37023702 mask2, mask3, const20,
37033703 const6, const3);
3704− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
3704+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
37053705
37063706 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
37073707 horiz2 = __msa_ave_u_b(inp2, res1);
@@ -3712,7 +3712,7 @@ static void hv_mc_qpel_no_rnd_aver_hv_src11_8x8_msa(const uint8_t *src, · 4 unmodified lines
37123712 mask2, mask3, const20,
37133713 const6, const3);
37143714
3715− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
3715+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
37163716 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
37173717 horiz4 = __msa_ave_u_b(inp0, res0);
37183718 horiz5 = (v16u8) __msa_splati_d((v2i64) horiz4, 1);
@@ -3731,7 +3731,7 @@ static void hv_mc_qpel_no_rnd_aver_hv_src11_8x8_msa(const uint8_t *src, · 12 unmodified lines
37313731 res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1,
37323732 mask2, mask3, const20,
37333733 const6, const3);
3734− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
3734+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
37353735
37363736 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
37373737 horiz6 = __msa_ave_u_b(inp2, res1);
@@ -4134,12 +4134,12 @@ static void hv_mc_qpel_aver_hv_src10_8x8_msa(const uint8_t *src, · 396 unmodified lines
41344134 const20, const6, const3);
41354135 res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3,
41364136 const20, const6, const3);
4137− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
4137+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
41384138
41394139 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
41404140 horiz0 = __msa_aver_u_b(inp0, res0);
41414141 horiz1 = (v16u8) __msa_splati_d((v2i64) horiz0, 1);
4142− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
4142+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
41434143
41444144 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
41454145 horiz2 = __msa_aver_u_b(inp2, res1);
@@ -4150,12 +4150,12 @@ static void hv_mc_qpel_aver_hv_src10_8x8_msa(const uint8_t *src, · 4 unmodified lines
41504150 const20, const6, const3);
41514151 res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3,
41524152 const20, const6, const3);
4153− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
4153+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
41544154
41554155 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
41564156 horiz4 = __msa_aver_u_b(inp0, res0);
41574157 horiz5 = (v16u8) __msa_splati_d((v2i64) horiz4, 1);
4158− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
4158+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
41594159
41604160 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
41614161 horiz6 = __msa_aver_u_b(inp2, res1);
@@ -4410,12 +4410,12 @@ static void hv_mc_qpel_aver_h_src1_8x8_msa(const uint8_t *src, · 248 unmodified lines
44104410 const20, const6, const3);
44114411 res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3,
44124412 const20, const6, const3);
4413− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
4413+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
44144414
44154415 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
44164416 horiz0 = __msa_aver_u_b(inp0, res0);
44174417 horiz1 = (v16u8) __msa_splati_d((v2i64) horiz0, 1);
4418− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
4418+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
44194419
44204420 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
44214421 horiz2 = __msa_aver_u_b(inp2, res1);
@@ -4426,12 +4426,12 @@ static void hv_mc_qpel_aver_h_src1_8x8_msa(const uint8_t *src, · 4 unmodified lines
44264426 const20, const6, const3);
44274427 res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3,
44284428 const20, const6, const3);
4429− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
4429+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
44304430
44314431 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
44324432 horiz4 = __msa_aver_u_b(inp0, res0);
44334433 horiz5 = (v16u8) __msa_splati_d((v2i64) horiz4, 1);
4434− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
4434+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
44354435
44364436 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
44374437 horiz6 = __msa_aver_u_b(inp2, res1);
@@ -4690,14 +4690,14 @@ static void hv_mc_qpel_aver_hv_src11_8x8_msa(const uint8_t *src, · 252 unmodified lines
46904690 res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1,
46914691 mask0, mask1, mask2, mask3,
46924692 const20, const6, const3);
4693− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
4693+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
46944694
46954695 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
46964696 horiz0 = __msa_aver_u_b(inp0, res0);
46974697 horiz1 = (v16u8) __msa_splati_d((v2i64) horiz0, 1);
46984698 res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3,
46994699 const20, const6, const3);
4700− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
4700+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
47014701
47024702 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
47034703 horiz2 = __msa_aver_u_b(inp2, res1);
@@ -4706,7 +4706,7 @@ static void hv_mc_qpel_aver_hv_src11_8x8_msa(const uint8_t *src, · 2 unmodified lines
47064706 src += (2 * src_stride);
47074707 res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3,
47084708 const20, const6, const3);
4709− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
4709+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
47104710
47114711 inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1);
47124712 horiz4 = __msa_aver_u_b(inp0, res0);
@@ -4725,7 +4725,7 @@ static void hv_mc_qpel_aver_hv_src11_8x8_msa(const uint8_t *src, · 12 unmodified lines
47254725
47264726 res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3,
47274727 const20, const6, const3);
4728− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
4728+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
47294729
47304730 inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3);
47314731 horiz6 = __msa_aver_u_b(inp2, res1);
@@ -5020,7 +5020,7 @@ static void hv_mc_qpel_avg_dst_aver_hv_src10_8x8_msa(const uint8_t *src, · 288 unmodified lines
50205020
50215021 LD_UB2(src, src_stride, inp2, inp3);
50225022 src += (2 * src_stride);
5023− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
5023+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
50245024
50255025 inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0);
50265026 horiz0 = __msa_aver_u_b(inp0, res0);
@@ -5029,7 +5029,7 @@ static void hv_mc_qpel_avg_dst_aver_hv_src10_8x8_msa(const uint8_t *src, · 2 unmodified lines
50295029 const20, const6, const3);
50305030 LD_UB2(src, src_stride, inp0, inp1);
50315031 src += (2 * src_stride);
5032− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
5032+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
50335033
50345034 inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2);
50355035 horiz2 = __msa_aver_u_b(inp2, res1);
@@ -5037,7 +5037,7 @@ static void hv_mc_qpel_avg_dst_aver_hv_src10_8x8_msa(const uint8_t *src, · 1 unmodified line
50375037 res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3,
50385038 const20, const6, const3);
50395039
5040− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
5040+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
50415041
50425042 inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0);
50435043 horiz4 = __msa_aver_u_b(inp0, res0);
@@ -5060,7 +5060,7 @@ static void hv_mc_qpel_avg_dst_aver_hv_src10_8x8_msa(const uint8_t *src, · 16 unmodified lines
50605060 res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3,
50615061 const20, const6, const3);
50625062
5063− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
5063+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
50645064
50655065 inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2);
50665066 horiz6 = __msa_aver_u_b(inp2, res1);
@@ -5347,7 +5347,7 @@ static void hv_mc_qpel_avg_dst_aver_h_src1_8x8_msa(const uint8_t *src, · 280 unmodified lines
53475347 const20, const6, const3);
53485348 LD_UB2(src, src_stride, inp2, inp3);
53495349 src += (2 * src_stride);
5350− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
5350+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
53515351
53525352 inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0);
53535353 horiz0 = __msa_aver_u_b(inp0, res0);
@@ -5356,7 +5356,7 @@ static void hv_mc_qpel_avg_dst_aver_h_src1_8x8_msa(const uint8_t *src, · 2 unmodified lines
53565356 const20, const6, const3);
53575357 LD_UB2(src, src_stride, inp0, inp1);
53585358 src += (2 * src_stride);
5359− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
5359+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
53605360
53615361 inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2);
53625362 horiz2 = __msa_aver_u_b(inp2, res1);
@@ -5364,7 +5364,7 @@ static void hv_mc_qpel_avg_dst_aver_h_src1_8x8_msa(const uint8_t *src, · 1 unmodified line
53645364 res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3,
53655365 const20, const6, const3);
53665366
5367− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
5367+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
53685368
53695369 inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0);
53705370 horiz4 = __msa_aver_u_b(inp0, res0);
@@ -5385,7 +5385,7 @@ static void hv_mc_qpel_avg_dst_aver_h_src1_8x8_msa(const uint8_t *src, · 14 unmodified lines
53855385 res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3,
53865386 const20, const6, const3);
53875387
5388− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
5388+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
53895389
53905390 inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2);
53915391 horiz6 = __msa_aver_u_b(inp2, res1);
@@ -5684,7 +5684,7 @@ static void hv_mc_qpel_avg_dst_aver_hv_src11_8x8_msa(const uint8_t *src, · 292 unmodified lines
56845684 const20, const6, const3);
56855685 LD_UB2(src, src_stride, inp2, inp3);
56865686 src += (2 * src_stride);
5687− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
5687+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
56885688
56895689 inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0);
56905690 horiz0 = __msa_aver_u_b(inp0, res0);
@@ -5693,14 +5693,14 @@ static void hv_mc_qpel_avg_dst_aver_hv_src11_8x8_msa(const uint8_t *src, · 2 unmodified lines
56935693 const20, const6, const3);
56945694 LD_UB2(src, src_stride, inp0, inp1);
56955695 src += (2 * src_stride);
5696− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
5696+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
56975697
56985698 inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2);
56995699 horiz2 = __msa_aver_u_b(inp2, res1);
57005700 horiz3 = (v16u8) __msa_splati_d((v2i64) horiz2, 1);
57015701 res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3,
57025702 const20, const6, const3);
5703− SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1);
5703+ SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1);
57045704
57055705 inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0);
57065706 horiz4 = __msa_aver_u_b(inp0, res0);
@@ -5721,7 +5721,7 @@ static void hv_mc_qpel_avg_dst_aver_hv_src11_8x8_msa(const uint8_t *src, · 14 unmodified lines
57215721 src += (2 * src_stride);
57225722 res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3,
57235723 const20, const6, const3);
5724− SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1);
5724+ SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3);
57255725
57265726 inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2);
57275727 horiz6 = __msa_aver_u_b(inp2, res1);
libavcodec/mips/vp8_mc_msa.c+2−2
@@ -1995,8 +1995,8 @@ static void common_hv_2ht_2vt_4x8_msa(uint8_t *src, int32_t src_stride, · 1994 unmodified lines
19951995 hz_out4 = HORIZ_2TAP_FILT_UH(src4, src5, mask, filt_hz, 7);
19961996 hz_out6 = HORIZ_2TAP_FILT_UH(src6, src7, mask, filt_hz, 7);
19971997 hz_out8 = HORIZ_2TAP_FILT_UH(src8, src8, mask, filt_hz, 7);
1998− SLDI_B3_UH(hz_out2, hz_out4, hz_out6, hz_out0, hz_out2, hz_out4, hz_out1,
1999− hz_out3, hz_out5, 8);
1998+ SLDI_B3_UH(hz_out2, hz_out0, hz_out4, hz_out2, hz_out6, hz_out4, 8, hz_out1,
1999+ hz_out3, hz_out5);
20002000 hz_out7 = (v8u16) __msa_pckod_d((v2i64) hz_out8, (v2i64) hz_out6);
20012001
20022002 ILVEV_B2_UB(hz_out0, hz_out1, hz_out2, hz_out3, vec0, vec1);
libavcodec/mips/vp9_idct_msa.c+2−1
@@ -249,6 +249,7 @@ static const int32_t sinpi_4_9 = 15212; · 248 unmodified lines
249249 v8i16 c0_m, c1_m, c2_m, c3_m; \
250250 v8i16 step0_m, step1_m; \
251251 v4i32 tmp0_m, tmp1_m, tmp2_m, tmp3_m; \
252+ v16i8 zeros = { 0 }; \
252253 \
253254 c0_m = VP9_SET_COSPI_PAIR(cospi_16_64, cospi_16_64); \
254255 c1_m = VP9_SET_COSPI_PAIR(cospi_16_64, -cospi_16_64); \
@@ -262,7 +263,7 @@ static const int32_t sinpi_4_9 = 15212; · 7 unmodified lines
262263 SRARI_W4_SW(tmp0_m, tmp1_m, tmp2_m, tmp3_m, VP9_DCT_CONST_BITS); \
263264 \
264265 PCKEV_H2_SW(tmp1_m, tmp0_m, tmp3_m, tmp2_m, tmp0_m, tmp2_m); \
265− SLDI_B2_0_SW(tmp0_m, tmp2_m, tmp1_m, tmp3_m, 8); \
266+ SLDI_B2_SW(zeros, tmp0_m, zeros, tmp2_m, 8, tmp1_m, tmp3_m); \
266267 BUTTERFLY_4((v8i16) tmp0_m, (v8i16) tmp1_m, \
267268 (v8i16) tmp2_m, (v8i16) tmp3_m, \
268269 out0, out1, out2, out3); \
libavcodec/mips/vp9_lpf_msa.c+2−1
@@ -1673,6 +1673,7 @@ static void vp9_transpose_16x8_to_8x16(uint8_t *input, int32_t in_pitch, · 1672 unmodified lines
16731673 v16u8 p7_org, p6_org, p5_org, p4_org, p3_org, p2_org, p1_org, p0_org;
16741674 v16i8 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
16751675 v16u8 p7, p6, p5, p4, p3, p2, p1, p0, q0, q1, q2, q3, q4, q5, q6, q7;
1676+ v16i8 zeros = { 0 };
16761677
16771678 LD_UB8(input, in_pitch,
16781679 p7_org, p6_org, p5_org, p4_org, p3_org, p2_org, p1_org, p0_org);
@@ -1686,7 +1687,7 @@ static void vp9_transpose_16x8_to_8x16(uint8_t *input, int32_t in_pitch, · 7 unmodified lines
16861687 ILVL_B2_SB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp7);
16871688 ILVR_W2_UB(tmp6, tmp4, tmp7, tmp5, q0, q4);
16881689 ILVL_W2_UB(tmp6, tmp4, tmp7, tmp5, q2, q6);
1689− SLDI_B4_0_UB(q0, q2, q4, q6, q1, q3, q5, q7, 8);
1690+ SLDI_B4_UB(zeros, q0, zeros, q2, zeros, q4, zeros, q6, 8, q1, q3, q5, q7);
16901691
16911692 ST_UB8(p7, p6, p5, p4, p3, p2, p1, p0, output, out_pitch);
16921693 output += (8 * out_pitch);
libavcodec/mips/vp9_mc_msa.c+8−8
@@ -795,7 +795,7 @@ static void common_hv_8ht_8vt_4w_msa(const uint8_t *src, int32_t src_stride, · 794 unmodified lines
795795 filt_hz1, filt_hz2, filt_hz3);
796796 hz_out5 = HORIZ_8TAP_FILT(src5, src6, mask0, mask1, mask2, mask3, filt_hz0,
797797 filt_hz1, filt_hz2, filt_hz3);
798− SLDI_B2_SH(hz_out2, hz_out4, hz_out0, hz_out2, hz_out1, hz_out3, 8);
798+ SLDI_B2_SH(hz_out2, hz_out0, hz_out4, hz_out2, 8, hz_out1, hz_out3);
799799
800800 filt = LD_SH(filter_vert);
801801 SPLATI_H4_SH(filt, 0, 1, 2, 3, filt_vt0, filt_vt1, filt_vt2, filt_vt3);
@@ -1585,7 +1585,7 @@ static void common_hv_8ht_8vt_and_aver_dst_4w_msa(const uint8_t *src, · 783 unmodified lines
15851585 filt_hz1, filt_hz2, filt_hz3);
15861586 hz_out5 = HORIZ_8TAP_FILT(src5, src6, mask0, mask1, mask2, mask3, filt_hz0,
15871587 filt_hz1, filt_hz2, filt_hz3);
1588− SLDI_B2_SH(hz_out2, hz_out4, hz_out0, hz_out2, hz_out1, hz_out3, 8);
1588+ SLDI_B2_SH(hz_out2, hz_out0, hz_out4, hz_out2, 8, hz_out1, hz_out3);
15891589
15901590 filt = LD_SH(filter_vert);
15911591 SPLATI_H4_SH(filt, 0, 1, 2, 3, filt_vt0, filt_vt1, filt_vt2, filt_vt3);
@@ -2093,7 +2093,7 @@ void ff_put_bilin_64h_msa(uint8_t *dst, ptrdiff_t dst_stride, · 501 unmodified lines
20932093 src4 = LD_SB(src + 32);
20942094 src6 = LD_SB(src + 48);
20952095 src7 = LD_SB(src + 56);
2096− SLDI_B3_SB(src2, src4, src6, src0, src2, src4, src1, src3, src5, 8);
2096+ SLDI_B3_SB(src2, src0, src4, src2, src6, src4, 8, src1, src3, src5);
20972097 src += src_stride;
20982098
20992099 VSHF_B2_UB(src0, src0, src1, src1, mask, mask, vec0, vec1);
@@ -2544,8 +2544,8 @@ static void common_hv_2ht_2vt_4x8_msa(const uint8_t *src, int32_t src_stride, · 444 unmodified lines
25442544 hz_out4 = HORIZ_2TAP_FILT_UH(src4, src5, mask, filt_hz, 7);
25452545 hz_out6 = HORIZ_2TAP_FILT_UH(src6, src7, mask, filt_hz, 7);
25462546 hz_out8 = HORIZ_2TAP_FILT_UH(src8, src8, mask, filt_hz, 7);
2547− SLDI_B3_UH(hz_out2, hz_out4, hz_out6, hz_out0, hz_out2, hz_out4, hz_out1,
2548− hz_out3, hz_out5, 8);
2547+ SLDI_B3_UH(hz_out2, hz_out0, hz_out4, hz_out2, hz_out6, hz_out4, 8, hz_out1,
2548+ hz_out3, hz_out5);
25492549 hz_out7 = (v8u16) __msa_pckod_d((v2i64) hz_out8, (v2i64) hz_out6);
25502550
25512551 ILVEV_B2_UB(hz_out0, hz_out1, hz_out2, hz_out3, vec0, vec1);
@@ -3146,7 +3146,7 @@ void ff_avg_bilin_64h_msa(uint8_t *dst, ptrdiff_t dst_stride, · 594 unmodified lines
31463146 for (loop_cnt = height; loop_cnt--;) {
31473147 LD_SB4(src, 16, src0, src2, src4, src6);
31483148 src7 = LD_SB(src + 56);
3149− SLDI_B3_SB(src2, src4, src6, src0, src2, src4, src1, src3, src5, 8);
3149+ SLDI_B3_SB(src2, src0, src4, src2, src6, src4, 8, src1, src3, src5);
31503150 src += src_stride;
31513151
31523152 VSHF_B2_UB(src0, src0, src1, src1, mask, mask, vec0, vec1);
@@ -3655,8 +3655,8 @@ static void common_hv_2ht_2vt_and_aver_dst_4x8_msa(const uint8_t *src, · 502 unmodified lines
36553655 hz_out4 = HORIZ_2TAP_FILT_UH(src4, src5, mask, filt_hz, 7);
36563656 hz_out6 = HORIZ_2TAP_FILT_UH(src6, src7, mask, filt_hz, 7);
36573657 hz_out8 = HORIZ_2TAP_FILT_UH(src8, src8, mask, filt_hz, 7);
3658− SLDI_B3_UH(hz_out2, hz_out4, hz_out6, hz_out0, hz_out2, hz_out4, hz_out1,
3659− hz_out3, hz_out5, 8);
3658+ SLDI_B3_UH(hz_out2, hz_out0, hz_out4, hz_out2, hz_out6, hz_out4, 8, hz_out1,
3659+ hz_out3, hz_out5);
36603660 hz_out7 = (v8u16) __msa_pckod_d((v2i64) hz_out8, (v2i64) hz_out6);
36613661
36623662 LW4(dst, dst_stride, tp0, tp1, tp2, tp3);
libavutil/mips/generic_macros_msa.h+31−49
@@ -602,67 +602,48 @@ · 601 unmodified lines
602602 }
603603 #define AVER_UB4_UB(...) AVER_UB4(v16u8, __VA_ARGS__)
604604
605−/* Description : Immediate number of columns to slide with zero
606− Arguments : Inputs - in0, in1, slide_val
607− Outputs - out0, out1
605+/* Description : Immediate number of columns to slide
606+ Arguments : Inputs - s, d, slide_val
607+ Outputs - out
608608 Return Type - as per RTYPE
609− Details : Byte elements from 'zero_m' vector are slide into 'in0' by
609+ Details : Byte elements from 'd' vector are slide into 's' by
610610 number of elements specified by 'slide_val'
611611 */
612−#define SLDI_B2_0(RTYPE, in0, in1, out0, out1, slide_val) \
613−{ \
614− v16i8 zero_m = { 0 }; \
615− out0 = (RTYPE) __msa_sldi_b((v16i8) zero_m, (v16i8) in0, slide_val); \
616− out1 = (RTYPE) __msa_sldi_b((v16i8) zero_m, (v16i8) in1, slide_val); \
617−}
618−#define SLDI_B2_0_UB(...) SLDI_B2_0(v16u8, __VA_ARGS__)
619−#define SLDI_B2_0_SB(...) SLDI_B2_0(v16i8, __VA_ARGS__)
620−#define SLDI_B2_0_SW(...) SLDI_B2_0(v4i32, __VA_ARGS__)
621−
622−#define SLDI_B3_0(RTYPE, in0, in1, in2, out0, out1, out2, slide_val) \
623−{ \
624− v16i8 zero_m = { 0 }; \
625− SLDI_B2_0(RTYPE, in0, in1, out0, out1, slide_val); \
626− out2 = (RTYPE) __msa_sldi_b((v16i8) zero_m, (v16i8) in2, slide_val); \
627−}
628−#define SLDI_B3_0_UB(...) SLDI_B3_0(v16u8, __VA_ARGS__)
629−#define SLDI_B3_0_SB(...) SLDI_B3_0(v16i8, __VA_ARGS__)
630−
631−#define SLDI_B4_0(RTYPE, in0, in1, in2, in3, \
632− out0, out1, out2, out3, slide_val) \
633−{ \
634− SLDI_B2_0(RTYPE, in0, in1, out0, out1, slide_val); \
635− SLDI_B2_0(RTYPE, in2, in3, out2, out3, slide_val); \
612+#define SLDI_B(RTYPE, d, s, slide_val, out) \
613+{ \
614+ out = (RTYPE) __msa_sldi_b((v16i8) d, (v16i8) s, slide_val); \
636615 }
637−#define SLDI_B4_0_UB(...) SLDI_B4_0(v16u8, __VA_ARGS__)
638−#define SLDI_B4_0_SB(...) SLDI_B4_0(v16i8, __VA_ARGS__)
639−#define SLDI_B4_0_SH(...) SLDI_B4_0(v8i16, __VA_ARGS__)
640616
641−/* Description : Immediate number of columns to slide
642− Arguments : Inputs - in0_0, in0_1, in1_0, in1_1, slide_val
643− Outputs - out0, out1
644− Return Type - as per RTYPE
645− Details : Byte elements from 'in0_0' vector are slide into 'in1_0' by
646− number of elements specified by 'slide_val'
647−*/
648−#define SLDI_B2(RTYPE, in0_0, in0_1, in1_0, in1_1, out0, out1, slide_val) \
649−{ \
650− out0 = (RTYPE) __msa_sldi_b((v16i8) in0_0, (v16i8) in1_0, slide_val); \
651− out1 = (RTYPE) __msa_sldi_b((v16i8) in0_1, (v16i8) in1_1, slide_val); \
617+#define SLDI_B2(RTYPE, d0, s0, d1, s1, slide_val, out0, out1) \
618+{ \
619+ SLDI_B(RTYPE, d0, s0, slide_val, out0) \
620+ SLDI_B(RTYPE, d1, s1, slide_val, out1) \
652621 }
653622 #define SLDI_B2_UB(...) SLDI_B2(v16u8, __VA_ARGS__)
654623 #define SLDI_B2_SB(...) SLDI_B2(v16i8, __VA_ARGS__)
655624 #define SLDI_B2_SH(...) SLDI_B2(v8i16, __VA_ARGS__)
625+#define SLDI_B2_SW(...) SLDI_B2(v4i32, __VA_ARGS__)
656626
657−#define SLDI_B3(RTYPE, in0_0, in0_1, in0_2, in1_0, in1_1, in1_2, \
658− out0, out1, out2, slide_val) \
659−{ \
660− SLDI_B2(RTYPE, in0_0, in0_1, in1_0, in1_1, out0, out1, slide_val) \
661− out2 = (RTYPE) __msa_sldi_b((v16i8) in0_2, (v16i8) in1_2, slide_val); \
627+#define SLDI_B3(RTYPE, d0, s0, d1, s1, d2, s2, slide_val, \
628+ out0, out1, out2) \
629+{ \
630+ SLDI_B2(RTYPE, d0, s0, d1, s1, slide_val, out0, out1) \
631+ SLDI_B(RTYPE, d2, s2, slide_val, out2) \
662632 }
633+#define SLDI_B3_UB(...) SLDI_B3(v16u8, __VA_ARGS__)
663634 #define SLDI_B3_SB(...) SLDI_B3(v16i8, __VA_ARGS__)
664635 #define SLDI_B3_UH(...) SLDI_B3(v8u16, __VA_ARGS__)
665636
637+#define SLDI_B4(RTYPE, d0, s0, d1, s1, d2, s2, d3, s3, \
638+ slide_val, out0, out1, out2, out3) \
639+{ \
640+ SLDI_B2(RTYPE, d0, s0, d1, s1, slide_val, out0, out1) \
641+ SLDI_B2(RTYPE, d2, s2, d3, s3, slide_val, out2, out3) \
642+}
643+#define SLDI_B4_UB(...) SLDI_B4(v16u8, __VA_ARGS__)
644+#define SLDI_B4_SB(...) SLDI_B4(v16i8, __VA_ARGS__)
645+#define SLDI_B4_SH(...) SLDI_B4(v8i16, __VA_ARGS__)
646+
666647 /* Description : Shuffle byte vector elements as per mask vector
667648 Arguments : Inputs - in0, in1, in2, in3, mask0, mask1
668649 Outputs - out0, out1
@@ -2412,6 +2393,7 @@ · 1743 unmodified lines
24122393 { \
24132394 v16i8 tmp0_m, tmp1_m, tmp2_m, tmp3_m; \
24142395 v16i8 tmp4_m, tmp5_m, tmp6_m, tmp7_m; \
2396+ v16i8 zeros = { 0 }; \
24152397 \
24162398 ILVR_B4_SB(in2, in0, in3, in1, in6, in4, in7, in5, \
24172399 tmp0_m, tmp1_m, tmp2_m, tmp3_m); \
@@ -2419,8 +2401,8 @@ · 1 unmodified line
24192401 ILVRL_B2_SB(tmp3_m, tmp2_m, tmp6_m, tmp7_m); \
24202402 ILVRL_W2(RTYPE, tmp6_m, tmp4_m, out0, out2); \
24212403 ILVRL_W2(RTYPE, tmp7_m, tmp5_m, out4, out6); \
2422− SLDI_B2_0(RTYPE, out0, out2, out1, out3, 8); \
2423− SLDI_B2_0(RTYPE, out4, out6, out5, out7, 8); \
2404+ SLDI_B4(RTYPE, zeros, out0, zeros, out2, zeros, out4, zeros, out6, \
2405+ 8, out1, out3, out5, out7); \
24242406 }
24252407 #define TRANSPOSE8x8_UB_UB(...) TRANSPOSE8x8_UB(v16u8, __VA_ARGS__)
24262408 #define TRANSPOSE8x8_UB_UH(...) TRANSPOSE8x8_UB(v8u16, __VA_ARGS__)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t