summaryrefslogtreecommitdiff
path: root/libavcodec/mips/hevcdsp_msa.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/mips/hevcdsp_msa.c')
-rw-r--r--libavcodec/mips/hevcdsp_msa.c63
1 files changed, 28 insertions, 35 deletions
diff --git a/libavcodec/mips/hevcdsp_msa.c b/libavcodec/mips/hevcdsp_msa.c
index 81db62b876..2c57ec857a 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;