mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-09 00:37:32 +09:00
Update aom to commit id e87fb2378f01103d5d6e477a4ef6892dc714e614
This commit is contained in:
parent
debbee1e2a
commit
992c6637e3
429 changed files with 76047 additions and 40937 deletions
190
third_party/aom/aom_dsp/mips/intrapred_msa.c
vendored
190
third_party/aom/aom_dsp/mips/intrapred_msa.c
vendored
|
|
@ -382,176 +382,6 @@ static void intra_predict_128dc_32x32_msa(uint8_t *dst, int32_t dst_stride) {
|
|||
}
|
||||
}
|
||||
|
||||
static void intra_predict_tm_4x4_msa(const uint8_t *src_top_ptr,
|
||||
const uint8_t *src_left, uint8_t *dst,
|
||||
int32_t dst_stride) {
|
||||
uint32_t val;
|
||||
uint8_t top_left = src_top_ptr[-1];
|
||||
v16i8 src_left0, src_left1, src_left2, src_left3, tmp0, tmp1, src_top = { 0 };
|
||||
v16u8 src0, src1, src2, src3;
|
||||
v8u16 src_top_left, vec0, vec1, vec2, vec3;
|
||||
|
||||
src_top_left = (v8u16)__msa_fill_h(top_left);
|
||||
val = LW(src_top_ptr);
|
||||
src_top = (v16i8)__msa_insert_w((v4i32)src_top, 0, val);
|
||||
|
||||
src_left0 = __msa_fill_b(src_left[0]);
|
||||
src_left1 = __msa_fill_b(src_left[1]);
|
||||
src_left2 = __msa_fill_b(src_left[2]);
|
||||
src_left3 = __msa_fill_b(src_left[3]);
|
||||
|
||||
ILVR_B4_UB(src_left0, src_top, src_left1, src_top, src_left2, src_top,
|
||||
src_left3, src_top, src0, src1, src2, src3);
|
||||
HADD_UB4_UH(src0, src1, src2, src3, vec0, vec1, vec2, vec3);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, vec0, vec1);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, vec2, vec3);
|
||||
SAT_UH4_UH(vec0, vec1, vec2, vec3, 7);
|
||||
PCKEV_B2_SB(vec1, vec0, vec3, vec2, tmp0, tmp1);
|
||||
ST4x4_UB(tmp0, tmp1, 0, 2, 0, 2, dst, dst_stride);
|
||||
}
|
||||
|
||||
static void intra_predict_tm_8x8_msa(const uint8_t *src_top_ptr,
|
||||
const uint8_t *src_left, uint8_t *dst,
|
||||
int32_t dst_stride) {
|
||||
uint64_t val;
|
||||
uint8_t top_left = src_top_ptr[-1];
|
||||
uint32_t loop_cnt;
|
||||
v16i8 src_left0, src_left1, src_left2, src_left3, tmp0, tmp1, src_top = { 0 };
|
||||
v8u16 src_top_left, vec0, vec1, vec2, vec3;
|
||||
v16u8 src0, src1, src2, src3;
|
||||
|
||||
val = LD(src_top_ptr);
|
||||
src_top = (v16i8)__msa_insert_d((v2i64)src_top, 0, val);
|
||||
src_top_left = (v8u16)__msa_fill_h(top_left);
|
||||
|
||||
for (loop_cnt = 2; loop_cnt--;) {
|
||||
src_left0 = __msa_fill_b(src_left[0]);
|
||||
src_left1 = __msa_fill_b(src_left[1]);
|
||||
src_left2 = __msa_fill_b(src_left[2]);
|
||||
src_left3 = __msa_fill_b(src_left[3]);
|
||||
src_left += 4;
|
||||
|
||||
ILVR_B4_UB(src_left0, src_top, src_left1, src_top, src_left2, src_top,
|
||||
src_left3, src_top, src0, src1, src2, src3);
|
||||
HADD_UB4_UH(src0, src1, src2, src3, vec0, vec1, vec2, vec3);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, vec0, vec1);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, vec2, vec3);
|
||||
SAT_UH4_UH(vec0, vec1, vec2, vec3, 7);
|
||||
PCKEV_B2_SB(vec1, vec0, vec3, vec2, tmp0, tmp1);
|
||||
ST8x4_UB(tmp0, tmp1, dst, dst_stride);
|
||||
dst += (4 * dst_stride);
|
||||
}
|
||||
}
|
||||
|
||||
static void intra_predict_tm_16x16_msa(const uint8_t *src_top_ptr,
|
||||
const uint8_t *src_left, uint8_t *dst,
|
||||
int32_t dst_stride) {
|
||||
uint8_t top_left = src_top_ptr[-1];
|
||||
uint32_t loop_cnt;
|
||||
v16i8 src_top, src_left0, src_left1, src_left2, src_left3;
|
||||
v8u16 src_top_left, res_r, res_l;
|
||||
|
||||
src_top = LD_SB(src_top_ptr);
|
||||
src_top_left = (v8u16)__msa_fill_h(top_left);
|
||||
|
||||
for (loop_cnt = 4; loop_cnt--;) {
|
||||
src_left0 = __msa_fill_b(src_left[0]);
|
||||
src_left1 = __msa_fill_b(src_left[1]);
|
||||
src_left2 = __msa_fill_b(src_left[2]);
|
||||
src_left3 = __msa_fill_b(src_left[3]);
|
||||
src_left += 4;
|
||||
|
||||
ILVRL_B2_UH(src_left0, src_top, res_r, res_l);
|
||||
HADD_UB2_UH(res_r, res_l, res_r, res_l);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r, res_l);
|
||||
|
||||
SAT_UH2_UH(res_r, res_l, 7);
|
||||
PCKEV_ST_SB(res_r, res_l, dst);
|
||||
dst += dst_stride;
|
||||
|
||||
ILVRL_B2_UH(src_left1, src_top, res_r, res_l);
|
||||
HADD_UB2_UH(res_r, res_l, res_r, res_l);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r, res_l);
|
||||
SAT_UH2_UH(res_r, res_l, 7);
|
||||
PCKEV_ST_SB(res_r, res_l, dst);
|
||||
dst += dst_stride;
|
||||
|
||||
ILVRL_B2_UH(src_left2, src_top, res_r, res_l);
|
||||
HADD_UB2_UH(res_r, res_l, res_r, res_l);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r, res_l);
|
||||
SAT_UH2_UH(res_r, res_l, 7);
|
||||
PCKEV_ST_SB(res_r, res_l, dst);
|
||||
dst += dst_stride;
|
||||
|
||||
ILVRL_B2_UH(src_left3, src_top, res_r, res_l);
|
||||
HADD_UB2_UH(res_r, res_l, res_r, res_l);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r, res_l);
|
||||
SAT_UH2_UH(res_r, res_l, 7);
|
||||
PCKEV_ST_SB(res_r, res_l, dst);
|
||||
dst += dst_stride;
|
||||
}
|
||||
}
|
||||
|
||||
static void intra_predict_tm_32x32_msa(const uint8_t *src_top,
|
||||
const uint8_t *src_left, uint8_t *dst,
|
||||
int32_t dst_stride) {
|
||||
uint8_t top_left = src_top[-1];
|
||||
uint32_t loop_cnt;
|
||||
v16i8 src_top0, src_top1, src_left0, src_left1, src_left2, src_left3;
|
||||
v8u16 src_top_left, res_r0, res_r1, res_l0, res_l1;
|
||||
|
||||
LD_SB2(src_top, 16, src_top0, src_top1);
|
||||
src_top_left = (v8u16)__msa_fill_h(top_left);
|
||||
|
||||
for (loop_cnt = 8; loop_cnt--;) {
|
||||
src_left0 = __msa_fill_b(src_left[0]);
|
||||
src_left1 = __msa_fill_b(src_left[1]);
|
||||
src_left2 = __msa_fill_b(src_left[2]);
|
||||
src_left3 = __msa_fill_b(src_left[3]);
|
||||
src_left += 4;
|
||||
|
||||
ILVR_B2_UH(src_left0, src_top0, src_left0, src_top1, res_r0, res_r1);
|
||||
ILVL_B2_UH(src_left0, src_top0, src_left0, src_top1, res_l0, res_l1);
|
||||
HADD_UB4_UH(res_r0, res_l0, res_r1, res_l1, res_r0, res_l0, res_r1, res_l1);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r0, res_l0);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r1, res_l1);
|
||||
SAT_UH4_UH(res_r0, res_l0, res_r1, res_l1, 7);
|
||||
PCKEV_ST_SB(res_r0, res_l0, dst);
|
||||
PCKEV_ST_SB(res_r1, res_l1, dst + 16);
|
||||
dst += dst_stride;
|
||||
|
||||
ILVR_B2_UH(src_left1, src_top0, src_left1, src_top1, res_r0, res_r1);
|
||||
ILVL_B2_UH(src_left1, src_top0, src_left1, src_top1, res_l0, res_l1);
|
||||
HADD_UB4_UH(res_r0, res_l0, res_r1, res_l1, res_r0, res_l0, res_r1, res_l1);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r0, res_l0);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r1, res_l1);
|
||||
SAT_UH4_UH(res_r0, res_l0, res_r1, res_l1, 7);
|
||||
PCKEV_ST_SB(res_r0, res_l0, dst);
|
||||
PCKEV_ST_SB(res_r1, res_l1, dst + 16);
|
||||
dst += dst_stride;
|
||||
|
||||
ILVR_B2_UH(src_left2, src_top0, src_left2, src_top1, res_r0, res_r1);
|
||||
ILVL_B2_UH(src_left2, src_top0, src_left2, src_top1, res_l0, res_l1);
|
||||
HADD_UB4_UH(res_r0, res_l0, res_r1, res_l1, res_r0, res_l0, res_r1, res_l1);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r0, res_l0);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r1, res_l1);
|
||||
SAT_UH4_UH(res_r0, res_l0, res_r1, res_l1, 7);
|
||||
PCKEV_ST_SB(res_r0, res_l0, dst);
|
||||
PCKEV_ST_SB(res_r1, res_l1, dst + 16);
|
||||
dst += dst_stride;
|
||||
|
||||
ILVR_B2_UH(src_left3, src_top0, src_left3, src_top1, res_r0, res_r1);
|
||||
ILVL_B2_UH(src_left3, src_top0, src_left3, src_top1, res_l0, res_l1);
|
||||
HADD_UB4_UH(res_r0, res_l0, res_r1, res_l1, res_r0, res_l0, res_r1, res_l1);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r0, res_l0);
|
||||
IPRED_SUBS_UH2_UH(src_top_left, src_top_left, res_r1, res_l1);
|
||||
SAT_UH4_UH(res_r0, res_l0, res_r1, res_l1, 7);
|
||||
PCKEV_ST_SB(res_r0, res_l0, dst);
|
||||
PCKEV_ST_SB(res_r1, res_l1, dst + 16);
|
||||
dst += dst_stride;
|
||||
}
|
||||
}
|
||||
|
||||
void aom_v_predictor_4x4_msa(uint8_t *dst, ptrdiff_t y_stride,
|
||||
const uint8_t *above, const uint8_t *left) {
|
||||
(void)left;
|
||||
|
|
@ -717,23 +547,3 @@ void aom_dc_128_predictor_32x32_msa(uint8_t *dst, ptrdiff_t y_stride,
|
|||
|
||||
intra_predict_128dc_32x32_msa(dst, y_stride);
|
||||
}
|
||||
|
||||
void aom_tm_predictor_4x4_msa(uint8_t *dst, ptrdiff_t y_stride,
|
||||
const uint8_t *above, const uint8_t *left) {
|
||||
intra_predict_tm_4x4_msa(above, left, dst, y_stride);
|
||||
}
|
||||
|
||||
void aom_tm_predictor_8x8_msa(uint8_t *dst, ptrdiff_t y_stride,
|
||||
const uint8_t *above, const uint8_t *left) {
|
||||
intra_predict_tm_8x8_msa(above, left, dst, y_stride);
|
||||
}
|
||||
|
||||
void aom_tm_predictor_16x16_msa(uint8_t *dst, ptrdiff_t y_stride,
|
||||
const uint8_t *above, const uint8_t *left) {
|
||||
intra_predict_tm_16x16_msa(above, left, dst, y_stride);
|
||||
}
|
||||
|
||||
void aom_tm_predictor_32x32_msa(uint8_t *dst, ptrdiff_t y_stride,
|
||||
const uint8_t *above, const uint8_t *left) {
|
||||
intra_predict_tm_32x32_msa(above, left, dst, y_stride);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue