25 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7,
26 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12
32 v16u8 in0, in1, in2, in3, in4, in5, in6, in7;
33 v8i16 temp0, temp1, temp2;
34 v8i16 diff0, diff2, diff4, diff6, diff8;
35 v8i16 d0, a_d0, str_x2, str;
38 LD_UB8(src, stride, in0, in1, in2, in3, in4, in5, in6, in7);
42 temp0 = (v8i16) __msa_ilvr_b((v16i8) in0, (v16i8) in1);
43 a_d0 = __msa_hsub_u_h((v16u8) temp0, (v16u8) temp0);
44 temp2 = (v8i16) __msa_ilvr_b((v16i8) in2, (v16i8) in3);
45 temp2 = __msa_hsub_u_h((v16u8) temp2, (v16u8) temp2);
48 diff2 = -(-diff0 >> 3);
49 str_x2 = __msa_fill_h(-(strength << 1));
50 temp0 = (str_x2 <= diff2);
51 diff2 = (v8i16) __msa_bmz_v((v16u8) diff2, (v16u8) temp0, (v16u8) temp0);
52 temp2 = str_x2 - diff2;
53 str = __msa_fill_h(-strength);
54 temp0 = (diff2 < str);
55 diff2 = (v8i16) __msa_bmnz_v((v16u8) diff2, (v16u8) temp2, (v16u8) temp0);
57 str_x2 = __msa_fill_h(strength << 1);
58 temp0 = (diff4 <= str_x2);
59 diff4 = (v8i16) __msa_bmz_v((v16u8) diff4, (v16u8) temp0, (v16u8) temp0);
60 temp2 = str_x2 - diff4;
61 str = __msa_fill_h(strength);
62 temp0 = (str < diff4);
63 diff4 = (v8i16) __msa_bmnz_v((v16u8) diff4, (v16u8) temp2, (v16u8) temp0);
64 temp0 = __msa_clti_s_h(diff0, 0);
65 d0 = (v8i16) __msa_bmnz_v((v16u8) diff4, (v16u8) diff2, (v16u8) temp0);
68 diff8 = (v8i16) __msa_bmnz_v((v16u8) diff4, (v16u8) diff2, (v16u8) temp0);
72 temp0 = (diff6 < temp2);
73 diff6 = (v8i16) __msa_bmnz_v((v16u8) diff6, (v16u8) temp2, (v16u8) temp0);
75 temp0 = (diff2 <= diff8);
76 diff2 = (v8i16) __msa_bmz_v((v16u8) diff2, (v16u8) diff8, (v16u8) temp0);
77 temp0 = __msa_clti_s_h(a_d0, 0);
78 diff6 = (v8i16) __msa_bmz_v((v16u8) diff6, (v16u8) diff2, (v16u8) temp0);
80 in0 = (v16u8) ((v16i8) in0 - (v16i8) diff6);
81 in1 = (v16u8) ((v16i8) in1 + (v16i8) diff6);
82 in3 = __msa_xori_b(in3, 128);
83 in3 = (v16u8) __msa_adds_s_b((v16i8) in3, (v16i8) d0);
84 in3 = __msa_xori_b(in3, 128);
85 in2 = __msa_subsus_u_b(in2, (v16i8) d0);
87 in0 = (v16u8) __msa_ilvr_h(temp1, temp0);
88 in3 = (v16u8) __msa_ilvl_h(temp1, temp0);
89 ST4x4_UB(in0, in0, 0, 1, 2, 3, src, stride);
91 ST4x4_UB(in3, in3, 0, 1, 2, 3, src, stride);
98 uint64_t res0, res1, res2, res3;
99 v16u8 in0, in1, in2, in3;
100 v8i16 temp0, temp2, diff0, diff2, diff4, diff6, diff8;
101 v8i16 d0, a_d0, str_x2, str;
104 LD_UB4(src, stride, in0, in3, in2, in1);
105 temp0 = (v8i16) __msa_ilvr_b((v16i8) in0, (v16i8) in1);
106 a_d0 = __msa_hsub_u_h((v16u8) temp0, (v16u8) temp0);
107 temp2 = (v8i16) __msa_ilvr_b((v16i8) in2, (v16i8) in3);
108 temp2 = __msa_hsub_u_h((v16u8) temp2, (v16u8) temp2);
110 diff0 = a_d0 + temp2;
111 diff2 = -(-diff0 >> 3);
112 str_x2 = __msa_fill_h(-(strength << 1));
113 temp0 = (str_x2 <= diff2);
114 diff2 = (v8i16) __msa_bmz_v((v16u8) diff2, (v16u8) temp0, (v16u8) temp0);
115 temp2 = str_x2 - diff2;
116 str = __msa_fill_h(-strength);
117 temp0 = (diff2 < str);
118 diff2 = (v8i16) __msa_bmnz_v((v16u8) diff2, (v16u8) temp2, (v16u8) temp0);
120 str_x2 = __msa_fill_h(strength << 1);
121 temp0 = (diff4 <= str_x2);
122 diff4 = (v8i16) __msa_bmz_v((v16u8) diff4, (v16u8) temp0, (v16u8) temp0);
123 temp2 = str_x2 - diff4;
124 str = __msa_fill_h(strength);
125 temp0 = (str < diff4);
126 diff4 = (v8i16) __msa_bmnz_v((v16u8) diff4, (v16u8) temp2, (v16u8) temp0);
127 temp0 = __msa_clti_s_h(diff0, 0);
128 d0 = (v8i16) __msa_bmnz_v((v16u8) diff4, (v16u8) diff2, (v16u8) temp0);
131 diff8 = (v8i16) __msa_bmnz_v((v16u8) diff4, (v16u8) diff2, (v16u8) temp0);
132 diff6 = (-a_d0) >> 2;
135 temp0 = (diff6 < temp2);
136 diff6 = (v8i16) __msa_bmnz_v((v16u8) diff6, (v16u8) temp2, (v16u8) temp0);
138 temp0 = (diff2 <= diff8);
139 diff2 = (v8i16) __msa_bmz_v((v16u8) diff2, (v16u8) diff8, (v16u8) temp0);
140 temp0 = __msa_clti_s_h(a_d0, 0);
141 diff6 = (v8i16) __msa_bmz_v((v16u8) diff6, (v16u8) diff2, (v16u8) temp0);
143 in0 = (v16u8) ((v16i8) in0 - (v16i8) diff6);
144 in1 = (v16u8) ((v16i8) in1 + (v16i8) diff6);
145 in3 = __msa_xori_b(in3, 128);
146 in3 = (v16u8) __msa_adds_s_b((v16i8) in3, (v16i8) d0);
147 in3 = __msa_xori_b(in3, 128);
148 in2 = __msa_subsus_u_b(in2, (v16i8) d0);
149 res0 = __msa_copy_u_d((v2i64) in0, 0);
150 res1 = __msa_copy_u_d((v2i64) in3, 0);
151 res2 = __msa_copy_u_d((v2i64) in2, 0);
152 res3 = __msa_copy_u_d((v2i64) in1, 0);
153 SD4(res0, res1, res2, res3, src, stride);
void ff_h263_v_loop_filter_msa(uint8_t *src, int32_t stride, int32_t q_scale)
#define ST4x4_UB(in0, in1, idx0, idx1, idx2, idx3, pdst, stride)
static void h263_v_loop_filter_msa(uint8_t *src, int32_t stride, int32_t qscale)
void ff_h263_h_loop_filter_msa(uint8_t *src, int32_t stride, int32_t q_scale)
#define TRANSPOSE8x4_UB_UB(...)
#define SD4(in0, in1, in2, in3, pdst, stride)
static void h263_h_loop_filter_msa(uint8_t *src, int32_t stride, int32_t qscale)
static const uint8_t h263_loop_filter_strength_msa[32]