260 const uint8_t *src_left,
const uint8_t *src_top)
263 v16u8 top0, top1, left0, left1,
out;
264 v8u16 sum_h, sum_top0, sum_top1, sum_left0, sum_left1;
268 LD_UB2(src_top, 16, top0, top1);
269 LD_UB2(src_left, 16, left0, left1);
272 sum_h = sum_top0 + sum_top1;
273 sum_h += sum_left0 + sum_left1;
274 sum_w = __msa_hadd_u_w(sum_h, sum_h);
275 sum_d = __msa_hadd_u_d(sum_w, sum_w);
276 sum_w = (v4u32) __msa_pckev_w((v4i32)
sum_d, (v4i32)
sum_d);
277 sum_d = __msa_hadd_u_d(sum_w, sum_w);
278 sum_w = (v4u32) __msa_srari_w((v4i32)
sum_d, 6);
279 out = (v16u8) __msa_splati_b((v16i8) sum_w, 0);
281 for (row = 16; row--;)
358 const uint8_t *src_left,
const uint8_t *src_top_ptr)
361 uint8_t top_left = src_top_ptr[-1];
362 v16i8 src_top, src_left0, src_left1, src_left2, src_left3, tmp0, tmp1;
364 v8u16 src_top_left, vec0, vec1, vec2, vec3;
366 src_top_left = (v8u16) __msa_fill_h(top_left);
367 src_top =
LD_SB(src_top_ptr);
369 src_left0 = __msa_fill_b(
left >> 24);
370 src_left1 = __msa_fill_b(
left >> 16);
371 src_left2 = __msa_fill_b(
left >> 8);
372 src_left3 = __msa_fill_b(
left);
374 ILVR_B4_UB(src_left0, src_top, src_left1, src_top, src_left2, src_top,
382 ST_W2(tmp1, 0, 2,
dst + 2 * dst_stride, dst_stride);
386 const uint8_t *src_left,
const uint8_t *src_top_ptr)
388 uint8_t top_left = src_top_ptr[-1];
389 uint32_t loop_cnt,
left;
390 v16i8 src_top, src_left0, src_left1, src_left2, src_left3, tmp0, tmp1;
391 v8u16 src_top_left, vec0, vec1, vec2, vec3;
394 src_top =
LD_SB(src_top_ptr);
395 src_top_left = (v8u16) __msa_fill_h(top_left);
398 for (loop_cnt = 2; loop_cnt--;) {
400 src_left0 = __msa_fill_b(
left >> 24);
401 src_left1 = __msa_fill_b(
left >> 16);
402 src_left2 = __msa_fill_b(
left >> 8);
403 src_left3 = __msa_fill_b(
left);
406 ILVR_B4_UB(src_left0, src_top, src_left1, src_top, src_left2, src_top,
413 ST_D4(tmp0, tmp1, 0, 1, 0, 1,
dst, dst_stride);
414 dst += (4 * dst_stride);
419 const uint8_t *src_left,
const uint8_t *src_top_ptr)
421 uint8_t top_left = src_top_ptr[-1];
422 uint32_t loop_cnt,
left;
423 v16i8 src_top, src_left0, src_left1, src_left2, src_left3;
424 v8u16 src_top_left, res_r, res_l;
426 src_top =
LD_SB(src_top_ptr);
427 src_top_left = (v8u16) __msa_fill_h(top_left);
430 for (loop_cnt = 4; loop_cnt--;) {
432 src_left0 = __msa_fill_b(
left >> 24);
433 src_left1 = __msa_fill_b(
left >> 16);
434 src_left2 = __msa_fill_b(
left >> 8);
435 src_left3 = __msa_fill_b(
left);
470 const uint8_t *src_left,
const uint8_t *src_top_ptr)
472 uint8_t top_left = src_top_ptr[-1];
473 uint32_t loop_cnt,
left;
474 v16i8 src_top0, src_top1, src_left0, src_left1, src_left2, src_left3;
475 v8u16 src_top_left, res_r0, res_r1, res_l0, res_l1;
477 src_top0 =
LD_SB(src_top_ptr);
478 src_top1 =
LD_SB(src_top_ptr + 16);
479 src_top_left = (v8u16) __msa_fill_h(top_left);
482 for (loop_cnt = 8; loop_cnt--;) {
484 src_left0 = __msa_fill_b(
left >> 24);
485 src_left1 = __msa_fill_b(
left >> 16);
486 src_left2 = __msa_fill_b(
left >> 8);
487 src_left3 = __msa_fill_b(
left);
490 ILVR_B2_UH(src_left0, src_top0, src_left0, src_top1, res_r0, res_r1);
491 ILVL_B2_UH(src_left0, src_top0, src_left0, src_top1, res_l0, res_l1);
492 HADD_UB4_UH(res_r0, res_l0, res_r1, res_l1, res_r0, res_l0, res_r1,
496 SAT_UH4_UH(res_r0, res_l0, res_r1, res_l1, 7);
501 ILVR_B2_UH(src_left1, src_top0, src_left1, src_top1, res_r0, res_r1);
502 ILVL_B2_UH(src_left1, src_top0, src_left1, src_top1, res_l0, res_l1);
503 HADD_UB4_UH(res_r0, res_l0, res_r1, res_l1, res_r0, res_l0, res_r1,
507 SAT_UH4_UH(res_r0, res_l0, res_r1, res_l1, 7);
512 ILVR_B2_UH(src_left2, src_top0, src_left2, src_top1, res_r0, res_r1);
513 ILVL_B2_UH(src_left2, src_top0, src_left2, src_top1, res_l0, res_l1);
514 HADD_UB4_UH(res_r0, res_l0, res_r1, res_l1, res_r0, res_l0, res_r1,
518 SAT_UH4_UH(res_r0, res_l0, res_r1, res_l1, 7);
523 ILVR_B2_UH(src_left3, src_top0, src_left3, src_top1, res_r0, res_r1);
524 ILVL_B2_UH(src_left3, src_top0, src_left3, src_top1, res_l0, res_l1);
525 HADD_UB4_UH(res_r0, res_l0, res_r1, res_l1, res_r0, res_l0, res_r1,
529 SAT_UH4_UH(res_r0, res_l0, res_r1, res_l1, 7);