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.
Unified · Split
| @@ -618,7 +618,7 @@ static void avc_biwgt_8x16_msa(uint8_t *src, uint8_t *dst, int32_t stride, · 617 unmodified lines | |||
| 618 | \ | 618 | \ |
| 619 | out0 = (v16u8) __msa_ilvr_b((v16i8) in1, (v16i8) in0); \ | 619 | out0 = (v16u8) __msa_ilvr_b((v16i8) in1, (v16i8) in0); \ |
| 620 | out1 = (v16u8) __msa_sldi_b(zero_m, (v16i8) out0, 2); \ | 620 | 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); \ |
| 622 | } | 622 | } |
| 623 | 623 | ||
| 624 | #define AVC_LPF_H_2BYTE_CHROMA_422(src, stride, tc_val, alpha, beta, res) \ | 624 | #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 | |||
| 1023 | 1023 | ||
| 1024 | ILVR_W2_SB(tmp2, tmp0, tmp3, tmp1, src6, src3); | 1024 | ILVR_W2_SB(tmp2, tmp0, tmp3, tmp1, src6, src3); |
| 1025 | ILVL_W2_SB(tmp2, tmp0, tmp3, tmp1, src1, src5); | 1025 | 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); | ||
| 1027 | 1028 | ||
| 1028 | p0_asub_q0 = __msa_asub_u_b((v16u8) src2, (v16u8) src3); | 1029 | p0_asub_q0 = __msa_asub_u_b((v16u8) src2, (v16u8) src3); |
| 1029 | p1_asub_p0 = __msa_asub_u_b((v16u8) src1, (v16u8) src2); | 1030 | 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 | |||
| 1114 | ILVRL_H2_SH(zeros, dst2_x, tmp2, tmp3); | 1115 | ILVRL_H2_SH(zeros, dst2_x, tmp2, tmp3); |
| 1115 | 1116 | ||
| 1116 | ILVR_W2_UB(tmp2, tmp0, tmp3, tmp1, dst0, dst4); | 1117 | 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); |
| 1118 | dst2_x = (v16u8) __msa_ilvl_w((v4i32) tmp2, (v4i32) tmp0); | 1119 | dst2_x = (v16u8) __msa_ilvl_w((v4i32) tmp2, (v4i32) tmp0); |
| 1119 | dst2_y = (v16u8) __msa_ilvl_w((v4i32) tmp3, (v4i32) tmp1); | 1120 | 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); |
| 1121 | 1122 | ||
| 1122 | out0 = __msa_copy_u_w((v4i32) dst0, 0); | 1123 | out0 = __msa_copy_u_w((v4i32) dst0, 0); |
| 1123 | out1 = __msa_copy_u_h((v8i16) dst0, 2); | 1124 | out1 = __msa_copy_u_h((v8i16) dst0, 2); |
| @@ -790,8 +790,8 @@ void ff_put_h264_qpel16_mc10_msa(uint8_t *dst, const uint8_t *src, · 789 unmodified lines | |||
| 790 | minus5b, res4, res5, res6, res7); | 790 | minus5b, res4, res5, res6, res7); |
| 791 | DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b, | 791 | DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b, |
| 792 | plus20b, res4, res5, res6, res7); | 792 | plus20b, res4, res5, res6, res7); |
| 793 | SLDI_B2_SB(src1, src3, src0, src2, src0, src2, 2); | 793 | SLDI_B4_SB(src1, src0, src3, src2, src5, src4, src7, src6, 2, |
| 794 | SLDI_B2_SB(src5, src7, src4, src6, src4, src6, 2); | 794 | src0, src2, src4, src6); |
| 795 | SRARI_H4_SH(res0, res1, res2, res3, 5); | 795 | SRARI_H4_SH(res0, res1, res2, res3, 5); |
| 796 | SRARI_H4_SH(res4, res5, res6, res7, 5); | 796 | SRARI_H4_SH(res4, res5, res6, res7, 5); |
| 797 | SAT_SH4_SH(res0, res1, res2, res3, 7); | 797 | 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 | |||
| 858 | minus5b, res4, res5, res6, res7); | 858 | minus5b, res4, res5, res6, res7); |
| 859 | DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b, | 859 | DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b, |
| 860 | plus20b, res4, res5, res6, res7); | 860 | plus20b, res4, res5, res6, res7); |
| 861 | SLDI_B2_SB(src1, src3, src0, src2, src0, src2, 3); | 861 | SLDI_B4_SB(src1, src0, src3, src2, src5, src4, src7, src6, 3, |
| 862 | SLDI_B2_SB(src5, src7, src4, src6, src4, src6, 3); | 862 | src0, src2, src4, src6); |
| 863 | SRARI_H4_SH(res0, res1, res2, res3, 5); | 863 | SRARI_H4_SH(res0, res1, res2, res3, 5); |
| 864 | SRARI_H4_SH(res4, res5, res6, res7, 5); | 864 | SRARI_H4_SH(res4, res5, res6, res7, 5); |
| 865 | SAT_SH4_SH(res0, res1, res2, res3, 7); | 865 | 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 | |||
| 911 | VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11); | 911 | VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11); |
| 912 | DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b, | 912 | DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b, |
| 913 | res4, res5, res6, res7); | 913 | res4, res5, res6, res7); |
| 914 | SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 2); | 914 | SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 2, |
| 915 | SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 2); | 915 | src0, src1, src2, src3); |
| 916 | SLDI_B2_SB(src4, src5, src4, src5, src4, src5, 2); | 916 | SLDI_B4_SB(src4, src4, src5, src5, src6, src6, src7, src7, 2, |
| 917 | SLDI_B2_SB(src6, src7, src6, src7, src6, src7, 2); | 917 | src4, src5, src6, src7); |
| 918 | PCKEV_D2_SB(src1, src0, src3, src2, src0, src1); | 918 | PCKEV_D2_SB(src1, src0, src3, src2, src0, src1); |
| 919 | PCKEV_D2_SB(src5, src4, src7, src6, src4, src5); | 919 | PCKEV_D2_SB(src5, src4, src7, src6, src4, src5); |
| 920 | SRARI_H4_SH(res0, res1, res2, res3, 5); | 920 | 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 | |||
| 966 | VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11); | 966 | VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11); |
| 967 | DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b, | 967 | DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b, |
| 968 | res4, res5, res6, res7); | 968 | res4, res5, res6, res7); |
| 969 | SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 3); | 969 | SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 3, |
| 970 | SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 3); | 970 | src0, src1, src2, src3); |
| 971 | SLDI_B2_SB(src4, src5, src4, src5, src4, src5, 3); | 971 | SLDI_B4_SB(src4, src4, src5, src5, src6, src6, src7, src7, 3, |
| 972 | SLDI_B2_SB(src6, src7, src6, src7, src6, src7, 3); | 972 | src4, src5, src6, src7); |
| 973 | PCKEV_D2_SB(src1, src0, src3, src2, src0, src1); | 973 | PCKEV_D2_SB(src1, src0, src3, src2, src0, src1); |
| 974 | PCKEV_D2_SB(src5, src4, src7, src6, src4, src5); | 974 | PCKEV_D2_SB(src5, src4, src7, src6, src4, src5); |
| 975 | SRARI_H4_SH(res0, res1, res2, res3, 5); | 975 | 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 | |||
| 1007 | SRARI_H2_SH(res0, res1, 5); | 1007 | SRARI_H2_SH(res0, res1, 5); |
| 1008 | SAT_SH2_SH(res0, res1, 7); | 1008 | SAT_SH2_SH(res0, res1, 7); |
| 1009 | res = __msa_pckev_b((v16i8) res1, (v16i8) res0); | 1009 | res = __msa_pckev_b((v16i8) res1, (v16i8) res0); |
| 1010 | SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 2); | 1010 | SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 2, |
| 1011 | SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 2); | 1011 | src0, src1, src2, src3); |
| 1012 | src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1); | 1012 | src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1); |
| 1013 | src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3); | 1013 | src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3); |
| 1014 | src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1); | 1014 | 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 | |||
| 1038 | SRARI_H2_SH(res0, res1, 5); | 1038 | SRARI_H2_SH(res0, res1, 5); |
| 1039 | SAT_SH2_SH(res0, res1, 7); | 1039 | SAT_SH2_SH(res0, res1, 7); |
| 1040 | res = __msa_pckev_b((v16i8) res1, (v16i8) res0); | 1040 | res = __msa_pckev_b((v16i8) res1, (v16i8) res0); |
| 1041 | SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 3); | 1041 | SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 3, |
| 1042 | SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 3); | 1042 | src0, src1, src2, src3); |
| 1043 | src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1); | 1043 | src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1); |
| 1044 | src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3); | 1044 | src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3); |
| 1045 | src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1); | 1045 | 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 | |||
| 3194 | minus5b, res4, res5, res6, res7); | 3194 | minus5b, res4, res5, res6, res7); |
| 3195 | DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b, | 3195 | DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b, |
| 3196 | plus20b, res4, res5, res6, res7); | 3196 | plus20b, res4, res5, res6, res7); |
| 3197 | SLDI_B2_SB(src1, src3, src0, src2, src0, src2, 2); | 3197 | SLDI_B4_SB(src1, src0, src3, src2, src5, src4, src7, src6, 2, |
| 3198 | SLDI_B2_SB(src5, src7, src4, src6, src4, src6, 2); | 3198 | src0, src2, src4, src6); |
| 3199 | SRARI_H4_SH(res0, res1, res2, res3, 5); | 3199 | SRARI_H4_SH(res0, res1, res2, res3, 5); |
| 3200 | SRARI_H4_SH(res4, res5, res6, res7, 5); | 3200 | SRARI_H4_SH(res4, res5, res6, res7, 5); |
| 3201 | SAT_SH4_SH(res0, res1, res2, res3, 7); | 3201 | 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 | |||
| 3266 | minus5b, res4, res5, res6, res7); | 3266 | minus5b, res4, res5, res6, res7); |
| 3267 | DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b, | 3267 | DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b, |
| 3268 | plus20b, res4, res5, res6, res7); | 3268 | plus20b, res4, res5, res6, res7); |
| 3269 | SLDI_B2_SB(src1, src3, src0, src2, src0, src2, 3); | 3269 | SLDI_B4_SB(src1, src0, src3, src2, src5, src4, src7, src6, 3, |
| 3270 | SLDI_B2_SB(src5, src7, src4, src6, src4, src6, 3); | 3270 | src0, src2, src4, src6); |
| 3271 | SRARI_H4_SH(res0, res1, res2, res3, 5); | 3271 | SRARI_H4_SH(res0, res1, res2, res3, 5); |
| 3272 | SRARI_H4_SH(res4, res5, res6, res7, 5); | 3272 | SRARI_H4_SH(res4, res5, res6, res7, 5); |
| 3273 | SAT_SH4_SH(res0, res1, res2, res3, 7); | 3273 | 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 | |||
| 3323 | VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11); | 3323 | VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11); |
| 3324 | DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b, | 3324 | DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b, |
| 3325 | res4, res5, res6, res7); | 3325 | res4, res5, res6, res7); |
| 3326 | SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 2); | 3326 | SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 2, |
| 3327 | SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 2); | 3327 | src0, src1, src2, src3); |
| 3328 | SLDI_B2_SB(src4, src5, src4, src5, src4, src5, 2); | 3328 | SLDI_B4_SB(src4, src4, src5, src5, src6, src6, src7, src7, 2, |
| 3329 | SLDI_B2_SB(src6, src7, src6, src7, src6, src7, 2); | 3329 | src4, src5, src6, src7); |
| 3330 | PCKEV_D2_SB(src1, src0, src3, src2, src0, src1); | 3330 | PCKEV_D2_SB(src1, src0, src3, src2, src0, src1); |
| 3331 | PCKEV_D2_SB(src5, src4, src7, src6, src4, src5); | 3331 | PCKEV_D2_SB(src5, src4, src7, src6, src4, src5); |
| 3332 | SRARI_H4_SH(res0, res1, res2, res3, 5); | 3332 | 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 | |||
| 3388 | VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11); | 3388 | VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11); |
| 3389 | DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b, | 3389 | DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b, |
| 3390 | res4, res5, res6, res7); | 3390 | res4, res5, res6, res7); |
| 3391 | SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 3); | 3391 | SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 3, |
| 3392 | SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 3); | 3392 | src0, src1, src2, src3); |
| 3393 | SLDI_B2_SB(src4, src5, src4, src5, src4, src5, 3); | 3393 | SLDI_B4_SB(src4, src4, src5, src5, src6, src6, src7, src7, 3, |
| 3394 | SLDI_B2_SB(src6, src7, src6, src7, src6, src7, 3); | 3394 | src4, src5, src6, src7); |
| 3395 | PCKEV_D2_SB(src1, src0, src3, src2, src0, src1); | 3395 | PCKEV_D2_SB(src1, src0, src3, src2, src0, src1); |
| 3396 | PCKEV_D2_SB(src5, src4, src7, src6, src4, src5); | 3396 | PCKEV_D2_SB(src5, src4, src7, src6, src4, src5); |
| 3397 | SRARI_H4_SH(res0, res1, res2, res3, 5); | 3397 | 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 | |||
| 3439 | SRARI_H2_SH(out0, out1, 5); | 3439 | SRARI_H2_SH(out0, out1, 5); |
| 3440 | SAT_SH2_SH(out0, out1, 7); | 3440 | SAT_SH2_SH(out0, out1, 7); |
| 3441 | res = __msa_pckev_b((v16i8) out1, (v16i8) out0); | 3441 | res = __msa_pckev_b((v16i8) out1, (v16i8) out0); |
| 3442 | SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 2); | 3442 | SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 2, |
| 3443 | SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 2); | 3443 | src0, src1, src2, src3); |
| 3444 | src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1); | 3444 | src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1); |
| 3445 | src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3); | 3445 | src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3); |
| 3446 | src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1); | 3446 | 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 | |||
| 3475 | SRARI_H2_SH(out0, out1, 5); | 3475 | SRARI_H2_SH(out0, out1, 5); |
| 3476 | SAT_SH2_SH(out0, out1, 7); | 3476 | SAT_SH2_SH(out0, out1, 7); |
| 3477 | res = __msa_pckev_b((v16i8) out1, (v16i8) out0); | 3477 | res = __msa_pckev_b((v16i8) out1, (v16i8) out0); |
| 3478 | SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 3); | 3478 | SLDI_B4_SB(src0, src0, src1, src1, src2, src2, src3, src3, 3, |
| 3479 | SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 3); | 3479 | src0, src1, src2, src3); |
| 3480 | src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1); | 3480 | src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1); |
| 3481 | src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3); | 3481 | src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3); |
| 3482 | src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1); | 3482 | src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1); |
| @@ -1357,6 +1357,7 @@ static void hevc_sao_edge_filter_0degree_8width_msa(uint8_t *dst, · 1356 unmodified lines | |||
| 1357 | v16u8 cmp_minus10, diff_minus10, diff_minus11; | 1357 | v16u8 cmp_minus10, diff_minus10, diff_minus11; |
| 1358 | v16u8 src0, src1, dst0, src_minus10, src_minus11, src_plus10, src_plus11; | 1358 | v16u8 src0, src1, dst0, src_minus10, src_minus11, src_plus10, src_plus11; |
| 1359 | v16i8 offset, sao_offset = LD_SB(sao_offset_val); | 1359 | v16i8 offset, sao_offset = LD_SB(sao_offset_val); |
| 1360 | v16i8 zeros = { 0 }; | ||
| 1360 | 1361 | ||
| 1361 | sao_offset = __msa_pckev_b(sao_offset, sao_offset); | 1362 | sao_offset = __msa_pckev_b(sao_offset, sao_offset); |
| 1362 | src -= 1; | 1363 | src -= 1; |
| @@ -1367,8 +1368,8 @@ static void hevc_sao_edge_filter_0degree_8width_msa(uint8_t *dst, · 4 unmodified lines | |||
| 1367 | for (height -= 2; height; height -= 2) { | 1368 | for (height -= 2; height; height -= 2) { |
| 1368 | src += (src_stride << 1); | 1369 | src += (src_stride << 1); |
| 1369 | 1370 | ||
| 1370 | SLDI_B2_0_UB(src_minus10, src_minus11, src0, src1, 1); | 1371 | SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 1, src0, src1); |
| 1371 | SLDI_B2_0_UB(src_minus10, src_minus11, src_plus10, src_plus11, 2); | 1372 | SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_plus10, src_plus11); |
| 1372 | 1373 | ||
| 1373 | PCKEV_D2_UB(src_minus11, src_minus10, src_plus11, src_plus10, | 1374 | PCKEV_D2_UB(src_minus11, src_minus10, src_plus11, src_plus10, |
| 1374 | src_minus10, src_plus10); | 1375 | src_minus10, src_plus10); |
| @@ -1404,8 +1405,8 @@ static void hevc_sao_edge_filter_0degree_8width_msa(uint8_t *dst, · 29 unmodified lines | |||
| 1404 | dst += dst_stride; | 1405 | dst += dst_stride; |
| 1405 | } | 1406 | } |
| 1406 | 1407 | ||
| 1407 | SLDI_B2_0_UB(src_minus10, src_minus11, src0, src1, 1); | 1408 | SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 1, src0, src1); |
| 1408 | SLDI_B2_0_UB(src_minus10, src_minus11, src_plus10, src_plus11, 2); | 1409 | SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_plus10, src_plus11); |
| 1409 | 1410 | ||
| 1410 | PCKEV_D2_UB(src_minus11, src_minus10, src_plus11, src_plus10, src_minus10, | 1411 | PCKEV_D2_UB(src_minus11, src_minus10, src_plus11, src_plus10, src_minus10, |
| 1411 | src_plus10); | 1412 | src_plus10); |
| @@ -1473,14 +1474,12 @@ static void hevc_sao_edge_filter_0degree_16multiple_msa(uint8_t *dst, · 61 unmodified lines | |||
| 1473 | dst_ptr = dst + v_cnt; | 1474 | dst_ptr = dst + v_cnt; |
| 1474 | LD_UB4(src_minus1, src_stride, src10, src11, src12, src13); | 1475 | LD_UB4(src_minus1, src_stride, src10, src11, src12, src13); |
| 1475 | 1476 | ||
| 1476 | SLDI_B2_SB(src10, src11, src_minus10, src_minus11, src_zero0, | 1477 | SLDI_B4_SB(src10, src_minus10, src11, src_minus11, |
| 1477 | src_zero1, 1); | 1478 | src12, src_minus12, src13, src_minus13, 1, |
| 1478 | SLDI_B2_SB(src12, src13, src_minus12, src_minus13, src_zero2, | 1479 | src_zero0, src_zero1, src_zero2, src_zero3); |
| 1479 | src_zero3, 1); | 1480 | SLDI_B4_SB(src10, src_minus10, src11, src_minus11, |
| 1480 | SLDI_B2_SB(src10, src11, src_minus10, src_minus11, src_plus10, | 1481 | src12, src_minus12, src13, src_minus13, 2, |
| 1481 | src_plus11, 2); | 1482 | src_plus10, src_plus11, src_plus12, src_plus13); |
| 1482 | SLDI_B2_SB(src12, src13, src_minus12, src_minus13, src_plus12, | ||
| 1483 | src_plus13, 2); | ||
| 1484 | 1483 | ||
| 1485 | cmp_minus10 = ((v16u8) src_zero0 == src_minus10); | 1484 | cmp_minus10 = ((v16u8) src_zero0 == src_minus10); |
| 1486 | cmp_plus10 = ((v16u8) src_zero0 == (v16u8) src_plus10); | 1485 | 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 | |||
| 1880 | v16u8 src_minus11, src10, src11; | 1879 | v16u8 src_minus11, src10, src11; |
| 1881 | v16i8 src_plus0, src_zero0, src_plus1, src_zero1, dst0; | 1880 | v16i8 src_plus0, src_zero0, src_plus1, src_zero1, dst0; |
| 1882 | v8i16 offset_mask0, offset_mask1; | 1881 | v8i16 offset_mask0, offset_mask1; |
| 1882 | v16i8 zeros = { 0 }; | ||
| 1883 | 1883 | ||
| 1884 | sao_offset = __msa_pckev_b(sao_offset, sao_offset); | 1884 | sao_offset = __msa_pckev_b(sao_offset, sao_offset); |
| 1885 | 1885 | ||
| @@ -1892,8 +1892,8 @@ static void hevc_sao_edge_filter_45degree_4width_msa(uint8_t *dst, · 6 unmodified lines | |||
| 1892 | for (height -= 2; height; height -= 2) { | 1892 | for (height -= 2; height; height -= 2) { |
| 1893 | src_orig += (src_stride << 1); | 1893 | src_orig += (src_stride << 1); |
| 1894 | 1894 | ||
| 1895 | SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1); | 1895 | SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1); |
| 1896 | SLDI_B2_0_SB(src10, src11, src_plus0, src_plus1, 2); | 1896 | SLDI_B2_SB(zeros, src10, zeros, src11, 2, src_plus0, src_plus1); |
| 1897 | 1897 | ||
| 1898 | ILVR_B2_UB(src_plus0, src_minus10, src_plus1, src_minus11, src_minus10, | 1898 | ILVR_B2_UB(src_plus0, src_minus10, src_plus1, src_minus11, src_minus10, |
| 1899 | src_minus11); | 1899 | src_minus11); |
| @@ -1938,8 +1938,8 @@ static void hevc_sao_edge_filter_45degree_4width_msa(uint8_t *dst, · 38 unmodified lines | |||
| 1938 | dst += dst_stride; | 1938 | dst += dst_stride; |
| 1939 | } | 1939 | } |
| 1940 | 1940 | ||
| 1941 | SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1); | 1941 | SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1); |
| 1942 | SLDI_B2_0_SB(src10, src11, src_plus0, src_plus1, 2); | 1942 | SLDI_B2_SB(zeros, src10, zeros, src11, 2, src_plus0, src_plus1); |
| 1943 | 1943 | ||
| 1944 | ILVR_B2_UB(src_plus0, src_minus10, src_plus1, src_minus11, src_minus10, | 1944 | ILVR_B2_UB(src_plus0, src_minus10, src_plus1, src_minus11, src_minus10, |
| 1945 | src_minus11); | 1945 | src_minus11); |
| @@ -1992,6 +1992,7 @@ static void hevc_sao_edge_filter_45degree_8width_msa(uint8_t *dst, · 46 unmodified lines | |||
| 1992 | v16u8 src_minus10, src10, src_minus11, src11; | 1992 | v16u8 src_minus10, src10, src_minus11, src11; |
| 1993 | v16i8 src_zero0, src_plus10, src_zero1, src_plus11, dst0; | 1993 | v16i8 src_zero0, src_plus10, src_zero1, src_plus11, dst0; |
| 1994 | v8i16 offset_mask0, offset_mask1; | 1994 | v8i16 offset_mask0, offset_mask1; |
| 1995 | v16i8 zeros = { 0 }; | ||
| 1995 | 1996 | ||
| 1996 | sao_offset = __msa_pckev_b(sao_offset, sao_offset); | 1997 | sao_offset = __msa_pckev_b(sao_offset, sao_offset); |
| 1997 | src_orig = src - 1; | 1998 | src_orig = src - 1; |
| @@ -2003,8 +2004,8 @@ static void hevc_sao_edge_filter_45degree_8width_msa(uint8_t *dst, · 5 unmodified lines | |||
| 2003 | for (height -= 2; height; height -= 2) { | 2004 | for (height -= 2; height; height -= 2) { |
| 2004 | src_orig += (src_stride << 1); | 2005 | src_orig += (src_stride << 1); |
| 2005 | 2006 | ||
| 2006 | SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1); | 2007 | SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1); |
| 2007 | SLDI_B2_0_SB(src10, src11, src_plus10, src_plus11, 2); | 2008 | SLDI_B2_SB(zeros, src10, zeros, src11, 2, src_plus10, src_plus11); |
| 2008 | 2009 | ||
| 2009 | ILVR_B2_UB(src_plus10, src_minus10, src_plus11, src_minus11, | 2010 | ILVR_B2_UB(src_plus10, src_minus10, src_plus11, src_minus11, |
| 2010 | src_minus10, src_minus11); | 2011 | src_minus10, src_minus11); |
| @@ -2048,8 +2049,8 @@ static void hevc_sao_edge_filter_45degree_8width_msa(uint8_t *dst, · 37 unmodified lines | |||
| 2048 | dst += dst_stride; | 2049 | dst += dst_stride; |
| 2049 | } | 2050 | } |
| 2050 | 2051 | ||
| 2051 | SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1); | 2052 | SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1); |
| 2052 | SLDI_B2_0_SB(src10, src11, src_plus10, src_plus11, 2); | 2053 | SLDI_B2_SB(zeros, src10, zeros, src11, 2, src_plus10, src_plus11); |
| 2053 | ILVR_B2_UB(src_plus10, src_minus10, src_plus11, src_minus11, src_minus10, | 2054 | ILVR_B2_UB(src_plus10, src_minus10, src_plus11, src_minus11, src_minus10, |
| 2054 | src_minus11); | 2055 | src_minus11); |
| 2055 | ILVR_B2_SB(src_zero0, src_zero0, src_zero1, src_zero1, src_zero0, | 2056 | 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 | |||
| 2130 | src_plus13 = LD_UB(src + 1 + v_cnt + (src_stride << 2)); | 2131 | src_plus13 = LD_UB(src + 1 + v_cnt + (src_stride << 2)); |
| 2131 | src_orig += 16; | 2132 | src_orig += 16; |
| 2132 | 2133 | ||
| 2133 | SLDI_B2_SB(src10, src11, src_minus11, src_minus12, src_zero0, | 2134 | SLDI_B4_SB(src10, src_minus11, src11, src_minus12, |
| 2134 | src_zero1, 1); | 2135 | src12, src_minus13, src13, src_minus14, 1, |
| 2135 | SLDI_B2_SB(src12, src13, src_minus13, src_minus14, src_zero2, | 2136 | src_zero0, src_zero1, src_zero2, src_zero3); |
| 2136 | src_zero3, 1); | 2137 | SLDI_B2_SB(src11, src_minus12, src12, src_minus13, 2, src_plus10, |
| 2137 | SLDI_B2_SB(src11, src12, src_minus12, src_minus13, src_plus10, | 2138 | src_plus11); |
| 2138 | src_plus11, 2); | ||
| 2139 | 2139 | ||
| 2140 | src_plus12 = __msa_sldi_b((v16i8) src13, (v16i8) src_minus14, 2); | 2140 | src_plus12 = __msa_sldi_b((v16i8) src13, (v16i8) src_minus14, 2); |
| 2141 | 2141 | ||
| @@ -2228,6 +2228,7 @@ static void hevc_sao_edge_filter_135degree_4width_msa(uint8_t *dst, · 86 unmodified lines | |||
| 2228 | v16u8 cmp_minus10, diff_minus10, cmp_minus11, diff_minus11; | 2228 | v16u8 cmp_minus10, diff_minus10, cmp_minus11, diff_minus11; |
| 2229 | v16u8 src_minus10, src10, src_minus11, src11; | 2229 | v16u8 src_minus10, src10, src_minus11, src11; |
| 2230 | v8i16 offset_mask0, offset_mask1; | 2230 | v8i16 offset_mask0, offset_mask1; |
| 2231 | v16i8 zeros = { 0 }; | ||
| 2231 | 2232 | ||
| 2232 | sao_offset = __msa_pckev_b(sao_offset, sao_offset); | 2233 | sao_offset = __msa_pckev_b(sao_offset, sao_offset); |
| 2233 | src_orig = src - 1; | 2234 | src_orig = src - 1; |
| @@ -2239,8 +2240,8 @@ static void hevc_sao_edge_filter_135degree_4width_msa(uint8_t *dst, · 5 unmodified lines | |||
| 2239 | for (height -= 2; height; height -= 2) { | 2240 | for (height -= 2; height; height -= 2) { |
| 2240 | src_orig += (src_stride << 1); | 2241 | src_orig += (src_stride << 1); |
| 2241 | 2242 | ||
| 2242 | SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1); | 2243 | SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1); |
| 2243 | SLDI_B2_0_UB(src_minus10, src_minus11, src_minus10, src_minus11, 2); | 2244 | SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_minus10, src_minus11); |
| 2244 | 2245 | ||
| 2245 | ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10, | 2246 | ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10, |
| 2246 | src_minus11); | 2247 | src_minus11); |
| @@ -2286,8 +2287,8 @@ static void hevc_sao_edge_filter_135degree_4width_msa(uint8_t *dst, · 39 unmodified lines | |||
| 2286 | dst += dst_stride; | 2287 | dst += dst_stride; |
| 2287 | } | 2288 | } |
| 2288 | 2289 | ||
| 2289 | SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1); | 2290 | SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1); |
| 2290 | SLDI_B2_0_UB(src_minus10, src_minus11, src_minus10, src_minus11, 2); | 2291 | SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_minus10, src_minus11); |
| 2291 | 2292 | ||
| 2292 | ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10, | 2293 | ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10, |
| 2293 | src_minus11); | 2294 | src_minus11); |
| @@ -2342,6 +2343,7 @@ static void hevc_sao_edge_filter_135degree_8width_msa(uint8_t *dst, · 48 unmodified lines | |||
| 2342 | v16u8 src_minus10, src10, src_minus11, src11; | 2343 | v16u8 src_minus10, src10, src_minus11, src11; |
| 2343 | v16i8 src_zero0, src_zero1, dst0; | 2344 | v16i8 src_zero0, src_zero1, dst0; |
| 2344 | v8i16 offset_mask0, offset_mask1; | 2345 | v8i16 offset_mask0, offset_mask1; |
| 2346 | v16i8 zeros = { 0 }; | ||
| 2345 | 2347 | ||
| 2346 | sao_offset = __msa_pckev_b(sao_offset, sao_offset); | 2348 | sao_offset = __msa_pckev_b(sao_offset, sao_offset); |
| 2347 | src_orig = src - 1; | 2349 | src_orig = src - 1; |
| @@ -2353,8 +2355,8 @@ static void hevc_sao_edge_filter_135degree_8width_msa(uint8_t *dst, · 5 unmodified lines | |||
| 2353 | for (height -= 2; height; height -= 2) { | 2355 | for (height -= 2; height; height -= 2) { |
| 2354 | src_orig += (src_stride << 1); | 2356 | src_orig += (src_stride << 1); |
| 2355 | 2357 | ||
| 2356 | SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1); | 2358 | SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1); |
| 2357 | SLDI_B2_0_UB(src_minus10, src_minus11, src_minus10, src_minus11, 2); | 2359 | SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_minus10, src_minus11); |
| 2358 | ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10, | 2360 | ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10, |
| 2359 | src_minus11); | 2361 | src_minus11); |
| 2360 | ILVR_B2_SB(src_zero0, src_zero0, src_zero1, src_zero1, src_zero0, | 2362 | 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 | |||
| 2398 | dst += dst_stride; | 2400 | dst += dst_stride; |
| 2399 | } | 2401 | } |
| 2400 | 2402 | ||
| 2401 | SLDI_B2_0_SB(src_minus11, src10, src_zero0, src_zero1, 1); | 2403 | SLDI_B2_SB(zeros, src_minus11, zeros, src10, 1, src_zero0, src_zero1); |
| 2402 | SLDI_B2_0_UB(src_minus10, src_minus11, src_minus10, src_minus11, 2); | 2404 | SLDI_B2_UB(zeros, src_minus10, zeros, src_minus11, 2, src_minus10, src_minus11); |
| 2403 | ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10, | 2405 | ILVR_B2_UB(src10, src_minus10, src11, src_minus11, src_minus10, |
| 2404 | src_minus11); | 2406 | src_minus11); |
| 2405 | ILVR_B2_SB(src_zero0, src_zero0, src_zero1, src_zero1, src_zero0, | 2407 | ILVR_B2_SB(src_zero0, src_zero0, src_zero1, src_zero1, src_zero0, |
| @@ -998,7 +998,8 @@ static void hevc_intra_pred_angular_upper_4width_msa(const uint8_t *src_top, · 997 unmodified lines | |||
| 998 | ILVR_D2_SH(fact3, fact1, fact7, fact5, fact1, fact3); | 998 | ILVR_D2_SH(fact3, fact1, fact7, fact5, fact1, fact3); |
| 999 | ILVR_B4_SH(zero, top0, zero, top1, zero, top2, zero, top3, | 999 | ILVR_B4_SH(zero, top0, zero, top1, zero, top2, zero, top3, |
| 1000 | diff0, diff2, diff4, diff6); | 1000 | 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); | ||
| 1002 | ILVR_D2_SH(diff2, diff0, diff6, diff4, diff0, diff2); | 1003 | ILVR_D2_SH(diff2, diff0, diff6, diff4, diff0, diff2); |
| 1003 | ILVR_D2_SH(diff3, diff1, diff7, diff5, diff1, diff3); | 1004 | ILVR_D2_SH(diff3, diff1, diff7, diff5, diff1, diff3); |
| 1004 | MUL2(diff1, fact0, diff3, fact2, diff1, diff3); | 1005 | 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 | |||
| 1093 | UNPCK_UB_SH(top2, diff4, diff5); | 1094 | UNPCK_UB_SH(top2, diff4, diff5); |
| 1094 | UNPCK_UB_SH(top3, diff6, diff7); | 1095 | UNPCK_UB_SH(top3, diff6, diff7); |
| 1095 | 1096 | ||
| 1096 | SLDI_B2_SH(diff1, diff3, diff0, diff2, diff1, diff3, 2); | 1097 | SLDI_B4_SH(diff1, diff0, diff3, diff2, diff5, diff4, diff7, diff6, 2, |
| 1097 | SLDI_B2_SH(diff5, diff7, diff4, diff6, diff5, diff7, 2); | 1098 | diff1, diff3, diff5, diff7); |
| 1098 | MUL4(diff1, fact0, diff3, fact2, diff5, fact4, diff7, fact6, | 1099 | MUL4(diff1, fact0, diff3, fact2, diff5, fact4, diff7, fact6, |
| 1099 | diff1, diff3, diff5, diff7); | 1100 | diff1, diff3, diff5, diff7); |
| 1100 | 1101 | ||
| @@ -1186,8 +1187,8 @@ static void hevc_intra_pred_angular_upper_16width_msa(const uint8_t *src_top, · 85 unmodified lines | |||
| 1186 | fact6 = __msa_fill_h(fact_val3); | 1187 | fact6 = __msa_fill_h(fact_val3); |
| 1187 | fact7 = __msa_fill_h(32 - fact_val3); | 1188 | fact7 = __msa_fill_h(32 - fact_val3); |
| 1188 | 1189 | ||
| 1189 | SLDI_B2_UB(top1, top3, top0, top2, top1, top3, 1); | 1190 | SLDI_B4_UB(top1, top0, top3, top2, top5, top4, top7, top6, 1, |
| 1190 | SLDI_B2_UB(top5, top7, top4, top6, top5, top7, 1); | 1191 | top1, top3, top5, top7); |
| 1191 | UNPCK_UB_SH(top0, diff0, diff1); | 1192 | UNPCK_UB_SH(top0, diff0, diff1); |
| 1192 | UNPCK_UB_SH(top1, diff2, diff3); | 1193 | UNPCK_UB_SH(top1, diff2, diff3); |
| 1193 | UNPCK_UB_SH(top2, diff4, diff5); | 1194 | 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 | |||
| 1297 | top2 = top1; | 1298 | top2 = top1; |
| 1298 | top6 = top5; | 1299 | top6 = top5; |
| 1299 | 1300 | ||
| 1300 | SLDI_B2_UB(top1, top3, top0, top2, top1, top3, 1); | 1301 | SLDI_B4_UB(top1, top0, top3, top2, top5, top4, top7, top6, 1, |
| 1301 | SLDI_B2_UB(top5, top7, top4, top6, top5, top7, 1); | 1302 | top1, top3, top5, top7); |
| 1302 | UNPCK_UB_SH(top0, diff0, diff1); | 1303 | UNPCK_UB_SH(top0, diff0, diff1); |
| 1303 | UNPCK_UB_SH(top1, diff2, diff3); | 1304 | UNPCK_UB_SH(top1, diff2, diff3); |
| 1304 | UNPCK_UB_SH(top2, diff4, diff5); | 1305 | 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 | |||
| 1407 | ILVR_D2_SH(fact3, fact1, fact7, fact5, fact1, fact3); | 1408 | ILVR_D2_SH(fact3, fact1, fact7, fact5, fact1, fact3); |
| 1408 | ILVR_B4_SH(zero, top0, zero, top1, zero, top2, zero, top3, | 1409 | ILVR_B4_SH(zero, top0, zero, top1, zero, top2, zero, top3, |
| 1409 | diff0, diff2, diff4, diff6); | 1410 | 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); | ||
| 1411 | ILVR_D2_SH(diff2, diff0, diff6, diff4, diff0, diff2); | 1413 | ILVR_D2_SH(diff2, diff0, diff6, diff4, diff0, diff2); |
| 1412 | ILVR_D2_SH(diff3, diff1, diff7, diff5, diff1, diff3); | 1414 | ILVR_D2_SH(diff3, diff1, diff7, diff5, diff1, diff3); |
| 1413 | MUL2(diff1, fact0, diff3, fact2, diff1, diff3); | 1415 | 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 | |||
| 1511 | UNPCK_UB_SH(top1, diff2, diff3); | 1513 | UNPCK_UB_SH(top1, diff2, diff3); |
| 1512 | UNPCK_UB_SH(top2, diff4, diff5); | 1514 | UNPCK_UB_SH(top2, diff4, diff5); |
| 1513 | UNPCK_UB_SH(top3, diff6, diff7); | 1515 | UNPCK_UB_SH(top3, diff6, diff7); |
| 1514 | SLDI_B2_SH(diff1, diff3, diff0, diff2, diff1, diff3, 2); | 1516 | SLDI_B4_SH(diff1, diff0, diff3, diff2, diff5, diff4, diff7, diff6, 2, |
| 1515 | SLDI_B2_SH(diff5, diff7, diff4, diff6, diff5, diff7, 2); | 1517 | diff1, diff3, diff5, diff7); |
| 1516 | MUL4(diff1, fact0, diff3, fact2, diff5, fact4, diff7, fact6, | 1518 | MUL4(diff1, fact0, diff3, fact2, diff5, fact4, diff7, fact6, |
| 1517 | diff1, diff3, diff5, diff7); | 1519 | diff1, diff3, diff5, diff7); |
| 1518 | 1520 | ||
| @@ -1606,8 +1608,8 @@ static void hevc_intra_pred_angular_lower_16width_msa(const uint8_t *src_top, · 87 unmodified lines | |||
| 1606 | fact6 = __msa_fill_h(fact_val3); | 1608 | fact6 = __msa_fill_h(fact_val3); |
| 1607 | fact7 = __msa_fill_h(32 - fact_val3); | 1609 | fact7 = __msa_fill_h(32 - fact_val3); |
| 1608 | 1610 | ||
| 1609 | SLDI_B2_SB(top1, top3, top0, top2, top1, top3, 1); | 1611 | SLDI_B4_SB(top1, top0, top3, top2, top5, top4, top7, top6, 1, |
| 1610 | SLDI_B2_SB(top5, top7, top4, top6, top5, top7, 1); | 1612 | top1, top3, top5, top7); |
| 1611 | 1613 | ||
| 1612 | UNPCK_UB_SH(top0, diff0, diff1); | 1614 | UNPCK_UB_SH(top0, diff0, diff1); |
| 1613 | UNPCK_UB_SH(top1, diff2, diff3); | 1615 | 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 | |||
| 1713 | top2 = top1; | 1715 | top2 = top1; |
| 1714 | top6 = top5; | 1716 | top6 = top5; |
| 1715 | 1717 | ||
| 1716 | SLDI_B2_SB(top1, top3, top0, top2, top1, top3, 1); | 1718 | SLDI_B4_SB(top1, top0, top3, top2, top5, top4, top7, top6, 1, |
| 1717 | SLDI_B2_SB(top5, top7, top4, top6, top5, top7, 1); | 1719 | top1, top3, top5, top7); |
| 1718 | 1720 | ||
| 1719 | UNPCK_UB_SH(top0, diff0, diff1); | 1721 | UNPCK_UB_SH(top0, diff0, diff1); |
| 1720 | UNPCK_UB_SH(top1, diff2, diff3); | 1722 | UNPCK_UB_SH(top1, diff2, diff3); |
| @@ -59,12 +59,13 @@ static void common_hz_bil_4w_msa(const uint8_t *src, int32_t src_stride, · 58 unmodified lines | |||
| 59 | uint8_t loop_cnt; | 59 | uint8_t loop_cnt; |
| 60 | uint32_t out0, out1; | 60 | uint32_t out0, out1; |
| 61 | v16u8 src0, src1, src0_sld1, src1_sld1, res0, res1; | 61 | v16u8 src0, src1, src0_sld1, src1_sld1, res0, res1; |
| 62 | v16i8 zeros = { 0 }; | ||
| 62 | 63 | ||
| 63 | for (loop_cnt = (height >> 1); loop_cnt--;) { | 64 | for (loop_cnt = (height >> 1); loop_cnt--;) { |
| 64 | LD_UB2(src, src_stride, src0, src1); | 65 | LD_UB2(src, src_stride, src0, src1); |
| 65 | src += (2 * src_stride); | 66 | src += (2 * src_stride); |
| 66 | 67 | ||
| 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); |
| 68 | AVER_UB2_UB(src0_sld1, src0, src1_sld1, src1, res0, res1); | 69 | AVER_UB2_UB(src0_sld1, src0, src1_sld1, src1, res0, res1); |
| 69 | 70 | ||
| 70 | out0 = __msa_copy_u_w((v4i32) res0, 0); | 71 | 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 | |||
| 82 | { | 83 | { |
| 83 | uint8_t loop_cnt; | 84 | uint8_t loop_cnt; |
| 84 | v16i8 src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1, src3_sld1; | 85 | v16i8 src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1, src3_sld1; |
| 86 | v16i8 zeros = { 0 }; | ||
| 85 | 87 | ||
| 86 | for (loop_cnt = (height >> 2); loop_cnt--;) { | 88 | for (loop_cnt = (height >> 2); loop_cnt--;) { |
| 87 | LD_SB4(src, src_stride, src0, src1, src2, src3); | 89 | LD_SB4(src, src_stride, src0, src1, src2, src3); |
| 88 | src += (4 * src_stride); | 90 | src += (4 * src_stride); |
| 89 | 91 | ||
| 90 | SLDI_B4_0_SB(src0, src1, src2, src3, | 92 | SLDI_B4_SB(zeros, src0, zeros, src1, zeros, src2, zeros, src3, 1, |
| 91 | src0_sld1, src1_sld1, src2_sld1, src3_sld1, 1); | 93 | src0_sld1, src1_sld1, src2_sld1, src3_sld1); |
| 92 | AVER_ST8x4_UB(src0, src0_sld1, src1, src1_sld1, | 94 | AVER_ST8x4_UB(src0, src0_sld1, src1, src1_sld1, |
| 93 | src2, src2_sld1, src3, src3_sld1, dst, dst_stride); | 95 | src2, src2_sld1, src3, src3_sld1, dst, dst_stride); |
| 94 | dst += (4 * dst_stride); | 96 | 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 | |||
| 125 | v16i8 src0, src1, src2, src3, src4, src5, src6, src7; | 127 | v16i8 src0, src1, src2, src3, src4, src5, src6, src7; |
| 126 | v16i8 src0_sld1, src1_sld1, src2_sld1, src3_sld1; | 128 | v16i8 src0_sld1, src1_sld1, src2_sld1, src3_sld1; |
| 127 | v16i8 src4_sld1, src5_sld1, src6_sld1, src7_sld1; | 129 | v16i8 src4_sld1, src5_sld1, src6_sld1, src7_sld1; |
| 130 | v16i8 zeros = { 0 }; | ||
| 128 | 131 | ||
| 129 | LD_SB8(src, src_stride, src0, src1, src2, src3, src4, src5, src6, src7); | 132 | LD_SB8(src, src_stride, src0, src1, src2, src3, src4, src5, src6, src7); |
| 130 | src += (8 * src_stride); | 133 | src += (8 * src_stride); |
| 131 | 134 | ||
| 132 | SLDI_B4_0_SB(src0, src1, src2, src3, | 135 | SLDI_B4_SB(zeros, src0, zeros, src1, zeros, src2, zeros, src3, 1, |
| 133 | src0_sld1, src1_sld1, src2_sld1, src3_sld1, 1); | 136 | src0_sld1, src1_sld1, src2_sld1, src3_sld1); |
| 134 | SLDI_B4_0_SB(src4, src5, src6, src7, | 137 | SLDI_B4_SB(zeros, src4, zeros, src5, zeros, src6, zeros, src7, 1, |
| 135 | src4_sld1, src5_sld1, src6_sld1, src7_sld1, 1); | 138 | src4_sld1, src5_sld1, src6_sld1, src7_sld1); |
| 136 | 139 | ||
| 137 | AVE_ST8x4_UB(src0, src0_sld1, src1, src1_sld1, | 140 | AVE_ST8x4_UB(src0, src0_sld1, src1, src1_sld1, |
| 138 | src2, src2_sld1, src3, src3_sld1, dst, dst_stride); | 141 | 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 | |||
| 145 | uint8_t *dst, int32_t dst_stride) | 148 | uint8_t *dst, int32_t dst_stride) |
| 146 | { | 149 | { |
| 147 | v16i8 src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1, src3_sld1; | 150 | v16i8 src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1, src3_sld1; |
| 151 | v16i8 zeros = { 0 }; | ||
| 148 | 152 | ||
| 149 | LD_SB4(src, src_stride, src0, src1, src2, src3); | 153 | LD_SB4(src, src_stride, src0, src1, src2, src3); |
| 150 | SLDI_B4_0_SB(src0, src1, src2, src3, | 154 | SLDI_B4_SB(zeros, src0, zeros, src1, zeros, src2, zeros, src3, 1, |
| 151 | src0_sld1, src1_sld1, src2_sld1, src3_sld1, 1); | 155 | src0_sld1, src1_sld1, src2_sld1, src3_sld1); |
| 152 | AVE_ST8x4_UB(src0, src0_sld1, src1, src1_sld1, | 156 | AVE_ST8x4_UB(src0, src0_sld1, src1, src1_sld1, |
| 153 | src2, src2_sld1, src3, src3_sld1, dst, dst_stride); | 157 | src2, src2_sld1, src3, src3_sld1, dst, dst_stride); |
| 154 | } | 158 | } |
| @@ -216,12 +220,13 @@ static void common_hz_bil_and_aver_dst_4w_msa(const uint8_t *src, · 61 unmodified lines | |||
| 216 | v16u8 src0, src1, src0_sld1, src1_sld1, res0, res1; | 220 | v16u8 src0, src1, src0_sld1, src1_sld1, res0, res1; |
| 217 | v16u8 tmp0 = { 0 }; | 221 | v16u8 tmp0 = { 0 }; |
| 218 | v16u8 tmp1 = { 0 }; | 222 | v16u8 tmp1 = { 0 }; |
| 223 | v16i8 zeros = { 0 }; | ||
| 219 | 224 | ||
| 220 | for (loop_cnt = (height >> 1); loop_cnt--;) { | 225 | for (loop_cnt = (height >> 1); loop_cnt--;) { |
| 221 | LD_UB2(src, src_stride, src0, src1); | 226 | LD_UB2(src, src_stride, src0, src1); |
| 222 | src += (2 * src_stride); | 227 | src += (2 * src_stride); |
| 223 | 228 | ||
| 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); |
| 225 | 230 | ||
| 226 | dst0 = LW(dst); | 231 | dst0 = LW(dst); |
| 227 | dst1 = LW(dst + dst_stride); | 232 | 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 | |||
| 247 | { | 252 | { |
| 248 | uint8_t loop_cnt; | 253 | uint8_t loop_cnt; |
| 249 | v16i8 src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1, src3_sld1; | 254 | v16i8 src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1, src3_sld1; |
| 255 | v16i8 zeros = { 0 }; | ||
| 250 | 256 | ||
| 251 | for (loop_cnt = (height >> 2); loop_cnt--;) { | 257 | for (loop_cnt = (height >> 2); loop_cnt--;) { |
| 252 | LD_SB4(src, src_stride, src0, src1, src2, src3); | 258 | LD_SB4(src, src_stride, src0, src1, src2, src3); |
| 253 | src += (4 * src_stride); | 259 | src += (4 * src_stride); |
| 254 | 260 | ||
| 255 | SLDI_B4_0_SB(src0, src1, src2, src3, | 261 | SLDI_B4_SB(zeros, src0, zeros, src1, zeros, src2, zeros, src3, 1, |
| 256 | src0_sld1, src1_sld1, src2_sld1, src3_sld1, 1); | 262 | src0_sld1, src1_sld1, src2_sld1, src3_sld1); |
| 257 | 263 | ||
| 258 | AVER_DST_ST8x4_UB(src0, src0_sld1, src1, src1_sld1, src2, src2_sld1, | 264 | AVER_DST_ST8x4_UB(src0, src0_sld1, src1, src1_sld1, src2, src2_sld1, |
| 259 | src3, src3_sld1, dst, dst_stride); | 265 | 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 | |||
| 529 | v16i8 src0, src1, src2, src0_sld1, src1_sld1, src2_sld1; | 535 | v16i8 src0, src1, src2, src0_sld1, src1_sld1, src2_sld1; |
| 530 | v16u8 src0_r, src1_r, src2_r, res; | 536 | v16u8 src0_r, src1_r, src2_r, res; |
| 531 | v8u16 add0, add1, add2, sum0, sum1; | 537 | v8u16 add0, add1, add2, sum0, sum1; |
| 538 | v16i8 zeros = { 0 }; | ||
| 532 | 539 | ||
| 533 | src0 = LD_SB(src); | 540 | src0 = LD_SB(src); |
| 534 | src += src_stride; | 541 | 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 | |||
| 537 | LD_SB2(src, src_stride, src1, src2); | 544 | LD_SB2(src, src_stride, src1, src2); |
| 538 | src += (2 * src_stride); | 545 | src += (2 * src_stride); |
| 539 | 546 | ||
| 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); | ||
| 541 | ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, | 549 | ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, |
| 542 | src0_r, src1_r, src2_r); | 550 | src0_r, src1_r, src2_r); |
| 543 | HADD_UB3_UH(src0_r, src1_r, src2_r, add0, add1, add2); | 551 | 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 | |||
| 565 | v16u8 src0_r, src1_r, src2_r, src3_r, src4_r; | 573 | v16u8 src0_r, src1_r, src2_r, src3_r, src4_r; |
| 566 | v8u16 add0, add1, add2, add3, add4; | 574 | v8u16 add0, add1, add2, add3, add4; |
| 567 | v8u16 sum0, sum1, sum2, sum3; | 575 | v8u16 sum0, sum1, sum2, sum3; |
| 576 | v16i8 zeros = { 0 }; | ||
| 568 | 577 | ||
| 569 | src0 = LD_SB(src); | 578 | src0 = LD_SB(src); |
| 570 | src += src_stride; | 579 | 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 | |||
| 573 | LD_SB4(src, src_stride, src1, src2, src3, src4); | 582 | LD_SB4(src, src_stride, src1, src2, src3, src4); |
| 574 | src += (4 * src_stride); | 583 | src += (4 * src_stride); |
| 575 | 584 | ||
| 576 | SLDI_B3_0_SB(src0, src1, src2, src0_sld1, src1_sld1, src2_sld1, 1); | 585 | SLDI_B3_SB(zeros, src0, zeros, src1, zeros, src2, 1, src0_sld1, |
| 577 | SLDI_B2_0_SB(src3, src4, src3_sld1, src4_sld1, 1); | 586 | src1_sld1, src2_sld1); |
| 587 | SLDI_B2_SB(zeros, src3, zeros, src4, 1, src3_sld1, src4_sld1); | ||
| 578 | ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r, | 588 | ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r, |
| 579 | src1_r, src2_r); | 589 | src1_r, src2_r); |
| 580 | ILVR_B2_UB(src3_sld1, src3, src4_sld1, src4, src3_r, src4_r); | 590 | 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 | |||
| 659 | v8u16 add0, add1, add2, add3, add4, add5, add6, add7, add8; | 669 | v8u16 add0, add1, add2, add3, add4, add5, add6, add7, add8; |
| 660 | v8u16 sum0, sum1, sum2, sum3, sum4, sum5, sum6, sum7; | 670 | v8u16 sum0, sum1, sum2, sum3, sum4, sum5, sum6, sum7; |
| 661 | v16i8 out0, out1; | 671 | v16i8 out0, out1; |
| 672 | v16i8 zeros = { 0 }; | ||
| 662 | 673 | ||
| 663 | LD_UB8(src, src_stride, src0, src1, src2, src3, src4, src5, src6, src7); | 674 | LD_UB8(src, src_stride, src0, src1, src2, src3, src4, src5, src6, src7); |
| 664 | src += (8 * src_stride); | 675 | src += (8 * src_stride); |
| 665 | src8 = LD_UB(src); | 676 | src8 = LD_UB(src); |
| 666 | 677 | ||
| 667 | SLDI_B4_0_UB(src0, src1, src2, src3, src0_sld1, src1_sld1, src2_sld1, | 678 | SLDI_B4_UB(zeros, src0, zeros, src1, zeros, src2, zeros, src3, 1, |
| 668 | src3_sld1, 1); | 679 | src0_sld1, src1_sld1, src2_sld1, src3_sld1); |
| 669 | SLDI_B3_0_UB(src4, src5, src6, src4_sld1, src5_sld1, src6_sld1, 1); | 680 | SLDI_B3_UB(zeros, src4, zeros, src5, zeros, src6, 1, src4_sld1, |
| 670 | SLDI_B2_0_UB(src7, src8, src7_sld1, src8_sld1, 1); | 681 | src5_sld1, src6_sld1); |
| 682 | SLDI_B2_UB(zeros, src7, zeros, src8, 1, src7_sld1, src8_sld1); | ||
| 671 | ILVR_B4_UH(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src3_sld1, | 683 | ILVR_B4_UH(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src3_sld1, |
| 672 | src3, src0_r, src1_r, src2_r, src3_r); | 684 | src3, src0_r, src1_r, src2_r, src3_r); |
| 673 | ILVR_B3_UH(src4_sld1, src4, src5_sld1, src5, src6_sld1, src6, src4_r, | 685 | 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 | |||
| 703 | v8u16 add0, add1, add2, add3, add4; | 715 | v8u16 add0, add1, add2, add3, add4; |
| 704 | v8u16 sum0, sum1, sum2, sum3; | 716 | v8u16 sum0, sum1, sum2, sum3; |
| 705 | v16i8 out0, out1; | 717 | v16i8 out0, out1; |
| 718 | v16i8 zeros = { 0 }; | ||
| 706 | 719 | ||
| 707 | LD_SB4(src, src_stride, src0, src1, src2, src3); | 720 | LD_SB4(src, src_stride, src0, src1, src2, src3); |
| 708 | src += (4 * src_stride); | 721 | src += (4 * src_stride); |
| 709 | src4 = LD_SB(src); | 722 | src4 = LD_SB(src); |
| 710 | 723 | ||
| 711 | SLDI_B3_0_SB(src0, src1, src2, src0_sld1, src1_sld1, src2_sld1, 1); | 724 | SLDI_B3_SB(zeros, src0, zeros, src1, zeros, src2, 1, src0_sld1, |
| 712 | SLDI_B2_0_SB(src3, src4, src3_sld1, src4_sld1, 1); | 725 | src1_sld1, src2_sld1); |
| 726 | SLDI_B2_SB(zeros, src3, zeros, src4, 1, src3_sld1, src4_sld1); | ||
| 713 | ILVR_B3_UH(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r, | 727 | ILVR_B3_UH(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r, |
| 714 | src1_r, src2_r); | 728 | src1_r, src2_r); |
| 715 | ILVR_B2_UH(src3_sld1, src3, src4_sld1, src4, src3_r, src4_r); | 729 | 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 | |||
| 918 | v16u8 src0_r, src1_r, src2_r; | 932 | v16u8 src0_r, src1_r, src2_r; |
| 919 | v8u16 add0, add1, add2, sum0, sum1; | 933 | v8u16 add0, add1, add2, sum0, sum1; |
| 920 | v16u8 dst0, dst1, res0, res1; | 934 | v16u8 dst0, dst1, res0, res1; |
| 935 | v16i8 zeros = { 0 }; | ||
| 921 | 936 | ||
| 922 | src0 = LD_SB(src); | 937 | src0 = LD_SB(src); |
| 923 | src += src_stride; | 938 | src += src_stride; |
| @@ -927,7 +942,8 @@ static void common_hv_bil_and_aver_dst_4w_msa(const uint8_t *src, · 3 unmodified lines | |||
| 927 | src += (2 * src_stride); | 942 | src += (2 * src_stride); |
| 928 | 943 | ||
| 929 | LD_UB2(dst, dst_stride, dst0, dst1); | 944 | 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); | ||
| 931 | ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r, | 947 | ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r, |
| 932 | src1_r, src2_r); | 948 | src1_r, src2_r); |
| 933 | HADD_UB3_UH(src0_r, src1_r, src2_r, add0, add1, add2); | 949 | 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 | |||
| 959 | v16u8 src0_r, src1_r, src2_r, src3_r, src4_r; | 975 | v16u8 src0_r, src1_r, src2_r, src3_r, src4_r; |
| 960 | v8u16 add0, add1, add2, add3, add4; | 976 | v8u16 add0, add1, add2, add3, add4; |
| 961 | v8u16 sum0, sum1, sum2, sum3; | 977 | v8u16 sum0, sum1, sum2, sum3; |
| 978 | v16i8 zeros = { 0 }; | ||
| 962 | 979 | ||
| 963 | src0 = LD_SB(src); | 980 | src0 = LD_SB(src); |
| 964 | src += src_stride; | 981 | src += src_stride; |
| @@ -968,8 +985,9 @@ static void common_hv_bil_and_aver_dst_8w_msa(const uint8_t *src, · 3 unmodified lines | |||
| 968 | src += (4 * src_stride); | 985 | src += (4 * src_stride); |
| 969 | 986 | ||
| 970 | LD_UB4(dst, dst_stride, dst0, dst1, dst2, dst3); | 987 | LD_UB4(dst, dst_stride, dst0, dst1, dst2, dst3); |
| 971 | SLDI_B3_0_SB(src0, src1, src2, src0_sld1, src1_sld1, src2_sld1, 1); | 988 | SLDI_B3_SB(zeros, src0, zeros, src1, zeros, src2, 1, src0_sld1, |
| 972 | SLDI_B2_0_SB(src3, src4, src3_sld1, src4_sld1, 1); | 989 | src1_sld1, src2_sld1); |
| 990 | SLDI_B2_SB(zeros, src3, zeros, src4, 1, src3_sld1, src4_sld1); | ||
| 973 | ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r, | 991 | ILVR_B3_UB(src0_sld1, src0, src1_sld1, src1, src2_sld1, src2, src0_r, |
| 974 | src1_r, src2_r); | 992 | src1_r, src2_r); |
| 975 | ILVR_B2_UB(src3_sld1, src3, src4_sld1, src4, src3_r, src4_r); | 993 | ILVR_B2_UB(src3_sld1, src3, src4_sld1, src4, src3_r, src4_r); |
| @@ -87,8 +87,8 @@ static uint32_t sad_horiz_bilinear_filter_8width_msa(uint8_t *src, · 86 unmodified lines | |||
| 87 | 87 | ||
| 88 | PCKEV_D2_UB(src1, src0, src3, src2, src0, src1); | 88 | PCKEV_D2_UB(src1, src0, src3, src2, src0, src1); |
| 89 | PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref4, ref5); | 89 | PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref4, ref5); |
| 90 | SLDI_B2_UB(ref0, ref1, ref0, ref1, ref0, ref1, 1); | 90 | SLDI_B4_UB(ref0, ref0, ref1, ref1, ref2, ref2, ref3, ref3, 1, |
| 91 | SLDI_B2_UB(ref2, ref3, ref2, ref3, ref2, ref3, 1); | 91 | ref0, ref1, ref2, ref3); |
| 92 | PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref0, ref1); | 92 | PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref0, ref1); |
| 93 | AVER_UB2_UB(ref4, ref0, ref5, ref1, comp0, comp1); | 93 | AVER_UB2_UB(ref4, ref0, ref5, ref1, comp0, comp1); |
| 94 | sad += SAD_UB2_UH(src0, src1, comp0, comp1); | 94 | 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 | |||
| 100 | 100 | ||
| 101 | PCKEV_D2_UB(src1, src0, src3, src2, src0, src1); | 101 | PCKEV_D2_UB(src1, src0, src3, src2, src0, src1); |
| 102 | PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref4, ref5); | 102 | PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref4, ref5); |
| 103 | SLDI_B2_UB(ref0, ref1, ref0, ref1, ref0, ref1, 1); | 103 | SLDI_B4_UB(ref0, ref0, ref1, ref1, ref2, ref2, ref3, ref3, 1, |
| 104 | SLDI_B2_UB(ref2, ref3, ref2, ref3, ref2, ref3, 1); | 104 | ref0, ref1, ref2, ref3); |
| 105 | PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref0, ref1); | 105 | PCKEV_D2_UB(ref1, ref0, ref3, ref2, ref0, ref1); |
| 106 | AVER_UB2_UB(ref4, ref0, ref5, ref1, comp0, comp1); | 106 | AVER_UB2_UB(ref4, ref0, ref5, ref1, comp0, comp1); |
| 107 | sad += SAD_UB2_UH(src0, src1, comp0, comp1); | 107 | sad += SAD_UB2_UH(src0, src1, comp0, comp1); |
| @@ -480,8 +480,8 @@ static void horiz_mc_qpel_aver_src1_8width_msa(const uint8_t *src, · 479 unmodified lines | |||
| 480 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, | 480 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, |
| 481 | mask0, mask1, mask2, mask3, | 481 | mask0, mask1, mask2, mask3, |
| 482 | const20, const6, const3); | 482 | const20, const6, const3); |
| 483 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 483 | SLDI_B4_UB(inp0, inp0, inp1, inp1, inp2, inp2, inp3, inp3, 1, |
| 484 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 484 | inp0, inp1, inp2, inp3); |
| 485 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 485 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 486 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 486 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 487 | AVER_UB2_UB(inp0, res0, inp2, res1, res0, res1); | 487 | 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 | |||
| 710 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, | 710 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, |
| 711 | mask2, mask3, const20, | 711 | mask2, mask3, const20, |
| 712 | const6, const3); | 712 | const6, const3); |
| 713 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 713 | SLDI_B4_UB(inp0, inp0, inp1, inp1, inp2, inp2, inp3, inp3, 1, |
| 714 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 714 | inp0, inp1, inp2, inp3); |
| 715 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 715 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 716 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 716 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 717 | res0 = __msa_ave_u_b(inp0, res0); | 717 | 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 | |||
| 948 | mask0, mask1, mask2, mask3, | 948 | mask0, mask1, mask2, mask3, |
| 949 | const20, const6, const3); | 949 | const20, const6, const3); |
| 950 | LD_UB4(dst, dst_stride, dst0, dst1, dst2, dst3); | 950 | LD_UB4(dst, dst_stride, dst0, dst1, dst2, dst3); |
| 951 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 951 | SLDI_B4_UB(inp0, inp0, inp1, inp1, inp2, inp2, inp3, inp3, 1, |
| 952 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 952 | inp0, inp1, inp2, inp3); |
| 953 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 953 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 954 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 954 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 955 | dst0 = (v16u8) __msa_insve_d((v2i64) dst0, 1, (v2i64) dst1); | 955 | 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 | |||
| 3094 | res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1, | 3094 | res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1, |
| 3095 | mask2, mask3, const20, | 3095 | mask2, mask3, const20, |
| 3096 | const6, const3); | 3096 | const6, const3); |
| 3097 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 3097 | SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1); |
| 3098 | 3098 | ||
| 3099 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 3099 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 3100 | horiz0 = __msa_ave_u_b(inp0, res0); | 3100 | 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 | |||
| 3104 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, | 3104 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, |
| 3105 | mask2, mask3, const20, | 3105 | mask2, mask3, const20, |
| 3106 | const6, const3); | 3106 | const6, const3); |
| 3107 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 3107 | SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3); |
| 3108 | 3108 | ||
| 3109 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 3109 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 3110 | horiz2 = __msa_ave_u_b(inp2, res1); | 3110 | 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 | |||
| 3114 | res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1, | 3114 | res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1, |
| 3115 | mask2, mask3, const20, | 3115 | mask2, mask3, const20, |
| 3116 | const6, const3); | 3116 | const6, const3); |
| 3117 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 3117 | SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1); |
| 3118 | 3118 | ||
| 3119 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 3119 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 3120 | horiz4 = __msa_ave_u_b(inp0, res0); | 3120 | 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 | |||
| 3134 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, | 3134 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, |
| 3135 | mask2, mask3, const20, | 3135 | mask2, mask3, const20, |
| 3136 | const6, const3); | 3136 | const6, const3); |
| 3137 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 3137 | SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3); |
| 3138 | 3138 | ||
| 3139 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 3139 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 3140 | horiz6 = __msa_ave_u_b(inp2, res1); | 3140 | 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 | |||
| 3389 | res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1, | 3389 | res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1, |
| 3390 | mask2, mask3, const20, | 3390 | mask2, mask3, const20, |
| 3391 | const6, const3); | 3391 | const6, const3); |
| 3392 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 3392 | SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1); |
| 3393 | 3393 | ||
| 3394 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 3394 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 3395 | horiz0 = __msa_ave_u_b(inp0, res0); | 3395 | 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 | |||
| 3399 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, | 3399 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, |
| 3400 | mask2, mask3, const20, | 3400 | mask2, mask3, const20, |
| 3401 | const6, const3); | 3401 | const6, const3); |
| 3402 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 3402 | SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3); |
| 3403 | 3403 | ||
| 3404 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 3404 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 3405 | horiz2 = __msa_ave_u_b(inp2, res1); | 3405 | 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 | |||
| 3409 | res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1, | 3409 | res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1, |
| 3410 | mask2, mask3, const20, | 3410 | mask2, mask3, const20, |
| 3411 | const6, const3); | 3411 | const6, const3); |
| 3412 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 3412 | SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1); |
| 3413 | 3413 | ||
| 3414 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 3414 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 3415 | horiz4 = __msa_ave_u_b(inp0, res0); | 3415 | 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 | |||
| 3427 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, | 3427 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, |
| 3428 | mask2, mask3, const20, | 3428 | mask2, mask3, const20, |
| 3429 | const6, const3); | 3429 | const6, const3); |
| 3430 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 3430 | SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3); |
| 3431 | 3431 | ||
| 3432 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 3432 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 3433 | horiz6 = __msa_ave_u_b(inp2, res1); | 3433 | 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 | |||
| 3691 | res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1, | 3691 | res0 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp0, inp1, mask0, mask1, |
| 3692 | mask2, mask3, const20, | 3692 | mask2, mask3, const20, |
| 3693 | const6, const3); | 3693 | const6, const3); |
| 3694 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 3694 | SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1); |
| 3695 | 3695 | ||
| 3696 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 3696 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 3697 | horiz0 = __msa_ave_u_b(inp0, res0); | 3697 | 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 | |||
| 3701 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, | 3701 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, |
| 3702 | mask2, mask3, const20, | 3702 | mask2, mask3, const20, |
| 3703 | const6, const3); | 3703 | const6, const3); |
| 3704 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 3704 | SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3); |
| 3705 | 3705 | ||
| 3706 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 3706 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 3707 | horiz2 = __msa_ave_u_b(inp2, res1); | 3707 | 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 | |||
| 3712 | mask2, mask3, const20, | 3712 | mask2, mask3, const20, |
| 3713 | const6, const3); | 3713 | const6, const3); |
| 3714 | 3714 | ||
| 3715 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 3715 | SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1); |
| 3716 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 3716 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 3717 | horiz4 = __msa_ave_u_b(inp0, res0); | 3717 | horiz4 = __msa_ave_u_b(inp0, res0); |
| 3718 | horiz5 = (v16u8) __msa_splati_d((v2i64) horiz4, 1); | 3718 | 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 | |||
| 3731 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, | 3731 | res1 = APPLY_HORIZ_QPEL_NO_ROUND_FILTER_8BYTE(inp2, inp3, mask0, mask1, |
| 3732 | mask2, mask3, const20, | 3732 | mask2, mask3, const20, |
| 3733 | const6, const3); | 3733 | const6, const3); |
| 3734 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 3734 | SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3); |
| 3735 | 3735 | ||
| 3736 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 3736 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 3737 | horiz6 = __msa_ave_u_b(inp2, res1); | 3737 | 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 | |||
| 4134 | const20, const6, const3); | 4134 | const20, const6, const3); |
| 4135 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, | 4135 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, |
| 4136 | const20, const6, const3); | 4136 | 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); |
| 4138 | 4138 | ||
| 4139 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 4139 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 4140 | horiz0 = __msa_aver_u_b(inp0, res0); | 4140 | horiz0 = __msa_aver_u_b(inp0, res0); |
| 4141 | horiz1 = (v16u8) __msa_splati_d((v2i64) horiz0, 1); | 4141 | 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); |
| 4143 | 4143 | ||
| 4144 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 4144 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 4145 | horiz2 = __msa_aver_u_b(inp2, res1); | 4145 | 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 | |||
| 4150 | const20, const6, const3); | 4150 | const20, const6, const3); |
| 4151 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, | 4151 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, |
| 4152 | const20, const6, const3); | 4152 | 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); |
| 4154 | 4154 | ||
| 4155 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 4155 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 4156 | horiz4 = __msa_aver_u_b(inp0, res0); | 4156 | horiz4 = __msa_aver_u_b(inp0, res0); |
| 4157 | horiz5 = (v16u8) __msa_splati_d((v2i64) horiz4, 1); | 4157 | 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); |
| 4159 | 4159 | ||
| 4160 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 4160 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 4161 | horiz6 = __msa_aver_u_b(inp2, res1); | 4161 | 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 | |||
| 4410 | const20, const6, const3); | 4410 | const20, const6, const3); |
| 4411 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, | 4411 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, |
| 4412 | const20, const6, const3); | 4412 | 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); |
| 4414 | 4414 | ||
| 4415 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 4415 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 4416 | horiz0 = __msa_aver_u_b(inp0, res0); | 4416 | horiz0 = __msa_aver_u_b(inp0, res0); |
| 4417 | horiz1 = (v16u8) __msa_splati_d((v2i64) horiz0, 1); | 4417 | 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); |
| 4419 | 4419 | ||
| 4420 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 4420 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 4421 | horiz2 = __msa_aver_u_b(inp2, res1); | 4421 | 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 | |||
| 4426 | const20, const6, const3); | 4426 | const20, const6, const3); |
| 4427 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, | 4427 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, |
| 4428 | const20, const6, const3); | 4428 | 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); |
| 4430 | 4430 | ||
| 4431 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 4431 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 4432 | horiz4 = __msa_aver_u_b(inp0, res0); | 4432 | horiz4 = __msa_aver_u_b(inp0, res0); |
| 4433 | horiz5 = (v16u8) __msa_splati_d((v2i64) horiz4, 1); | 4433 | 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); |
| 4435 | 4435 | ||
| 4436 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 4436 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 4437 | horiz6 = __msa_aver_u_b(inp2, res1); | 4437 | 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 | |||
| 4690 | res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, | 4690 | res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, |
| 4691 | mask0, mask1, mask2, mask3, | 4691 | mask0, mask1, mask2, mask3, |
| 4692 | const20, const6, const3); | 4692 | 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); |
| 4694 | 4694 | ||
| 4695 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 4695 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 4696 | horiz0 = __msa_aver_u_b(inp0, res0); | 4696 | horiz0 = __msa_aver_u_b(inp0, res0); |
| 4697 | horiz1 = (v16u8) __msa_splati_d((v2i64) horiz0, 1); | 4697 | horiz1 = (v16u8) __msa_splati_d((v2i64) horiz0, 1); |
| 4698 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, | 4698 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, |
| 4699 | const20, const6, const3); | 4699 | 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); |
| 4701 | 4701 | ||
| 4702 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 4702 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 4703 | horiz2 = __msa_aver_u_b(inp2, res1); | 4703 | 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 | |||
| 4706 | src += (2 * src_stride); | 4706 | src += (2 * src_stride); |
| 4707 | res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3, | 4707 | res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3, |
| 4708 | const20, const6, const3); | 4708 | 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); |
| 4710 | 4710 | ||
| 4711 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); | 4711 | inp0 = (v16u8) __msa_insve_d((v2i64) inp0, 1, (v2i64) inp1); |
| 4712 | horiz4 = __msa_aver_u_b(inp0, res0); | 4712 | 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 | |||
| 4725 | 4725 | ||
| 4726 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, | 4726 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, |
| 4727 | const20, const6, const3); | 4727 | 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); |
| 4729 | 4729 | ||
| 4730 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); | 4730 | inp2 = (v16u8) __msa_insve_d((v2i64) inp2, 1, (v2i64) inp3); |
| 4731 | horiz6 = __msa_aver_u_b(inp2, res1); | 4731 | 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 | |||
| 5020 | 5020 | ||
| 5021 | LD_UB2(src, src_stride, inp2, inp3); | 5021 | LD_UB2(src, src_stride, inp2, inp3); |
| 5022 | src += (2 * src_stride); | 5022 | 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); |
| 5024 | 5024 | ||
| 5025 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); | 5025 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); |
| 5026 | horiz0 = __msa_aver_u_b(inp0, res0); | 5026 | 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 | |||
| 5029 | const20, const6, const3); | 5029 | const20, const6, const3); |
| 5030 | LD_UB2(src, src_stride, inp0, inp1); | 5030 | LD_UB2(src, src_stride, inp0, inp1); |
| 5031 | src += (2 * src_stride); | 5031 | 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); |
| 5033 | 5033 | ||
| 5034 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); | 5034 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); |
| 5035 | horiz2 = __msa_aver_u_b(inp2, res1); | 5035 | 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 | |||
| 5037 | res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3, | 5037 | res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3, |
| 5038 | const20, const6, const3); | 5038 | const20, const6, const3); |
| 5039 | 5039 | ||
| 5040 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 5040 | SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1); |
| 5041 | 5041 | ||
| 5042 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); | 5042 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); |
| 5043 | horiz4 = __msa_aver_u_b(inp0, res0); | 5043 | 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 | |||
| 5060 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, | 5060 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, |
| 5061 | const20, const6, const3); | 5061 | const20, const6, const3); |
| 5062 | 5062 | ||
| 5063 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 5063 | SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3); |
| 5064 | 5064 | ||
| 5065 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); | 5065 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); |
| 5066 | horiz6 = __msa_aver_u_b(inp2, res1); | 5066 | 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 | |||
| 5347 | const20, const6, const3); | 5347 | const20, const6, const3); |
| 5348 | LD_UB2(src, src_stride, inp2, inp3); | 5348 | LD_UB2(src, src_stride, inp2, inp3); |
| 5349 | src += (2 * src_stride); | 5349 | 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); |
| 5351 | 5351 | ||
| 5352 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); | 5352 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); |
| 5353 | horiz0 = __msa_aver_u_b(inp0, res0); | 5353 | 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 | |||
| 5356 | const20, const6, const3); | 5356 | const20, const6, const3); |
| 5357 | LD_UB2(src, src_stride, inp0, inp1); | 5357 | LD_UB2(src, src_stride, inp0, inp1); |
| 5358 | src += (2 * src_stride); | 5358 | 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); |
| 5360 | 5360 | ||
| 5361 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); | 5361 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); |
| 5362 | horiz2 = __msa_aver_u_b(inp2, res1); | 5362 | 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 | |||
| 5364 | res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3, | 5364 | res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3, |
| 5365 | const20, const6, const3); | 5365 | const20, const6, const3); |
| 5366 | 5366 | ||
| 5367 | SLDI_B2_UB(inp0, inp1, inp0, inp1, inp0, inp1, 1); | 5367 | SLDI_B2_UB(inp0, inp0, inp1, inp1, 1, inp0, inp1); |
| 5368 | 5368 | ||
| 5369 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); | 5369 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); |
| 5370 | horiz4 = __msa_aver_u_b(inp0, res0); | 5370 | 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 | |||
| 5385 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, | 5385 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, |
| 5386 | const20, const6, const3); | 5386 | const20, const6, const3); |
| 5387 | 5387 | ||
| 5388 | SLDI_B2_UB(inp2, inp3, inp2, inp3, inp2, inp3, 1); | 5388 | SLDI_B2_UB(inp2, inp2, inp3, inp3, 1, inp2, inp3); |
| 5389 | 5389 | ||
| 5390 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); | 5390 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); |
| 5391 | horiz6 = __msa_aver_u_b(inp2, res1); | 5391 | 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 | |||
| 5684 | const20, const6, const3); | 5684 | const20, const6, const3); |
| 5685 | LD_UB2(src, src_stride, inp2, inp3); | 5685 | LD_UB2(src, src_stride, inp2, inp3); |
| 5686 | src += (2 * src_stride); | 5686 | 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); |
| 5688 | 5688 | ||
| 5689 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); | 5689 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); |
| 5690 | horiz0 = __msa_aver_u_b(inp0, res0); | 5690 | 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 | |||
| 5693 | const20, const6, const3); | 5693 | const20, const6, const3); |
| 5694 | LD_UB2(src, src_stride, inp0, inp1); | 5694 | LD_UB2(src, src_stride, inp0, inp1); |
| 5695 | src += (2 * src_stride); | 5695 | 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); |
| 5697 | 5697 | ||
| 5698 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); | 5698 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); |
| 5699 | horiz2 = __msa_aver_u_b(inp2, res1); | 5699 | horiz2 = __msa_aver_u_b(inp2, res1); |
| 5700 | horiz3 = (v16u8) __msa_splati_d((v2i64) horiz2, 1); | 5700 | horiz3 = (v16u8) __msa_splati_d((v2i64) horiz2, 1); |
| 5701 | res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3, | 5701 | res0 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp0, inp1, mask0, mask1, mask2, mask3, |
| 5702 | const20, const6, const3); | 5702 | 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); |
| 5704 | 5704 | ||
| 5705 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); | 5705 | inp0 = (v16u8) __msa_ilvr_d((v2i64) inp1, (v2i64) inp0); |
| 5706 | horiz4 = __msa_aver_u_b(inp0, res0); | 5706 | 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 | |||
| 5721 | src += (2 * src_stride); | 5721 | src += (2 * src_stride); |
| 5722 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, | 5722 | res1 = APPLY_HORIZ_QPEL_FILTER_8BYTE(inp2, inp3, mask0, mask1, mask2, mask3, |
| 5723 | const20, const6, const3); | 5723 | 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); |
| 5725 | 5725 | ||
| 5726 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); | 5726 | inp2 = (v16u8) __msa_ilvr_d((v2i64) inp3, (v2i64) inp2); |
| 5727 | horiz6 = __msa_aver_u_b(inp2, res1); | 5727 | horiz6 = __msa_aver_u_b(inp2, res1); |
| @@ -1995,8 +1995,8 @@ static void common_hv_2ht_2vt_4x8_msa(uint8_t *src, int32_t src_stride, · 1994 unmodified lines | |||
| 1995 | hz_out4 = HORIZ_2TAP_FILT_UH(src4, src5, mask, filt_hz, 7); | 1995 | hz_out4 = HORIZ_2TAP_FILT_UH(src4, src5, mask, filt_hz, 7); |
| 1996 | hz_out6 = HORIZ_2TAP_FILT_UH(src6, src7, mask, filt_hz, 7); | 1996 | hz_out6 = HORIZ_2TAP_FILT_UH(src6, src7, mask, filt_hz, 7); |
| 1997 | hz_out8 = HORIZ_2TAP_FILT_UH(src8, src8, mask, filt_hz, 7); | 1997 | 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, | 1998 | SLDI_B3_UH(hz_out2, hz_out0, hz_out4, hz_out2, hz_out6, hz_out4, 8, hz_out1, |
| 1999 | hz_out3, hz_out5, 8); | 1999 | hz_out3, hz_out5); |
| 2000 | hz_out7 = (v8u16) __msa_pckod_d((v2i64) hz_out8, (v2i64) hz_out6); | 2000 | hz_out7 = (v8u16) __msa_pckod_d((v2i64) hz_out8, (v2i64) hz_out6); |
| 2001 | 2001 | ||
| 2002 | ILVEV_B2_UB(hz_out0, hz_out1, hz_out2, hz_out3, vec0, vec1); | 2002 | ILVEV_B2_UB(hz_out0, hz_out1, hz_out2, hz_out3, vec0, vec1); |
| @@ -249,6 +249,7 @@ static const int32_t sinpi_4_9 = 15212; · 248 unmodified lines | |||
| 249 | v8i16 c0_m, c1_m, c2_m, c3_m; \ | 249 | v8i16 c0_m, c1_m, c2_m, c3_m; \ |
| 250 | v8i16 step0_m, step1_m; \ | 250 | v8i16 step0_m, step1_m; \ |
| 251 | v4i32 tmp0_m, tmp1_m, tmp2_m, tmp3_m; \ | 251 | v4i32 tmp0_m, tmp1_m, tmp2_m, tmp3_m; \ |
| 252 | v16i8 zeros = { 0 }; \ | ||
| 252 | \ | 253 | \ |
| 253 | c0_m = VP9_SET_COSPI_PAIR(cospi_16_64, cospi_16_64); \ | 254 | c0_m = VP9_SET_COSPI_PAIR(cospi_16_64, cospi_16_64); \ |
| 254 | c1_m = VP9_SET_COSPI_PAIR(cospi_16_64, -cospi_16_64); \ | 255 | 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 | |||
| 262 | SRARI_W4_SW(tmp0_m, tmp1_m, tmp2_m, tmp3_m, VP9_DCT_CONST_BITS); \ | 263 | SRARI_W4_SW(tmp0_m, tmp1_m, tmp2_m, tmp3_m, VP9_DCT_CONST_BITS); \ |
| 263 | \ | 264 | \ |
| 264 | PCKEV_H2_SW(tmp1_m, tmp0_m, tmp3_m, tmp2_m, tmp0_m, tmp2_m); \ | 265 | 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); \ |
| 266 | BUTTERFLY_4((v8i16) tmp0_m, (v8i16) tmp1_m, \ | 267 | BUTTERFLY_4((v8i16) tmp0_m, (v8i16) tmp1_m, \ |
| 267 | (v8i16) tmp2_m, (v8i16) tmp3_m, \ | 268 | (v8i16) tmp2_m, (v8i16) tmp3_m, \ |
| 268 | out0, out1, out2, out3); \ | 269 | out0, out1, out2, out3); \ |
| @@ -1673,6 +1673,7 @@ static void vp9_transpose_16x8_to_8x16(uint8_t *input, int32_t in_pitch, · 1672 unmodified lines | |||
| 1673 | v16u8 p7_org, p6_org, p5_org, p4_org, p3_org, p2_org, p1_org, p0_org; | 1673 | v16u8 p7_org, p6_org, p5_org, p4_org, p3_org, p2_org, p1_org, p0_org; |
| 1674 | v16i8 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; | 1674 | v16i8 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; |
| 1675 | v16u8 p7, p6, p5, p4, p3, p2, p1, p0, q0, q1, q2, q3, q4, q5, q6, q7; | 1675 | v16u8 p7, p6, p5, p4, p3, p2, p1, p0, q0, q1, q2, q3, q4, q5, q6, q7; |
| 1676 | v16i8 zeros = { 0 }; | ||
| 1676 | 1677 | ||
| 1677 | LD_UB8(input, in_pitch, | 1678 | LD_UB8(input, in_pitch, |
| 1678 | p7_org, p6_org, p5_org, p4_org, p3_org, p2_org, p1_org, p0_org); | 1679 | 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 | |||
| 1686 | ILVL_B2_SB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp7); | 1687 | ILVL_B2_SB(tmp1, tmp0, tmp3, tmp2, tmp5, tmp7); |
| 1687 | ILVR_W2_UB(tmp6, tmp4, tmp7, tmp5, q0, q4); | 1688 | ILVR_W2_UB(tmp6, tmp4, tmp7, tmp5, q0, q4); |
| 1688 | ILVL_W2_UB(tmp6, tmp4, tmp7, tmp5, q2, q6); | 1689 | 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); |
| 1690 | 1691 | ||
| 1691 | ST_UB8(p7, p6, p5, p4, p3, p2, p1, p0, output, out_pitch); | 1692 | ST_UB8(p7, p6, p5, p4, p3, p2, p1, p0, output, out_pitch); |
| 1692 | output += (8 * out_pitch); | 1693 | output += (8 * out_pitch); |
| @@ -795,7 +795,7 @@ static void common_hv_8ht_8vt_4w_msa(const uint8_t *src, int32_t src_stride, · 794 unmodified lines | |||
| 795 | filt_hz1, filt_hz2, filt_hz3); | 795 | filt_hz1, filt_hz2, filt_hz3); |
| 796 | hz_out5 = HORIZ_8TAP_FILT(src5, src6, mask0, mask1, mask2, mask3, filt_hz0, | 796 | hz_out5 = HORIZ_8TAP_FILT(src5, src6, mask0, mask1, mask2, mask3, filt_hz0, |
| 797 | filt_hz1, filt_hz2, filt_hz3); | 797 | 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); |
| 799 | 799 | ||
| 800 | filt = LD_SH(filter_vert); | 800 | filt = LD_SH(filter_vert); |
| 801 | SPLATI_H4_SH(filt, 0, 1, 2, 3, filt_vt0, filt_vt1, filt_vt2, filt_vt3); | 801 | 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 | |||
| 1585 | filt_hz1, filt_hz2, filt_hz3); | 1585 | filt_hz1, filt_hz2, filt_hz3); |
| 1586 | hz_out5 = HORIZ_8TAP_FILT(src5, src6, mask0, mask1, mask2, mask3, filt_hz0, | 1586 | hz_out5 = HORIZ_8TAP_FILT(src5, src6, mask0, mask1, mask2, mask3, filt_hz0, |
| 1587 | filt_hz1, filt_hz2, filt_hz3); | 1587 | 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); |
| 1589 | 1589 | ||
| 1590 | filt = LD_SH(filter_vert); | 1590 | filt = LD_SH(filter_vert); |
| 1591 | SPLATI_H4_SH(filt, 0, 1, 2, 3, filt_vt0, filt_vt1, filt_vt2, filt_vt3); | 1591 | 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 | |||
| 2093 | src4 = LD_SB(src + 32); | 2093 | src4 = LD_SB(src + 32); |
| 2094 | src6 = LD_SB(src + 48); | 2094 | src6 = LD_SB(src + 48); |
| 2095 | src7 = LD_SB(src + 56); | 2095 | 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); |
| 2097 | src += src_stride; | 2097 | src += src_stride; |
| 2098 | 2098 | ||
| 2099 | VSHF_B2_UB(src0, src0, src1, src1, mask, mask, vec0, vec1); | 2099 | 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 | |||
| 2544 | hz_out4 = HORIZ_2TAP_FILT_UH(src4, src5, mask, filt_hz, 7); | 2544 | hz_out4 = HORIZ_2TAP_FILT_UH(src4, src5, mask, filt_hz, 7); |
| 2545 | hz_out6 = HORIZ_2TAP_FILT_UH(src6, src7, mask, filt_hz, 7); | 2545 | hz_out6 = HORIZ_2TAP_FILT_UH(src6, src7, mask, filt_hz, 7); |
| 2546 | hz_out8 = HORIZ_2TAP_FILT_UH(src8, src8, mask, filt_hz, 7); | 2546 | 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, | 2547 | SLDI_B3_UH(hz_out2, hz_out0, hz_out4, hz_out2, hz_out6, hz_out4, 8, hz_out1, |
| 2548 | hz_out3, hz_out5, 8); | 2548 | hz_out3, hz_out5); |
| 2549 | hz_out7 = (v8u16) __msa_pckod_d((v2i64) hz_out8, (v2i64) hz_out6); | 2549 | hz_out7 = (v8u16) __msa_pckod_d((v2i64) hz_out8, (v2i64) hz_out6); |
| 2550 | 2550 | ||
| 2551 | ILVEV_B2_UB(hz_out0, hz_out1, hz_out2, hz_out3, vec0, vec1); | 2551 | 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 | |||
| 3146 | for (loop_cnt = height; loop_cnt--;) { | 3146 | for (loop_cnt = height; loop_cnt--;) { |
| 3147 | LD_SB4(src, 16, src0, src2, src4, src6); | 3147 | LD_SB4(src, 16, src0, src2, src4, src6); |
| 3148 | src7 = LD_SB(src + 56); | 3148 | 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); |
| 3150 | src += src_stride; | 3150 | src += src_stride; |
| 3151 | 3151 | ||
| 3152 | VSHF_B2_UB(src0, src0, src1, src1, mask, mask, vec0, vec1); | 3152 | 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 | |||
| 3655 | hz_out4 = HORIZ_2TAP_FILT_UH(src4, src5, mask, filt_hz, 7); | 3655 | hz_out4 = HORIZ_2TAP_FILT_UH(src4, src5, mask, filt_hz, 7); |
| 3656 | hz_out6 = HORIZ_2TAP_FILT_UH(src6, src7, mask, filt_hz, 7); | 3656 | hz_out6 = HORIZ_2TAP_FILT_UH(src6, src7, mask, filt_hz, 7); |
| 3657 | hz_out8 = HORIZ_2TAP_FILT_UH(src8, src8, mask, filt_hz, 7); | 3657 | 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, | 3658 | SLDI_B3_UH(hz_out2, hz_out0, hz_out4, hz_out2, hz_out6, hz_out4, 8, hz_out1, |
| 3659 | hz_out3, hz_out5, 8); | 3659 | hz_out3, hz_out5); |
| 3660 | hz_out7 = (v8u16) __msa_pckod_d((v2i64) hz_out8, (v2i64) hz_out6); | 3660 | hz_out7 = (v8u16) __msa_pckod_d((v2i64) hz_out8, (v2i64) hz_out6); |
| 3661 | 3661 | ||
| 3662 | LW4(dst, dst_stride, tp0, tp1, tp2, tp3); | 3662 | LW4(dst, dst_stride, tp0, tp1, tp2, tp3); |
| @@ -602,67 +602,48 @@ · 601 unmodified lines | |||
| 602 | } | 602 | } |
| 603 | #define AVER_UB4_UB(...) AVER_UB4(v16u8, __VA_ARGS__) | 603 | #define AVER_UB4_UB(...) AVER_UB4(v16u8, __VA_ARGS__) |
| 604 | 604 | ||
| 605 | /* Description : Immediate number of columns to slide with zero | 605 | /* Description : Immediate number of columns to slide |
| 606 | Arguments : Inputs - in0, in1, slide_val | 606 | Arguments : Inputs - s, d, slide_val |
| 607 | Outputs - out0, out1 | 607 | Outputs - out |
| 608 | Return Type - as per RTYPE | 608 | 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 |
| 610 | number of elements specified by 'slide_val' | 610 | number of elements specified by 'slide_val' |
| 611 | */ | 611 | */ |
| 612 | #define SLDI_B2_0(RTYPE, in0, in1, out0, out1, slide_val) \ | 612 | #define SLDI_B(RTYPE, d, s, slide_val, out) \ |
| 613 | { \ | 613 | { \ |
| 614 | v16i8 zero_m = { 0 }; \ | 614 | out = (RTYPE) __msa_sldi_b((v16i8) d, (v16i8) s, slide_val); \ |
| 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); \ | ||
| 636 | } | 615 | } |
| 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__) | ||
| 640 | 616 | ||
| 641 | /* Description : Immediate number of columns to slide | 617 | #define SLDI_B2(RTYPE, d0, s0, d1, s1, slide_val, out0, out1) \ |
| 642 | Arguments : Inputs - in0_0, in0_1, in1_0, in1_1, slide_val | 618 | { \ |
| 643 | Outputs - out0, out1 | 619 | SLDI_B(RTYPE, d0, s0, slide_val, out0) \ |
| 644 | Return Type - as per RTYPE | 620 | SLDI_B(RTYPE, d1, s1, slide_val, out1) \ |
| 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); \ | ||
| 652 | } | 621 | } |
| 653 | #define SLDI_B2_UB(...) SLDI_B2(v16u8, __VA_ARGS__) | 622 | #define SLDI_B2_UB(...) SLDI_B2(v16u8, __VA_ARGS__) |
| 654 | #define SLDI_B2_SB(...) SLDI_B2(v16i8, __VA_ARGS__) | 623 | #define SLDI_B2_SB(...) SLDI_B2(v16i8, __VA_ARGS__) |
| 655 | #define SLDI_B2_SH(...) SLDI_B2(v8i16, __VA_ARGS__) | 624 | #define SLDI_B2_SH(...) SLDI_B2(v8i16, __VA_ARGS__) |
| 625 | #define SLDI_B2_SW(...) SLDI_B2(v4i32, __VA_ARGS__) | ||
| 656 | 626 | ||
| 657 | #define SLDI_B3(RTYPE, in0_0, in0_1, in0_2, in1_0, in1_1, in1_2, \ | 627 | #define SLDI_B3(RTYPE, d0, s0, d1, s1, d2, s2, slide_val, \ |
| 658 | out0, out1, out2, slide_val) \ | 628 | out0, out1, out2) \ |
| 659 | { \ | 629 | { \ |
| 660 | SLDI_B2(RTYPE, in0_0, in0_1, in1_0, in1_1, out0, out1, slide_val) \ | 630 | SLDI_B2(RTYPE, d0, s0, d1, s1, slide_val, out0, out1) \ |
| 661 | out2 = (RTYPE) __msa_sldi_b((v16i8) in0_2, (v16i8) in1_2, slide_val); \ | 631 | SLDI_B(RTYPE, d2, s2, slide_val, out2) \ |
| 662 | } | 632 | } |
| 633 | #define SLDI_B3_UB(...) SLDI_B3(v16u8, __VA_ARGS__) | ||
| 663 | #define SLDI_B3_SB(...) SLDI_B3(v16i8, __VA_ARGS__) | 634 | #define SLDI_B3_SB(...) SLDI_B3(v16i8, __VA_ARGS__) |
| 664 | #define SLDI_B3_UH(...) SLDI_B3(v8u16, __VA_ARGS__) | 635 | #define SLDI_B3_UH(...) SLDI_B3(v8u16, __VA_ARGS__) |
| 665 | 636 | ||
| 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 | |||
| 666 | /* Description : Shuffle byte vector elements as per mask vector | 647 | /* Description : Shuffle byte vector elements as per mask vector |
| 667 | Arguments : Inputs - in0, in1, in2, in3, mask0, mask1 | 648 | Arguments : Inputs - in0, in1, in2, in3, mask0, mask1 |
| 668 | Outputs - out0, out1 | 649 | Outputs - out0, out1 |
| @@ -2412,6 +2393,7 @@ · 1743 unmodified lines | |||
| 2412 | { \ | 2393 | { \ |
| 2413 | v16i8 tmp0_m, tmp1_m, tmp2_m, tmp3_m; \ | 2394 | v16i8 tmp0_m, tmp1_m, tmp2_m, tmp3_m; \ |
| 2414 | v16i8 tmp4_m, tmp5_m, tmp6_m, tmp7_m; \ | 2395 | v16i8 tmp4_m, tmp5_m, tmp6_m, tmp7_m; \ |
| 2396 | v16i8 zeros = { 0 }; \ | ||
| 2415 | \ | 2397 | \ |
| 2416 | ILVR_B4_SB(in2, in0, in3, in1, in6, in4, in7, in5, \ | 2398 | ILVR_B4_SB(in2, in0, in3, in1, in6, in4, in7, in5, \ |
| 2417 | tmp0_m, tmp1_m, tmp2_m, tmp3_m); \ | 2399 | tmp0_m, tmp1_m, tmp2_m, tmp3_m); \ |
| @@ -2419,8 +2401,8 @@ · 1 unmodified line | |||
| 2419 | ILVRL_B2_SB(tmp3_m, tmp2_m, tmp6_m, tmp7_m); \ | 2401 | ILVRL_B2_SB(tmp3_m, tmp2_m, tmp6_m, tmp7_m); \ |
| 2420 | ILVRL_W2(RTYPE, tmp6_m, tmp4_m, out0, out2); \ | 2402 | ILVRL_W2(RTYPE, tmp6_m, tmp4_m, out0, out2); \ |
| 2421 | ILVRL_W2(RTYPE, tmp7_m, tmp5_m, out4, out6); \ | 2403 | ILVRL_W2(RTYPE, tmp7_m, tmp5_m, out4, out6); \ |
| 2422 | SLDI_B2_0(RTYPE, out0, out2, out1, out3, 8); \ | 2404 | SLDI_B4(RTYPE, zeros, out0, zeros, out2, zeros, out4, zeros, out6, \ |
| 2423 | SLDI_B2_0(RTYPE, out4, out6, out5, out7, 8); \ | 2405 | 8, out1, out3, out5, out7); \ |
| 2424 | } | 2406 | } |
| 2425 | #define TRANSPOSE8x8_UB_UB(...) TRANSPOSE8x8_UB(v16u8, __VA_ARGS__) | 2407 | #define TRANSPOSE8x8_UB_UB(...) TRANSPOSE8x8_UB(v16u8, __VA_ARGS__) |
| 2426 | #define TRANSPOSE8x8_UB_UH(...) TRANSPOSE8x8_UB(v8u16, __VA_ARGS__) | 2408 | #define TRANSPOSE8x8_UB_UH(...) TRANSPOSE8x8_UB(v8u16, __VA_ARGS__) |