Lines Matching refs:dst
36 static av_always_inline void avc_chroma_hv_8x4_lasx(uint8_t *src, uint8_t *dst,
68 __lasx_xvstelm_d(out, dst, 0, 0);
69 __lasx_xvstelm_d(out, dst + stride, 0, 2);
70 __lasx_xvstelm_d(out, dst + stride_2x, 0, 1);
71 __lasx_xvstelm_d(out, dst + stride_3x, 0, 3);
74 static av_always_inline void avc_chroma_hv_8x8_lasx(uint8_t *src, uint8_t *dst,
119 __lasx_xvstelm_d(out0, dst, 0, 0);
120 __lasx_xvstelm_d(out0, dst + stride, 0, 2);
121 __lasx_xvstelm_d(out0, dst + stride_2x, 0, 1);
122 __lasx_xvstelm_d(out0, dst + stride_3x, 0, 3);
123 dst += stride_4x;
124 __lasx_xvstelm_d(out1, dst, 0, 0);
125 __lasx_xvstelm_d(out1, dst + stride, 0, 2);
126 __lasx_xvstelm_d(out1, dst + stride_2x, 0, 1);
127 __lasx_xvstelm_d(out1, dst + stride_3x, 0, 3);
130 static av_always_inline void avc_chroma_hz_8x4_lasx(uint8_t *src, uint8_t *dst,
150 __lasx_xvstelm_d(out, dst, 0, 0);
151 __lasx_xvstelm_d(out, dst + stride, 0, 2);
152 __lasx_xvstelm_d(out, dst + stride_2x, 0, 1);
153 __lasx_xvstelm_d(out, dst + stride_3x, 0, 3);
157 static av_always_inline void avc_chroma_hz_8x8_lasx(uint8_t *src, uint8_t *dst,
185 __lasx_xvstelm_d(out0, dst, 0, 0);
186 __lasx_xvstelm_d(out0, dst + stride, 0, 2);
187 __lasx_xvstelm_d(out0, dst + stride_2x, 0, 1);
188 __lasx_xvstelm_d(out0, dst + stride_3x, 0, 3);
189 dst += stride_4x;
190 __lasx_xvstelm_d(out1, dst, 0, 0);
191 __lasx_xvstelm_d(out1, dst + stride, 0, 2);
192 __lasx_xvstelm_d(out1, dst + stride_2x, 0, 1);
193 __lasx_xvstelm_d(out1, dst + stride_3x, 0, 3);
197 uint8_t *dst, ptrdiff_t stride, uint32_t coeff0,
222 __lasx_xvstelm_d(out, dst, 0, 0);
223 __lasx_xvstelm_d(out, dst + stride, 0, 2);
224 __lasx_xvstelm_d(out, dst + stride_2x, 0, 1);
225 __lasx_xvstelm_d(out, dst + stride_3x, 0, 3);
226 dst += stride_4x;
236 __lasx_xvstelm_d(out, dst, 0, 0);
237 dst += stride;
238 __lasx_xvstelm_d(out, dst, 0, 2);
242 static av_always_inline void avc_chroma_vt_8x4_lasx(uint8_t *src, uint8_t *dst,
263 __lasx_xvstelm_d(out, dst, 0, 0);
264 __lasx_xvstelm_d(out, dst + stride, 0, 2);
265 __lasx_xvstelm_d(out, dst + stride_2x, 0, 1);
266 __lasx_xvstelm_d(out, dst + stride_3x, 0, 3);
269 static av_always_inline void avc_chroma_vt_8x8_lasx(uint8_t *src, uint8_t *dst,
299 __lasx_xvstelm_d(out0, dst, 0, 0);
300 __lasx_xvstelm_d(out0, dst + stride, 0, 2);
301 __lasx_xvstelm_d(out0, dst + stride_2x, 0, 1);
302 __lasx_xvstelm_d(out0, dst + stride_3x, 0, 3);
303 dst += stride_4x;
304 __lasx_xvstelm_d(out1, dst, 0, 0);
305 __lasx_xvstelm_d(out1, dst + stride, 0, 2);
306 __lasx_xvstelm_d(out1, dst + stride_2x, 0, 1);
307 __lasx_xvstelm_d(out1, dst + stride_3x, 0, 3);
310 static av_always_inline void copy_width8x8_lasx(uint8_t *src, uint8_t *dst,
329 "st.d %[tmp0], %[dst], 0x0 \n\t"
330 "stx.d %[tmp1], %[dst], %[stride] \n\t"
331 "stx.d %[tmp2], %[dst], %[stride_2] \n\t"
332 "stx.d %[tmp3], %[dst], %[stride_3] \n\t"
333 "add.d %[dst], %[dst], %[stride_4] \n\t"
334 "st.d %[tmp4], %[dst], 0x0 \n\t"
335 "stx.d %[tmp5], %[dst], %[stride] \n\t"
336 "stx.d %[tmp6], %[dst], %[stride_2] \n\t"
337 "stx.d %[tmp7], %[dst], %[stride_3] \n\t"
342 [dst]"+&r"(dst), [src]"+&r"(src),
350 static av_always_inline void copy_width8x4_lasx(uint8_t *src, uint8_t *dst,
363 "st.d %[tmp0], %[dst], 0x0 \n\t"
364 "stx.d %[tmp1], %[dst], %[stride] \n\t"
365 "stx.d %[tmp2], %[dst], %[stride_2] \n\t"
366 "stx.d %[tmp3], %[dst], %[stride_3] \n\t"
370 : [stride]"r"(stride), [dst]"r"(dst), [src]"r"(src)
375 static void avc_chroma_hv_8w_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
381 avc_chroma_hv_8x4_lasx(src, dst, stride, coef_hor0, coef_hor1, coef_ver0,
384 avc_chroma_hv_8x8_lasx(src, dst, stride, coef_hor0, coef_hor1, coef_ver0,
389 static void avc_chroma_hv_4x2_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
413 __lasx_xvstelm_w(res_vt, dst, 0, 0);
414 __lasx_xvstelm_w(res_vt, dst + stride, 0, 1);
417 static void avc_chroma_hv_4x4_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
443 __lasx_xvstelm_w(res_hz0, dst, 0, 0);
444 __lasx_xvstelm_w(res_hz0, dst + stride, 0, 1);
445 __lasx_xvstelm_w(res_hz0, dst + stride_2, 0, 4);
446 __lasx_xvstelm_w(res_hz0, dst + stride_3, 0, 5);
449 static void avc_chroma_hv_4x8_lasx(uint8_t *src, uint8_t * dst, ptrdiff_t stride,
484 __lasx_xvstelm_w(res_hz0, dst, 0, 0);
485 __lasx_xvstelm_w(res_hz0, dst + stride, 0, 1);
486 __lasx_xvstelm_w(res_hz0, dst + stride_2, 0, 4);
487 __lasx_xvstelm_w(res_hz0, dst + stride_3, 0, 5);
488 dst += stride_4;
489 __lasx_xvstelm_w(res_hz0, dst, 0, 2);
490 __lasx_xvstelm_w(res_hz0, dst + stride, 0, 3);
491 __lasx_xvstelm_w(res_hz0, dst + stride_2, 0, 6);
492 __lasx_xvstelm_w(res_hz0, dst + stride_3, 0, 7);
495 static void avc_chroma_hv_4w_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
501 avc_chroma_hv_4x8_lasx(src, dst, stride, coef_hor0, coef_hor1, coef_ver0,
504 avc_chroma_hv_4x4_lasx(src, dst, stride, coef_hor0, coef_hor1, coef_ver0,
507 avc_chroma_hv_4x2_lasx(src, dst, stride, coef_hor0, coef_hor1, coef_ver0,
512 static void avc_chroma_hz_4x2_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
527 __lasx_xvstelm_w(res, dst, 0, 0);
528 __lasx_xvstelm_w(res, dst + stride, 0, 1);
531 static void avc_chroma_hz_4x4_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
550 __lasx_xvstelm_w(res, dst, 0, 0);
551 __lasx_xvstelm_w(res, dst + stride, 0, 1);
552 __lasx_xvstelm_w(res, dst + stride_2, 0, 4);
553 __lasx_xvstelm_w(res, dst + stride_3, 0, 5);
556 static void avc_chroma_hz_4x8_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
580 __lasx_xvstelm_w(res0, dst, 0, 0);
581 __lasx_xvstelm_w(res0, dst + stride, 0, 1);
582 __lasx_xvstelm_w(res0, dst + stride_2, 0, 4);
583 __lasx_xvstelm_w(res0, dst + stride_3, 0, 5);
584 dst += stride_4;
585 __lasx_xvstelm_w(res0, dst, 0, 2);
586 __lasx_xvstelm_w(res0, dst + stride, 0, 3);
587 __lasx_xvstelm_w(res0, dst + stride_2, 0, 6);
588 __lasx_xvstelm_w(res0, dst + stride_3, 0, 7);
591 static void avc_chroma_hz_4w_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
596 avc_chroma_hz_4x8_lasx(src, dst, stride, coeff0, coeff1);
598 avc_chroma_hz_4x4_lasx(src, dst, stride, coeff0, coeff1);
600 avc_chroma_hz_4x2_lasx(src, dst, stride, coeff0, coeff1);
604 static void avc_chroma_hz_8w_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
609 avc_chroma_hz_8x4_lasx(src, dst, stride, coeff0, coeff1);
611 avc_chroma_hz_8x8_lasx(src, dst, stride, coeff0, coeff1);
613 avc_chroma_hz_nonmult_lasx(src, dst, stride, coeff0, coeff1, height);
617 static void avc_chroma_vt_4x2_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
634 __lasx_xvstelm_w(res, dst, 0, 0);
635 __lasx_xvstelm_w(res, dst + stride, 0, 1);
638 static void avc_chroma_vt_4x4_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
661 __lasx_xvstelm_w(res, dst, 0, 0);
662 __lasx_xvstelm_w(res, dst + stride, 0, 1);
663 __lasx_xvstelm_w(res, dst + stride_2, 0, 4);
664 __lasx_xvstelm_w(res, dst + stride_3, 0, 5);
667 static void avc_chroma_vt_4x8_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
697 __lasx_xvstelm_w(res0, dst, 0, 0);
698 __lasx_xvstelm_w(res0, dst + stride, 0, 1);
699 __lasx_xvstelm_w(res0, dst + stride_2, 0, 4);
700 __lasx_xvstelm_w(res0, dst + stride_3, 0, 5);
701 dst += stride_4;
702 __lasx_xvstelm_w(res0, dst, 0, 2);
703 __lasx_xvstelm_w(res0, dst + stride, 0, 3);
704 __lasx_xvstelm_w(res0, dst + stride_2, 0, 6);
705 __lasx_xvstelm_w(res0, dst + stride_3, 0, 7);
708 static void avc_chroma_vt_4w_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
713 avc_chroma_vt_4x8_lasx(src, dst, stride, coeff0, coeff1);
715 avc_chroma_vt_4x4_lasx(src, dst, stride, coeff0, coeff1);
717 avc_chroma_vt_4x2_lasx(src, dst, stride, coeff0, coeff1);
721 static void avc_chroma_vt_8w_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
726 avc_chroma_vt_8x4_lasx(src, dst, stride, coeff0, coeff1);
728 avc_chroma_vt_8x8_lasx(src, dst, stride, coeff0, coeff1);
732 static void copy_width4_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
753 "st.w %[tp0], %[dst], 0 \n\t"
754 "stx.w %[tp1], %[dst], %[stride] \n\t"
755 "stx.w %[tp2], %[dst], %[stride_2] \n\t"
756 "stx.w %[tp3], %[dst], %[stride_3] \n\t"
757 "add.d %[dst], %[dst], %[stride_4] \n\t"
758 "st.w %[tp4], %[dst], 0 \n\t"
759 "stx.w %[tp5], %[dst], %[stride] \n\t"
760 "stx.w %[tp6], %[dst], %[stride_2] \n\t"
761 "stx.w %[tp7], %[dst], %[stride_3] \n\t"
763 [src]"+&r"(src), [dst]"+&r"(dst), [tp0]"+&r"(tp0), [tp1]"+&r"(tp1),
779 "st.w %[tp0], %[dst], 0 \n\t"
780 "stx.w %[tp1], %[dst], %[stride] \n\t"
781 "stx.w %[tp2], %[dst], %[stride_2] \n\t"
782 "stx.w %[tp3], %[dst], %[stride_3] \n\t"
784 [src]"+&r"(src), [dst]"+&r"(dst), [tp0]"+&r"(tp0), [tp1]"+&r"(tp1),
793 "st.w %[tp0], %[dst], 0 \n\t"
794 "stx.w %[tp1], %[dst], %[stride] \n\t"
796 : [src]"r"(src), [dst]"r"(dst), [stride]"r"(stride)
802 static void copy_width8_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
806 copy_width8x8_lasx(src, dst, stride);
808 copy_width8x4_lasx(src, dst, stride);
812 void ff_put_h264_chroma_mc4_lasx(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
818 avc_chroma_hv_4w_lasx(src, dst, stride, x, (8 - x), y, (8 - y), height);
820 avc_chroma_hz_4w_lasx(src, dst, stride, x, (8 - x), height);
822 avc_chroma_vt_4w_lasx(src, dst, stride, y, (8 - y), height);
824 copy_width4_lasx(src, dst, stride, height);
828 void ff_put_h264_chroma_mc8_lasx(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
834 copy_width8_lasx(src, dst, stride, height);
836 avc_chroma_hv_8w_lasx(src, dst, stride, x, (8 - x), y, (8 - y), height);
838 avc_chroma_hz_8w_lasx(src, dst, stride, x, (8 - x), height);
840 avc_chroma_vt_8w_lasx(src, dst, stride, y, (8 - y), height);
845 uint8_t *dst, ptrdiff_t stride, uint32_t coef_hor0,
877 DUP4_ARG2(__lasx_xvldx, dst, 0, dst, stride, dst, stride_2x, dst, stride_3x,
882 __lasx_xvstelm_d(out, dst, 0, 0);
883 __lasx_xvstelm_d(out, dst + stride, 0, 2);
884 __lasx_xvstelm_d(out, dst + stride_2x, 0, 1);
885 __lasx_xvstelm_d(out, dst + stride_3x, 0, 3);
889 uint8_t *dst, ptrdiff_t stride, uint32_t coef_hor0,
937 DUP4_ARG2(__lasx_xvldx, dst, 0, dst, stride, dst, stride_2x, dst, stride_3x,
941 dst += stride_4x;
942 DUP4_ARG2(__lasx_xvldx, dst, 0, dst, stride, dst, stride_2x, dst, stride_3x,
944 dst -= stride_4x;
949 __lasx_xvstelm_d(out0, dst, 0, 0);
950 __lasx_xvstelm_d(out0, dst + stride, 0, 2);
951 __lasx_xvstelm_d(out0, dst + stride_2x, 0, 1);
952 __lasx_xvstelm_d(out0, dst + stride_3x, 0, 3);
953 dst += stride_4x;
954 __lasx_xvstelm_d(out1, dst, 0, 0);
955 __lasx_xvstelm_d(out1, dst + stride, 0, 2);
956 __lasx_xvstelm_d(out1, dst + stride_2x, 0, 1);
957 __lasx_xvstelm_d(out1, dst + stride_3x, 0, 3);
961 uint8_t *dst, ptrdiff_t stride, uint32_t coeff0,
982 DUP4_ARG2(__lasx_xvldx, dst, 0, dst, stride, dst, stride_2x, dst, stride_3x,
987 __lasx_xvstelm_d(out, dst, 0, 0);
988 __lasx_xvstelm_d(out, dst + stride, 0, 2);
989 __lasx_xvstelm_d(out, dst + stride_2x, 0, 1);
990 __lasx_xvstelm_d(out, dst + stride_3x, 0, 3);
994 uint8_t *dst, ptrdiff_t stride, uint32_t coeff0,
1023 DUP4_ARG2(__lasx_xvldx, dst, 0, dst, stride, dst, stride_2x, dst, stride_3x,
1027 dst += stride_4x;
1028 DUP4_ARG2(__lasx_xvldx, dst, 0, dst, stride, dst, stride_2x, dst, stride_3x,
1030 dst -= stride_4x;
1035 __lasx_xvstelm_d(out0, dst, 0, 0);
1036 __lasx_xvstelm_d(out0, dst + stride, 0, 2);
1037 __lasx_xvstelm_d(out0, dst + stride_2x, 0, 1);
1038 __lasx_xvstelm_d(out0, dst + stride_3x, 0, 3);
1039 dst += stride_4x;
1040 __lasx_xvstelm_d(out1, dst, 0, 0);
1041 __lasx_xvstelm_d(out1, dst + stride, 0, 2);
1042 __lasx_xvstelm_d(out1, dst + stride_2x, 0, 1);
1043 __lasx_xvstelm_d(out1, dst + stride_3x, 0, 3);
1047 uint8_t *dst, ptrdiff_t stride, uint32_t coeff0,
1069 DUP4_ARG2(__lasx_xvldx, dst, 0, dst, stride, dst, stride_2x, dst, stride_3x,
1074 __lasx_xvstelm_d(out, dst, 0, 0);
1075 __lasx_xvstelm_d(out, dst + stride, 0, 2);
1076 __lasx_xvstelm_d(out, dst + stride_2x, 0, 1);
1077 __lasx_xvstelm_d(out, dst + stride_3x, 0, 3);
1081 uint8_t *dst, ptrdiff_t stride, uint32_t coeff0,
1112 DUP4_ARG2(__lasx_xvldx, dst, 0, dst, stride, dst, stride_2x, dst, stride_3x,
1116 dst += stride_4x;
1117 DUP4_ARG2(__lasx_xvldx, dst, 0, dst, stride, dst, stride_2x, dst, stride_3x,
1119 dst -= stride_4x;
1124 __lasx_xvstelm_d(out0, dst, 0, 0);
1125 __lasx_xvstelm_d(out0, dst + stride, 0, 2);
1126 __lasx_xvstelm_d(out0, dst + stride_2x, 0, 1);
1127 __lasx_xvstelm_d(out0, dst + stride_3x, 0, 3);
1128 dst += stride_4x;
1129 __lasx_xvstelm_d(out1, dst, 0, 0);
1130 __lasx_xvstelm_d(out1, dst + stride, 0, 2);
1131 __lasx_xvstelm_d(out1, dst + stride_2x, 0, 1);
1132 __lasx_xvstelm_d(out1, dst + stride_3x, 0, 3);
1135 static av_always_inline void avg_width8x8_lasx(uint8_t *src, uint8_t *dst,
1148 dst0 = __lasx_xvldrepl_d(dst, 0);
1149 dst1 = __lasx_xvldrepl_d(dst + stride, 0);
1150 dst2 = __lasx_xvldrepl_d(dst + stride_2x, 0);
1151 dst3 = __lasx_xvldrepl_d(dst + stride_3x, 0);
1159 __lasx_xvstelm_d(dst0, dst, 0, 0);
1160 __lasx_xvstelm_d(dst0, dst + stride, 0, 1);
1161 __lasx_xvstelm_d(dst0, dst + stride_2x, 0, 2);
1162 __lasx_xvstelm_d(dst0, dst + stride_3x, 0, 3);
1165 dst += stride_4x;
1170 dst0 = __lasx_xvldrepl_d(dst, 0);
1171 dst1 = __lasx_xvldrepl_d(dst + stride, 0);
1172 dst2 = __lasx_xvldrepl_d(dst + stride_2x, 0);
1173 dst3 = __lasx_xvldrepl_d(dst + stride_3x, 0);
1181 __lasx_xvstelm_d(dst0, dst, 0, 0);
1182 __lasx_xvstelm_d(dst0, dst + stride, 0, 1);
1183 __lasx_xvstelm_d(dst0, dst + stride_2x, 0, 2);
1184 __lasx_xvstelm_d(dst0, dst + stride_3x, 0, 3);
1187 static av_always_inline void avg_width8x4_lasx(uint8_t *src, uint8_t *dst,
1199 dst0 = __lasx_xvldrepl_d(dst, 0);
1200 dst1 = __lasx_xvldrepl_d(dst + stride, 0);
1201 dst2 = __lasx_xvldrepl_d(dst + stride_2x, 0);
1202 dst3 = __lasx_xvldrepl_d(dst + stride_3x, 0);
1210 __lasx_xvstelm_d(dst0, dst, 0, 0);
1211 __lasx_xvstelm_d(dst0, dst + stride, 0, 1);
1212 __lasx_xvstelm_d(dst0, dst + stride_2x, 0, 2);
1213 __lasx_xvstelm_d(dst0, dst + stride_3x, 0, 3);
1216 static void avc_chroma_hv_and_aver_dst_8w_lasx(uint8_t *src, uint8_t *dst,
1225 avc_chroma_hv_and_aver_dst_8x4_lasx(src, dst, stride, coef_hor0,
1228 avc_chroma_hv_and_aver_dst_8x8_lasx(src, dst, stride, coef_hor0,
1233 static void avc_chroma_hz_and_aver_dst_8w_lasx(uint8_t *src, uint8_t *dst,
1238 avc_chroma_hz_and_aver_dst_8x4_lasx(src, dst, stride, coeff0, coeff1);
1240 avc_chroma_hz_and_aver_dst_8x8_lasx(src, dst, stride, coeff0, coeff1);
1244 static void avc_chroma_vt_and_aver_dst_8w_lasx(uint8_t *src, uint8_t *dst,
1249 avc_chroma_vt_and_aver_dst_8x4_lasx(src, dst, stride, coeff0, coeff1);
1251 avc_chroma_vt_and_aver_dst_8x8_lasx(src, dst, stride, coeff0, coeff1);
1255 static void avg_width8_lasx(uint8_t *src, uint8_t *dst, ptrdiff_t stride,
1259 avg_width8x8_lasx(src, dst, stride);
1261 avg_width8x4_lasx(src, dst, stride);
1265 void ff_avg_h264_chroma_mc8_lasx(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
1271 avg_width8_lasx(src, dst, stride, height);
1273 avc_chroma_hv_and_aver_dst_8w_lasx(src, dst, stride, x, (8 - x), y,
1276 avc_chroma_hz_and_aver_dst_8w_lasx(src, dst, stride, x, (8 - x), height);
1278 avc_chroma_vt_and_aver_dst_8w_lasx(src, dst, stride, y, (8 - y), height);