X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmips%2Fhevcdsp_msa.c;h=2c57ec857a1edd1c5137b2ff647b45884443567f;hb=634529c40d62e02bacea3a7f91d4226a9e4b3cbc;hp=81db62b876d9b171bd306eccb81449a3f3f4185d;hpb=0a319bcce5714f7183b0537892f7d37d7a31493a;p=ffmpeg diff --git a/libavcodec/mips/hevcdsp_msa.c b/libavcodec/mips/hevcdsp_msa.c index 81db62b876d..2c57ec857a1 100644 --- a/libavcodec/mips/hevcdsp_msa.c +++ b/libavcodec/mips/hevcdsp_msa.c @@ -44,7 +44,7 @@ static void hevc_copy_4w_msa(uint8_t *src, int32_t src_stride, src0 = (v16i8) __msa_ilvr_w((v4i32) src1, (v4i32) src0); in0 = (v8i16) __msa_ilvr_b(zero, src0); in0 <<= 6; - ST8x2_UB(in0, dst, 2 * dst_stride); + ST_D2(in0, 0, 1, dst, dst_stride); } else if (4 == height) { v16i8 src0, src1, src2, src3; v8i16 in0, in1; @@ -55,7 +55,7 @@ static void hevc_copy_4w_msa(uint8_t *src, int32_t src_stride, ILVR_B2_SH(zero, src0, zero, src1, in0, in1); in0 <<= 6; in1 <<= 6; - ST8x4_UB(in0, in1, dst, 2 * dst_stride); + ST_D4(in0, in1, 0, 1, 0, 1, dst, dst_stride); } else if (0 == height % 8) { v16i8 src0, src1, src2, src3, src4, src5, src6, src7; v8i16 in0, in1, in2, in3; @@ -71,7 +71,7 @@ static void hevc_copy_4w_msa(uint8_t *src, int32_t src_stride, ILVR_B4_SH(zero, src0, zero, src1, zero, src2, zero, src3, in0, in1, in2, in3); SLLI_4V(in0, in1, in2, in3, 6); - ST8x8_UB(in0, in1, in2, in3, dst, 2 * dst_stride); + ST_D8(in0, in1, in2, in3, 0, 1, 0, 1, 0, 1, 0, 1, dst, dst_stride); dst += (8 * dst_stride); } } @@ -183,7 +183,7 @@ static void hevc_copy_12w_msa(uint8_t *src, int32_t src_stride, in0 <<= 6; in1 <<= 6; ST_SH4(in0_r, in1_r, in2_r, in3_r, dst, dst_stride); - ST8x4_UB(in0, in1, dst + 8, 2 * dst_stride); + ST_D4(in0, in1, 0, 1, 0, 1, dst + 8, dst_stride); dst += (4 * dst_stride); ILVR_B4_SH(zero, src4, zero, src5, zero, src6, zero, src7, @@ -194,7 +194,7 @@ static void hevc_copy_12w_msa(uint8_t *src, int32_t src_stride, in0 <<= 6; in1 <<= 6; ST_SH4(in0_r, in1_r, in2_r, in3_r, dst, dst_stride); - ST8x4_UB(in0, in1, dst + 8, 2 * dst_stride); + ST_D4(in0, in1, 0, 1, 0, 1, dst + 8, dst_stride); dst += (4 * dst_stride); } } @@ -495,7 +495,7 @@ static void hevc_hz_8t_4w_msa(uint8_t *src, int32_t src_stride, DPADD_SB4_SH(vec0, vec1, vec2, vec3, filt0, filt1, filt2, filt3, dst3, dst3, dst3, dst3); - ST8x8_UB(dst0, dst1, dst2, dst3, dst, 2 * dst_stride); + ST_D8(dst0, dst1, dst2, dst3, 0, 1, 0, 1, 0, 1, 0, 1, dst, dst_stride); dst += (8 * dst_stride); } } @@ -1047,7 +1047,7 @@ static void hevc_vt_8t_4w_msa(uint8_t *src, int32_t src_stride, DPADD_SB4_SH(src8776, src10998, src12111110, src14131312, filt0, filt1, filt2, filt3, dst76, dst76, dst76, dst76); - ST8x8_UB(dst10, dst32, dst54, dst76, dst, 2 * dst_stride); + ST_D8(dst10, dst32, dst54, dst76, 0, 1, 0, 1, 0, 1, 0, 1, dst, dst_stride); dst += (8 * dst_stride); src2110 = src10998; @@ -1191,7 +1191,7 @@ static void hevc_vt_8t_12w_msa(uint8_t *src, int32_t src_stride, dst1_l, dst1_l, dst1_l, dst1_l); ST_SH4(dst0_r, dst1_r, dst2_r, dst3_r, dst, dst_stride); - ST8x4_UB(dst0_l, dst1_l, dst + 8, 2 * dst_stride); + ST_D4(dst0_l, dst1_l, 0, 1, 0, 1, dst + 8, dst_stride); dst += (4 * dst_stride); src10_r = src54_r; @@ -1363,7 +1363,6 @@ static void hevc_hv_8t_4w_msa(uint8_t *src, int32_t src_stride, int32_t height) { uint32_t loop_cnt; - int32_t dst_stride_in_bytes = 2 * dst_stride; v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10; v8i16 filt0, filt1, filt2, filt3; v8i16 filt_h0, filt_h1, filt_h2, filt_h3; @@ -1452,7 +1451,7 @@ static void hevc_hv_8t_4w_msa(uint8_t *src, int32_t src_stride, filt_h0, filt_h1, filt_h2, filt_h3); SRA_4V(dst0_r, dst1_r, dst2_r, dst3_r, 6); PCKEV_H2_SW(dst1_r, dst0_r, dst3_r, dst2_r, dst0_r, dst2_r); - ST8x4_UB(dst0_r, dst2_r, dst, dst_stride_in_bytes); + ST_D4(dst0_r, dst2_r, 0, 1, 0, 1, dst, dst_stride); dst += (4 * dst_stride); dst10_r = dst54_r; @@ -1607,7 +1606,6 @@ static void hevc_hv_8t_12w_msa(uint8_t *src, int32_t src_stride, int32_t height) { uint32_t loop_cnt; - int32_t dst_stride_in_bytes = 2 * dst_stride; uint8_t *src_tmp; int16_t *dst_tmp; v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10; @@ -1784,7 +1782,7 @@ static void hevc_hv_8t_12w_msa(uint8_t *src, int32_t src_stride, filt_h1, filt_h2, filt_h3); SRA_4V(dst0_r, dst1_r, dst2_r, dst3_r, 6); PCKEV_H2_SW(dst1_r, dst0_r, dst3_r, dst2_r, dst0_r, dst2_r); - ST8x4_UB(dst0_r, dst2_r, dst, dst_stride_in_bytes); + ST_D4(dst0_r, dst2_r, 0, 1, 0, 1, dst, dst_stride); dst += (4 * dst_stride); dst10_r = dst54_r; @@ -1872,7 +1870,7 @@ static void hevc_hz_4t_4x2_msa(uint8_t *src, dst0 = const_vec; DPADD_SB2_SH(vec0, vec1, filt0, filt1, dst0, dst0); - ST8x2_UB(dst0, dst, 2 * dst_stride); + ST_D2(dst0, 0, 1, dst, dst_stride); } static void hevc_hz_4t_4x4_msa(uint8_t *src, @@ -1909,7 +1907,7 @@ static void hevc_hz_4t_4x4_msa(uint8_t *src, dst1 = const_vec; DPADD_SB2_SH(vec0, vec1, filt0, filt1, dst1, dst1); - ST8x4_UB(dst0, dst1, dst, 2 * dst_stride); + ST_D4(dst0, dst1, 0, 1, 0, 1, dst, dst_stride); } static void hevc_hz_4t_4x8multiple_msa(uint8_t *src, @@ -1956,7 +1954,7 @@ static void hevc_hz_4t_4x8multiple_msa(uint8_t *src, dst3 = const_vec; DPADD_SB2_SH(vec0, vec1, filt0, filt1, dst3, dst3); - ST8x8_UB(dst0, dst1, dst2, dst3, dst, 2 * dst_stride); + ST_D8(dst0, dst1, dst2, dst3, 0, 1, 0, 1, 0, 1, 0, 1, dst, dst_stride); dst += (8 * dst_stride); } } @@ -2218,7 +2216,7 @@ static void hevc_hz_4t_12w_msa(uint8_t *src, DPADD_SB2_SH(vec0, vec1, filt0, filt1, dst5, dst5); ST_SH4(dst0, dst1, dst2, dst3, dst, dst_stride); - ST8x4_UB(dst4, dst5, dst + 8, 2 * dst_stride); + ST_D4(dst4, dst5, 0, 1, 0, 1, dst + 8, dst_stride); dst += (4 * dst_stride); } } @@ -2478,7 +2476,7 @@ static void hevc_vt_4t_4x2_msa(uint8_t *src, dst10 = const_vec; DPADD_SB2_SH(src2110, src4332, filt0, filt1, dst10, dst10); - ST8x2_UB(dst10, dst, 2 * dst_stride); + ST_D2(dst10, 0, 1, dst, dst_stride); } static void hevc_vt_4t_4x4_msa(uint8_t *src, @@ -2515,7 +2513,7 @@ static void hevc_vt_4t_4x4_msa(uint8_t *src, dst32 = const_vec; DPADD_SB2_SH(src4332, src6554, filt0, filt1, dst32, dst32); - ST8x4_UB(dst10, dst32, dst, 2 * dst_stride); + ST_D4(dst10, dst32, 0, 1, 0, 1, dst, dst_stride); } static void hevc_vt_4t_4x8_msa(uint8_t *src, @@ -2564,8 +2562,7 @@ static void hevc_vt_4t_4x8_msa(uint8_t *src, DPADD_SB2_SH(src4332, src6554, filt0, filt1, dst32, dst32); DPADD_SB2_SH(src6554, src8776, filt0, filt1, dst54, dst54); DPADD_SB2_SH(src8776, src10998, filt0, filt1, dst76, dst76); - ST8x8_UB(dst10, dst32, dst54, dst76, dst, 2 * dst_stride); - dst += (8 * dst_stride); + ST_D8(dst10, dst32, dst54, dst76, 0, 1, 0, 1, 0, 1, 0, 1, dst, dst_stride); } static void hevc_vt_4t_4x16_msa(uint8_t *src, int32_t src_stride, @@ -2610,7 +2607,7 @@ static void hevc_vt_4t_4x16_msa(uint8_t *src, int32_t src_stride, DPADD_SB2_SH(src4332, src6554, filt0, filt1, dst32, dst32); DPADD_SB2_SH(src6554, src8776, filt0, filt1, dst54, dst54); DPADD_SB2_SH(src8776, src10998, filt0, filt1, dst76, dst76); - ST8x8_UB(dst10, dst32, dst54, dst76, dst, 2 * dst_stride); + ST_D8(dst10, dst32, dst54, dst76, 0, 1, 0, 1, 0, 1, 0, 1, dst, dst_stride); dst += (8 * dst_stride); src2 = src10; @@ -2635,8 +2632,7 @@ static void hevc_vt_4t_4x16_msa(uint8_t *src, int32_t src_stride, DPADD_SB2_SH(src4332, src6554, filt0, filt1, dst32, dst32); DPADD_SB2_SH(src6554, src8776, filt0, filt1, dst54, dst54); DPADD_SB2_SH(src8776, src10998, filt0, filt1, dst76, dst76); - ST8x8_UB(dst10, dst32, dst54, dst76, dst, 2 * dst_stride); - dst += (8 * dst_stride); + ST_D8(dst10, dst32, dst54, dst76, 0, 1, 0, 1, 0, 1, 0, 1, dst, dst_stride); } static void hevc_vt_4t_4w_msa(uint8_t *src, @@ -2955,7 +2951,7 @@ static void hevc_vt_4t_12w_msa(uint8_t *src, DPADD_SB2_SH(src4332, src6554, filt0, filt1, dst1_l, dst1_l); ST_SH4(dst0_r, dst1_r, dst2_r, dst3_r, dst, dst_stride); - ST8x4_UB(dst0_l, dst1_l, dst + 8, (2 * dst_stride)); + ST_D4(dst0_l, dst1_l, 0, 1, 0, 1, dst + 8, dst_stride); dst += (4 * dst_stride); src2 = src6; @@ -3243,7 +3239,6 @@ static void hevc_hv_4t_4x2_msa(uint8_t *src, const int8_t *filter_x, const int8_t *filter_y) { - int32_t dst_stride_in_bytes = 2 * dst_stride; v16i8 src0, src1, src2, src3, src4; v8i16 filt0, filt1; v8i16 filt_h0, filt_h1; @@ -3288,7 +3283,7 @@ static void hevc_hv_4t_4x2_msa(uint8_t *src, dst0 >>= 6; dst1 >>= 6; dst0 = (v4i32) __msa_pckev_h((v8i16) dst1, (v8i16) dst0); - ST8x2_UB(dst0, dst, dst_stride_in_bytes); + ST_D2(dst0, 0, 1, dst, dst_stride); } static void hevc_hv_4t_4x4_msa(uint8_t *src, @@ -3298,7 +3293,6 @@ static void hevc_hv_4t_4x4_msa(uint8_t *src, const int8_t *filter_x, const int8_t *filter_y) { - int32_t dst_stride_in_bytes = 2 * dst_stride; v16i8 src0, src1, src2, src3, src4, src5, src6; v8i16 filt0, filt1; v8i16 filt_h0, filt_h1; @@ -3351,7 +3345,7 @@ static void hevc_hv_4t_4x4_msa(uint8_t *src, dst3 = HEVC_FILT_4TAP(dst43, dst65, filt_h0, filt_h1); SRA_4V(dst0, dst1, dst2, dst3, 6); PCKEV_H2_SW(dst1, dst0, dst3, dst2, dst0, dst2); - ST8x4_UB(dst0, dst2, dst, dst_stride_in_bytes); + ST_D4(dst0, dst2, 0, 1, 0, 1, dst, dst_stride); } @@ -3442,7 +3436,7 @@ static void hevc_hv_4t_4multx8mult_msa(uint8_t *src, SRA_4V(dst4, dst5, dst6, dst7, 6); PCKEV_H4_SW(dst1, dst0, dst3, dst2, dst5, dst4, dst7, dst6, dst0, dst1, dst2, dst3); - ST8x8_UB(dst0, dst1, dst2, dst3, dst, 2 * dst_stride); + ST_D8(dst0, dst1, dst2, dst3, 0, 1, 0, 1, 0, 1, 0, 1, dst, dst_stride); dst += (8 * dst_stride); dst10_r = dst98_r; @@ -3479,7 +3473,6 @@ static void hevc_hv_4t_6w_msa(uint8_t *src, const int8_t *filter_y, int32_t height) { - int32_t dst_stride_in_bytes = 2 * dst_stride; v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10; v8i16 filt0, filt1; v8i16 filt_h0, filt_h1; @@ -3590,11 +3583,11 @@ static void hevc_hv_4t_6w_msa(uint8_t *src, PCKEV_H2_SH(dst1_r, dst0_r, dst3_r, dst2_r, tmp0, tmp1); PCKEV_H2_SH(dst5_r, dst4_r, dst7_r, dst6_r, tmp2, tmp3); PCKEV_H2_SH(dst1_l, dst0_l, dst3_l, dst2_l, tmp4, tmp5); - ST8x4_UB(tmp0, tmp1, dst, dst_stride_in_bytes); - ST4x4_UB(tmp4, tmp4, 0, 1, 2, 3, dst + 4, dst_stride_in_bytes); + ST_D4(tmp0, tmp1, 0, 1, 0, 1, dst, dst_stride); + ST_W4(tmp4, 0, 1, 2, 3, dst + 4, dst_stride); dst += 4 * dst_stride; - ST8x4_UB(tmp2, tmp3, dst, dst_stride_in_bytes); - ST4x4_UB(tmp5, tmp5, 0, 1, 2, 3, dst + 4, dst_stride_in_bytes); + ST_D4(tmp2, tmp3, 0, 1, 0, 1, dst, dst_stride); + ST_W4(tmp5, 0, 1, 2, 3, dst + 4, dst_stride); } static void hevc_hv_4t_8x2_msa(uint8_t *src, @@ -4164,7 +4157,7 @@ static void hevc_hv_4t_12w_msa(uint8_t *src, SRA_4V(tmp4, tmp5, tmp6, tmp7, 6); PCKEV_H4_SW(tmp1, tmp0, tmp3, tmp2, tmp5, tmp4, tmp7, tmp6, tmp0, tmp1, tmp2, tmp3); - ST8x8_UB(tmp0, tmp1, tmp2, tmp3, dst, 2 * dst_stride); + ST_D8(tmp0, tmp1, tmp2, tmp3, 0, 1, 0, 1, 0, 1, 0, 1, dst, dst_stride); dst += (8 * dst_stride); dst10_r = dst98_r;