Update aom to commit id e87fb2378f01103d5d6e477a4ef6892dc714e614

This commit is contained in:
trav90 2018-10-18 21:53:44 -05:00 • committed by Roy Tam
commit 992c6637e3
429 changed files with 76047 additions and 40937 deletions

View file

@ -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);
}