Go to the documentation of this file.
30 int dstStride,
int srcStride,
int h)
37 MMI_ULWC1(%[ftmp0], %[
src], 0x00)
38 MMI_SWC1(%[ftmp0], %[dst], 0x00)
39 "addi %[h], %[h], -0x01 \n\t"
40 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
41 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
43 : [ftmp0]
"=&f"(ftmp[0]),
44 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
47 : [dstStride]
"r"((
mips_reg)dstStride),
54 int dstStride,
int srcStride,
int h)
61 MMI_ULDC1(%[ftmp0], %[
src], 0x00)
62 MMI_SDC1(%[ftmp0], %[dst], 0x00)
63 "addi %[h], %[h], -0x01 \n\t"
64 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
65 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
67 : [ftmp0]
"=&f"(ftmp[0]),
69 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
71 : [dstStride]
"r"((
mips_reg)dstStride),
78 int dstStride,
int srcStride,
int h)
86 MMI_ULDC1(%[ftmp0], %[
src], 0x00)
87 "ldl %[tmp0], 0x0f(%[src]) \n\t"
88 "ldr %[tmp0], 0x08(%[src]) \n\t"
89 MMI_SDC1(%[ftmp0], %[dst], 0x00)
90 "sdl %[tmp0], 0x0f(%[dst]) \n\t"
91 "sdr %[tmp0], 0x08(%[dst]) \n\t"
92 "addi %[h], %[h], -0x01 \n\t"
93 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
94 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
96 : [ftmp0]
"=&f"(ftmp[0]),
99 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
101 : [dstStride]
"r"((
mips_reg)dstStride),
107 #define op2_avg(a, b) a = (((a)+CLIP(((b) + 512)>>10)+1)>>1)
108 #define op2_put(a, b) a = CLIP(((b) + 512)>>10)
110 int dstStride,
int srcStride)
117 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
118 "dli %[tmp0], 0x04 \n\t"
120 MMI_ULWC1(%[ftmp1], %[
src], -0x02)
121 MMI_ULWC1(%[ftmp2], %[
src], -0x01)
122 MMI_ULWC1(%[ftmp3], %[
src], 0x00)
123 MMI_ULWC1(%[ftmp4], %[
src], 0x01)
124 MMI_ULWC1(%[ftmp5], %[
src], 0x02)
125 MMI_ULWC1(%[ftmp6], %[
src], 0x03)
127 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
128 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
129 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
130 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
131 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
132 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
133 "paddsh %[ftmp7], %[ftmp3], %[ftmp4] \n\t"
134 "paddsh %[ftmp8], %[ftmp2], %[ftmp5] \n\t"
135 "paddsh %[ftmp9], %[ftmp1], %[ftmp6] \n\t"
136 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_20] \n\t"
137 "pmullh %[ftmp8], %[ftmp8], %[ff_pw_5] \n\t"
138 "psubsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
139 "paddsh %[ftmp9], %[ftmp7], %[ftmp9] \n\t"
140 "paddsh %[ftmp9], %[ftmp9], %[ff_pw_16] \n\t"
141 "psrah %[ftmp9], %[ftmp9], %[ff_pw_5] \n\t"
142 "packushb %[ftmp9], %[ftmp9], %[ftmp0] \n\t"
143 MMI_SWC1(%[ftmp9], %[dst], 0x00)
144 "daddi %[tmp0], %[tmp0], -0x01 \n\t"
145 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
146 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
147 "bnez %[tmp0], 1b \n\t"
148 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
149 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
150 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
151 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
152 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
155 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
156 : [dstStride]
"r"((
mips_reg)dstStride),
157 [srcStride]
"r"((
mips_reg)srcStride),
165 int dstStride,
int srcStride)
172 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
173 "dli %[tmp0], 0x08 \n\t"
175 MMI_ULDC1(%[ftmp1], %[
src], -0x02)
176 MMI_ULDC1(%[ftmp2], %[
src], -0x01)
177 MMI_ULDC1(%[ftmp3], %[
src], 0x00)
178 MMI_ULDC1(%[ftmp4], %[
src], 0x01)
179 MMI_ULDC1(%[ftmp5], %[
src], 0x02)
180 MMI_ULDC1(%[ftmp6], %[
src], 0x03)
181 "punpcklbh %[ftmp7], %[ftmp3], %[ftmp0] \n\t"
182 "punpckhbh %[ftmp8], %[ftmp3], %[ftmp0] \n\t"
183 "punpcklbh %[ftmp9], %[ftmp4], %[ftmp0] \n\t"
184 "punpckhbh %[ftmp10], %[ftmp4], %[ftmp0] \n\t"
185 "paddsh %[ftmp3], %[ftmp7], %[ftmp9] \n\t"
186 "paddsh %[ftmp4], %[ftmp8], %[ftmp10] \n\t"
187 "pmullh %[ftmp3], %[ftmp3], %[ff_pw_20] \n\t"
188 "pmullh %[ftmp4], %[ftmp4], %[ff_pw_20] \n\t"
189 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t"
190 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t"
191 "punpcklbh %[ftmp9], %[ftmp5], %[ftmp0] \n\t"
192 "punpckhbh %[ftmp10], %[ftmp5], %[ftmp0] \n\t"
193 "paddsh %[ftmp2], %[ftmp7], %[ftmp9] \n\t"
194 "paddsh %[ftmp5], %[ftmp8], %[ftmp10] \n\t"
195 "pmullh %[ftmp2], %[ftmp2], %[ff_pw_5] \n\t"
196 "pmullh %[ftmp5], %[ftmp5], %[ff_pw_5] \n\t"
197 "punpcklbh %[ftmp7], %[ftmp1], %[ftmp0] \n\t"
198 "punpckhbh %[ftmp8], %[ftmp1], %[ftmp0] \n\t"
199 "punpcklbh %[ftmp9], %[ftmp6], %[ftmp0] \n\t"
200 "punpckhbh %[ftmp10], %[ftmp6], %[ftmp0] \n\t"
201 "paddsh %[ftmp1], %[ftmp7], %[ftmp9] \n\t"
202 "paddsh %[ftmp6], %[ftmp8], %[ftmp10] \n\t"
203 "psubsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
204 "psubsh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
205 "paddsh %[ftmp3], %[ftmp3], %[ftmp1] \n\t"
206 "paddsh %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
207 "paddsh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
208 "paddsh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t"
209 "psrah %[ftmp3], %[ftmp3], %[ff_pw_5] \n\t"
210 "psrah %[ftmp4], %[ftmp4], %[ff_pw_5] \n\t"
211 "packushb %[ftmp9], %[ftmp3], %[ftmp4] \n\t"
212 MMI_SDC1(%[ftmp9], %[dst], 0x00)
213 "daddi %[tmp0], %[tmp0], -0x01 \n\t"
214 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
215 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
216 "bnez %[tmp0], 1b \n\t"
217 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
218 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
219 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
220 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
221 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
222 [ftmp10]
"=&f"(ftmp[10]),
225 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
226 : [dstStride]
"r"((
mips_reg)dstStride),
227 [srcStride]
"r"((
mips_reg)srcStride),
235 int dstStride,
int srcStride)
246 int dstStride,
int srcStride)
253 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
254 "dli %[tmp0], 0x04 \n\t"
256 MMI_ULWC1(%[ftmp1], %[
src], -0x02)
257 MMI_ULWC1(%[ftmp2], %[
src], -0x01)
258 MMI_ULWC1(%[ftmp3], %[
src], 0x00)
259 MMI_ULWC1(%[ftmp4], %[
src], 0x01)
260 MMI_ULWC1(%[ftmp5], %[
src], 0x02)
261 MMI_ULWC1(%[ftmp6], %[
src], 0x03)
262 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
263 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
264 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
265 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
266 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
267 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
268 "paddsh %[ftmp7], %[ftmp3], %[ftmp4] \n\t"
269 "paddsh %[ftmp8], %[ftmp2], %[ftmp5] \n\t"
270 "paddsh %[ftmp9], %[ftmp1], %[ftmp6] \n\t"
271 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_20] \n\t"
272 "pmullh %[ftmp8], %[ftmp8], %[ff_pw_5] \n\t"
273 "psubsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
274 "paddsh %[ftmp9], %[ftmp7], %[ftmp9] \n\t"
275 "paddsh %[ftmp9], %[ftmp9], %[ff_pw_16] \n\t"
276 "psrah %[ftmp9], %[ftmp9], %[ff_pw_5] \n\t"
277 "packushb %[ftmp9], %[ftmp9], %[ftmp0] \n\t"
278 MMI_LWC1(%[ftmp10], %[dst], 0x00)
279 "pavgb %[ftmp9], %[ftmp9], %[ftmp10] \n\t"
280 MMI_SWC1(%[ftmp9], %[dst], 0x00)
281 "daddi %[tmp0], %[tmp0], -0x01 \n\t"
282 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
283 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
284 "bnez %[tmp0], 1b \n\t"
285 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
286 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
287 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
288 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
289 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
290 [ftmp10]
"=&f"(ftmp[10]),
293 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
294 : [dstStride]
"r"((
mips_reg)dstStride),
295 [srcStride]
"r"((
mips_reg)srcStride),
303 int dstStride,
int srcStride)
310 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
311 "dli %[tmp0], 0x08 \n\t"
313 MMI_ULDC1(%[ftmp1], %[
src], -0x02)
314 MMI_ULDC1(%[ftmp2], %[
src], -0x01)
315 MMI_ULDC1(%[ftmp3], %[
src], 0x00)
316 MMI_ULDC1(%[ftmp4], %[
src], 0x01)
317 MMI_ULDC1(%[ftmp5], %[
src], 0x02)
318 MMI_ULDC1(%[ftmp6], %[
src], 0x03)
319 "punpcklbh %[ftmp7], %[ftmp3], %[ftmp0] \n\t"
320 "punpckhbh %[ftmp8], %[ftmp3], %[ftmp0] \n\t"
321 "punpcklbh %[ftmp9], %[ftmp4], %[ftmp0] \n\t"
322 "punpckhbh %[ftmp10], %[ftmp4], %[ftmp0] \n\t"
323 "paddsh %[ftmp3], %[ftmp7], %[ftmp9] \n\t"
324 "paddsh %[ftmp4], %[ftmp8], %[ftmp10] \n\t"
325 "pmullh %[ftmp3], %[ftmp3], %[ff_pw_20] \n\t"
326 "pmullh %[ftmp4], %[ftmp4], %[ff_pw_20] \n\t"
327 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t"
328 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t"
329 "punpcklbh %[ftmp9], %[ftmp5], %[ftmp0] \n\t"
330 "punpckhbh %[ftmp10], %[ftmp5], %[ftmp0] \n\t"
331 "paddsh %[ftmp2], %[ftmp7], %[ftmp9] \n\t"
332 "paddsh %[ftmp5], %[ftmp8], %[ftmp10] \n\t"
333 "pmullh %[ftmp2], %[ftmp2], %[ff_pw_5] \n\t"
334 "pmullh %[ftmp5], %[ftmp5], %[ff_pw_5] \n\t"
335 "punpcklbh %[ftmp7], %[ftmp1], %[ftmp0] \n\t"
336 "punpckhbh %[ftmp8], %[ftmp1], %[ftmp0] \n\t"
337 "punpcklbh %[ftmp9], %[ftmp6], %[ftmp0] \n\t"
338 "punpckhbh %[ftmp10], %[ftmp6], %[ftmp0] \n\t"
339 "paddsh %[ftmp1], %[ftmp7], %[ftmp9] \n\t"
340 "paddsh %[ftmp6], %[ftmp8], %[ftmp10] \n\t"
341 "psubsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
342 "psubsh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
343 "paddsh %[ftmp3], %[ftmp3], %[ftmp1] \n\t"
344 "paddsh %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
345 "paddsh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
346 "paddsh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t"
347 "psrah %[ftmp3], %[ftmp3], %[ff_pw_5] \n\t"
348 "psrah %[ftmp4], %[ftmp4], %[ff_pw_5] \n\t"
349 "packushb %[ftmp9], %[ftmp3], %[ftmp4] \n\t"
350 MMI_LDC1(%[ftmp10], %[dst], 0x00)
351 "pavgb %[ftmp9], %[ftmp9], %[ftmp10] \n\t"
352 MMI_SDC1(%[ftmp9], %[dst], 0x00)
353 "daddi %[tmp0], %[tmp0], -0x01 \n\t"
354 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
355 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
356 "bnez %[tmp0], 1b \n\t"
357 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
358 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
359 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
360 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
361 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
362 [ftmp10]
"=&f"(ftmp[10]),
365 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
366 : [dstStride]
"r"((
mips_reg)dstStride),
367 [srcStride]
"r"((
mips_reg)srcStride),
375 int dstStride,
int srcStride)
386 int dstStride,
int srcStride)
392 src -= 2 * srcStride;
396 ".set noreorder \n\t"
397 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
398 "dli %[tmp0], 0x02 \n\t"
399 MMI_LWC1(%[ftmp1], %[
src], 0x00)
400 "mtc1 %[tmp0], %[ftmp10] \n\t"
401 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
402 "dli %[tmp0], 0x05 \n\t"
403 MMI_LWC1(%[ftmp2], %[
src], 0x00)
404 "mtc1 %[tmp0], %[ftmp11] \n\t"
405 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
406 MMI_LWC1(%[ftmp3], %[
src], 0x00)
407 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
408 MMI_LWC1(%[ftmp4], %[
src], 0x00)
409 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
410 MMI_LWC1(%[ftmp5], %[
src], 0x00)
411 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
412 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
413 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
414 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
415 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
416 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
417 MMI_LWC1(%[ftmp6], %[
src], 0x00)
418 "paddh %[ftmp7], %[ftmp3], %[ftmp4] \n\t"
419 "psllh %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
420 "psubh %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
421 "psubh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
422 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
423 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_5] \n\t"
424 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
425 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
426 "paddh %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
427 "paddh %[ftmp7], %[ftmp7], %[ftmp1] \n\t"
428 "psrah %[ftmp7], %[ftmp7], %[ftmp11] \n\t"
429 "packushb %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
430 MMI_SWC1(%[ftmp7], %[dst], 0x00)
431 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
432 MMI_LWC1(%[ftmp1], %[
src], 0x00)
433 "paddh %[ftmp7], %[ftmp4], %[ftmp5] \n\t"
434 "psllh %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
435 "psubh %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
436 "psubh %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
437 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
438 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_5] \n\t"
439 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
440 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
441 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
442 "paddh %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
443 "psrah %[ftmp7], %[ftmp7], %[ftmp11] \n\t"
444 "packushb %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
445 MMI_SWC1(%[ftmp7], %[dst], 0x00)
446 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
447 MMI_LWC1(%[ftmp2], %[
src], 0x00)
448 "paddh %[ftmp7], %[ftmp5], %[ftmp6] \n\t"
449 "psllh %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
450 "psubh %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
451 "psubh %[ftmp7], %[ftmp7], %[ftmp1] \n\t"
452 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
453 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_5] \n\t"
454 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
455 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
456 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
457 "paddh %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
458 "psrah %[ftmp7], %[ftmp7], %[ftmp11] \n\t"
459 "packushb %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
460 MMI_SWC1(%[ftmp7], %[dst], 0x00)
461 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
462 MMI_LWC1(%[ftmp3], %[
src], 0x00)
463 "paddh %[ftmp7], %[ftmp6], %[ftmp1] \n\t"
464 "psllh %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
465 "psubh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
466 "psubh %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
467 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
468 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_5] \n\t"
469 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t"
470 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
471 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
472 "paddh %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
473 "psrah %[ftmp7], %[ftmp7], %[ftmp11] \n\t"
474 "packushb %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
475 MMI_SWC1(%[ftmp7], %[dst], 0x00)
476 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
478 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
479 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
480 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
481 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
482 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
483 [ftmp10]
"=&f"(ftmp[10]), [ftmp11]
"=&f"(ftmp[11]),
486 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
487 : [dstStride]
"r"((
mips_reg)dstStride),
488 [srcStride]
"r"((
mips_reg)srcStride),
495 int dstStride,
int srcStride)
503 src -= 2 * srcStride;
508 ".set noreorder \n\t"
509 "dli %[tmp0], 0x02 \n\t"
510 MMI_LWC1(%[ftmp0], %[
src], 0x00)
511 "mtc1 %[tmp0], %[ftmp8] \n\t"
512 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
513 "dli %[tmp0], 0x05 \n\t"
514 MMI_LWC1(%[ftmp1], %[
src], 0x00)
515 "mtc1 %[tmp0], %[ftmp9] \n\t"
516 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
517 MMI_LWC1(%[ftmp2], %[
src], 0x00)
518 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
519 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
520 MMI_LWC1(%[ftmp3], %[
src], 0x00)
521 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
522 MMI_LWC1(%[ftmp4], %[
src], 0x00)
523 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
524 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
525 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
526 MMI_LWC1(%[ftmp5], %[
src], 0x00)
527 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
528 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
529 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
530 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
531 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
532 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
533 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
534 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
535 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
536 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t"
537 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
538 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
539 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
540 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
541 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
542 MMI_SWC1(%[ftmp6], %[dst], 0x00)
543 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
544 MMI_LWC1(%[ftmp0], %[
src], 0x00)
545 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t"
546 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
547 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
548 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
549 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
550 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
551 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
552 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
553 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
554 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
555 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
556 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
557 MMI_SWC1(%[ftmp6], %[dst], 0x00)
558 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
559 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t"
560 MMI_LWC1(%[ftmp1], %[
src], 0x00)
561 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
562 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
563 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
564 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
565 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
566 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
567 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
568 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
569 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
570 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
571 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
572 MMI_SWC1(%[ftmp6], %[dst], 0x00)
573 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
574 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
575 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
576 MMI_LWC1(%[ftmp2], %[
src], 0x00)
577 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
578 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
579 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
580 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
581 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
582 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
583 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
584 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
585 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
586 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
587 MMI_SWC1(%[ftmp6], %[dst], 0x00)
588 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t"
589 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
590 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
591 MMI_LWC1(%[ftmp3], %[
src], 0x00)
592 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
593 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
594 "punpcklbh %[ftmp3] , %[ftmp3], %[ftmp7] \n\t"
595 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
596 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t"
597 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
598 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
599 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
600 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
601 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
602 MMI_SWC1(%[ftmp6], %[dst], 0x00)
603 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t"
604 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
605 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
606 MMI_LWC1(%[ftmp4], %[
src], 0x00)
607 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
608 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
609 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
610 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
611 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t"
612 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
613 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
614 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
615 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
616 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
617 MMI_SWC1(%[ftmp6], %[dst], 0x00)
618 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
619 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
620 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
621 MMI_LWC1(%[ftmp5], %[
src], 0x00)
622 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
623 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
624 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
625 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
626 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t"
627 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
628 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
629 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
630 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
631 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
632 MMI_SWC1(%[ftmp6], %[dst], 0x00)
633 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t"
634 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
635 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
636 MMI_LWC1(%[ftmp0], %[
src], 0x00)
637 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
638 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
639 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
640 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
641 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
642 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
643 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
644 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
645 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
646 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
647 MMI_SWC1(%[ftmp6], %[dst], 0x00)
648 "bne %[h], 0x10, 2f \n\t"
649 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
650 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t"
651 MMI_LWC1(%[ftmp1], %[
src], 0x00)
652 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
653 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
654 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
655 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
656 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
657 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
658 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
659 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
660 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
661 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
662 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
663 MMI_SWC1(%[ftmp6], %[dst], 0x00)
664 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
665 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
666 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
667 MMI_LWC1(%[ftmp2], %[
src], 0x00)
668 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
669 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
670 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
671 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
672 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
673 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
674 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
675 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
676 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
677 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
678 MMI_SWC1(%[ftmp6], %[dst], 0x00)
679 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t"
680 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
681 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
682 MMI_LWC1(%[ftmp3], %[
src], 0x00)
683 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
684 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
685 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
686 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
687 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t"
688 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
689 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
690 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
691 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
692 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
693 MMI_SWC1(%[ftmp6], %[dst], 0x00)
694 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t"
695 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
696 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
697 MMI_LWC1(%[ftmp4], %[
src], 0x00)
698 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
699 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
700 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
701 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
702 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t"
703 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
704 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
705 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
706 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
707 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
708 MMI_SWC1(%[ftmp6], %[dst], 0x00)
709 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
710 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
711 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
712 MMI_LWC1(%[ftmp5], %[
src], 0x00)
713 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
714 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
715 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
716 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
717 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t"
718 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
719 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
720 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
721 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
722 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
723 MMI_SWC1(%[ftmp6], %[dst], 0x00)
724 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t"
725 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
726 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
727 MMI_LWC1(%[ftmp0], %[
src], 0x00)
728 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
729 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
730 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
731 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
732 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
733 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
734 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
735 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
736 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
737 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
738 MMI_SWC1(%[ftmp6], %[dst], 0x00)
739 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t"
740 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
741 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
742 MMI_LWC1(%[ftmp1], %[
src], 0x00)
743 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
744 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
745 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
746 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
747 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
748 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
749 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
750 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
751 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
752 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
753 MMI_SWC1(%[ftmp6], %[dst], 0x00)
754 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
755 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
756 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
757 MMI_LWC1(%[ftmp2], %[
src], 0x00)
758 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
759 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
760 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
761 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
762 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
763 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
764 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
765 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
766 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
767 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
768 MMI_SWC1(%[ftmp6], %[dst], 0x00)
769 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
772 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
773 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
774 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
775 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
776 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
779 [
src]
"+&r"(
src), [dst]
"+&r"(dst),
781 : [dstStride]
"r"((
mips_reg)dstStride),
782 [srcStride]
"r"((
mips_reg)srcStride),
787 src += 4 - (
h + 5) * srcStride;
788 dst += 4 -
h * dstStride;
793 int dstStride,
int srcStride)
804 int dstStride,
int srcStride)
809 src -= 2 * srcStride;
813 ".set noreorder \n\t"
814 "dli %[tmp0], 0x02 \n\t"
815 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
816 "mtc1 %[tmp0], %[ftmp9] \n\t"
817 "dli %[tmp0], 0x05 \n\t"
818 MMI_LWC1(%[ftmp0], %[
src], 0x00)
819 "mtc1 %[tmp0], %[ftmp8] \n\t"
820 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
821 MMI_LWC1(%[ftmp1], %[
src], 0x00)
822 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
823 MMI_LWC1(%[ftmp2], %[
src], 0x00)
824 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
825 MMI_LWC1(%[ftmp3], %[
src], 0x00)
826 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
827 MMI_LWC1(%[ftmp4], %[
src], 0x00)
828 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
829 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
830 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
831 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
832 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
833 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
834 MMI_LWC1(%[ftmp5], %[
src], 0x00)
835 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
836 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
837 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
838 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
839 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
840 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
841 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t"
842 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
843 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
844 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
845 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
846 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
847 MMI_LWC1(%[ftmp0], %[dst], 0x00)
848 "pavgb %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
849 MMI_SWC1(%[ftmp6], %[dst], 0x00)
850 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
851 MMI_LWC1(%[ftmp0], %[
src], 0x00)
852 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t"
853 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
854 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
855 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
856 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
857 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
858 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
859 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
860 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
861 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
862 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
863 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
864 MMI_LWC1(%[ftmp1], %[dst], 0x00)
865 "pavgb %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
866 MMI_SWC1(%[ftmp6], %[dst], 0x00)
867 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
868 MMI_LWC1(%[ftmp1], %[
src], 0x00)
869 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t"
870 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
871 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
872 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
873 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
874 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
875 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
876 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
877 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
878 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
879 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
880 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
881 MMI_LWC1(%[ftmp2], %[dst], 0x00)
882 "pavgb %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
883 MMI_SWC1(%[ftmp6], %[dst], 0x00)
884 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
885 MMI_LWC1(%[ftmp2], %[
src], 0x00)
886 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
887 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
888 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
889 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
890 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
891 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
892 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
893 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
894 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
895 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
896 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
897 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
898 MMI_LWC1(%[ftmp3], %[dst], 0x00)
899 "pavgb %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
900 MMI_SWC1(%[ftmp6], %[dst], 0x00)
901 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
903 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
904 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
905 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
906 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
907 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
909 [
src]
"+&r"(
src), [dst]
"+&r"(dst)
910 : [dstStride]
"r"((
mips_reg)dstStride),
911 [srcStride]
"r"((
mips_reg)srcStride),
918 int dstStride,
int srcStride)
926 src -= 2 * srcStride;
931 ".set noreorder \n\t"
932 "dli %[tmp0], 0x02 \n\t"
933 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
934 "mtc1 %[tmp0], %[ftmp9] \n\t"
935 "dli %[tmp0], 0x05 \n\t"
936 MMI_LWC1(%[ftmp0], %[
src], 0x00)
937 "mtc1 %[tmp0], %[ftmp8] \n\t"
938 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
939 MMI_LWC1(%[ftmp1], %[
src], 0x00)
940 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
941 MMI_LWC1(%[ftmp2], %[
src], 0x00)
942 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
943 MMI_LWC1(%[ftmp3], %[
src], 0x00)
944 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
945 MMI_LWC1(%[ftmp4], %[
src], 0x00)
946 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
947 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
948 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
949 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
950 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
951 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
952 MMI_LWC1(%[ftmp5], %[
src], 0x00)
953 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
954 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
955 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
956 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
957 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
958 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
959 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t"
960 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
961 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
962 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
963 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
964 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
965 MMI_LWC1(%[ftmp0], %[dst], 0x00)
966 "pavgb %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
967 MMI_SWC1(%[ftmp6], %[dst], 0x00)
968 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
969 MMI_LWC1(%[ftmp0], %[
src], 0x00)
970 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t"
971 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
972 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
973 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
974 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
975 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
976 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
977 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
978 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
979 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
980 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
981 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
982 MMI_LWC1(%[ftmp1], %[dst], 0x00)
983 "pavgb %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
984 MMI_SWC1(%[ftmp6], %[dst], 0x00)
985 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
986 MMI_LWC1(%[ftmp1], %[
src], 0x00)
987 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t"
988 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
989 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
990 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
991 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
992 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
993 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
994 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
995 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
996 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
997 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
998 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
999 MMI_LWC1(%[ftmp2], %[dst], 0x00)
1000 "pavgb %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1001 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1002 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1003 MMI_LWC1(%[ftmp2], %[
src], 0x00)
1004 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
1005 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1006 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1007 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1008 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1009 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1010 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
1011 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1012 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
1013 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1014 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1015 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1016 MMI_LWC1(%[ftmp3], %[dst], 0x00)
1017 "pavgb %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1018 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1019 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1020 MMI_LWC1(%[ftmp3], %[
src], 0x00)
1021 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t"
1022 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1023 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1024 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1025 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
1026 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1027 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t"
1028 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1029 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
1030 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1031 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1032 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1033 MMI_LWC1(%[ftmp4], %[dst], 0x00)
1034 "pavgb %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1035 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1036 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1037 MMI_LWC1(%[ftmp4], %[
src], 0x00)
1038 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t"
1039 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1040 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1041 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1042 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
1043 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1044 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t"
1045 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1046 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
1047 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1048 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1049 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1050 MMI_LWC1(%[ftmp5], %[dst], 0x00)
1051 "pavgb %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1052 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1053 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1054 MMI_LWC1(%[ftmp5], %[
src], 0x00)
1055 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
1056 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1057 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1058 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1059 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1060 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1061 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t"
1062 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1063 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
1064 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1065 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1066 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1067 MMI_LWC1(%[ftmp0], %[dst], 0x00)
1068 "pavgb %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1069 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1070 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1071 MMI_LWC1(%[ftmp0], %[
src], 0x00)
1072 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t"
1073 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1074 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1075 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1076 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
1077 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1078 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
1079 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1080 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1081 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1082 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1083 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1084 MMI_LWC1(%[ftmp1], %[dst], 0x00)
1085 "pavgb %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1086 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1087 "bne %[h], 0x10, 2f \n\t"
1088 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1089 MMI_LWC1(%[ftmp1], %[
src], 0x00)
1090 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t"
1091 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1092 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1093 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1094 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1095 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1096 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
1097 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1098 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
1099 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1100 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1101 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1102 MMI_LWC1(%[ftmp2], %[dst], 0x00)
1103 "pavgb %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1104 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1105 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1106 MMI_LWC1(%[ftmp2], %[
src], 0x00)
1107 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
1108 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1109 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1110 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1111 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1112 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1113 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
1114 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1115 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
1116 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1117 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1118 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1119 MMI_LWC1(%[ftmp3], %[dst], 0x00)
1120 "pavgb %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1121 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1122 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1123 MMI_LWC1(%[ftmp3], %[
src], 0x00)
1124 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t"
1125 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1126 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1127 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1128 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
1129 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1130 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t"
1131 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1132 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
1133 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1134 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1135 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1136 MMI_LWC1(%[ftmp4], %[dst], 0x00)
1137 "pavgb %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1138 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1139 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1140 MMI_LWC1(%[ftmp4], %[
src], 0x00)
1141 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t"
1142 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1143 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1144 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1145 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
1146 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1147 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t"
1148 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1149 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
1150 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1151 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1152 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1153 MMI_LWC1(%[ftmp5], %[dst], 0x00)
1154 "pavgb %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1155 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1156 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1157 MMI_LWC1(%[ftmp5], %[
src], 0x00)
1158 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
1159 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1160 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1161 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1162 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1163 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1164 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t"
1165 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1166 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
1167 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1168 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1169 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1170 MMI_LWC1(%[ftmp0], %[dst], 0x00)
1171 "pavgb %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1172 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1173 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1174 MMI_LWC1(%[ftmp0], %[
src], 0x00)
1175 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t"
1176 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1177 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1178 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1179 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
1180 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1181 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
1182 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1183 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1184 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1185 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1186 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1187 MMI_LWC1(%[ftmp1], %[dst], 0x00)
1188 "pavgb %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1189 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1190 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1191 MMI_LWC1(%[ftmp1], %[
src], 0x00)
1192 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t"
1193 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1194 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1195 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1196 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1197 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1198 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
1199 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1200 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
1201 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1202 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1203 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1204 MMI_LWC1(%[ftmp2], %[dst], 0x00)
1205 "pavgb %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1206 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1207 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1208 MMI_LWC1(%[ftmp2], %[
src], 0x00)
1209 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
1210 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t"
1211 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1212 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1213 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1214 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1215 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
1216 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1217 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
1218 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1219 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1220 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1221 MMI_LWC1(%[ftmp3], %[dst], 0x00)
1222 "pavgb %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1223 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1224 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1227 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1228 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1229 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1230 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1231 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1232 [tmp0]
"=&r"(
tmp[0]),
1234 [
src]
"+&r"(
src), [dst]
"+&r"(dst),
1236 : [dstStride]
"r"((
mips_reg)dstStride),
1237 [srcStride]
"r"((
mips_reg)srcStride),
1242 src += 4 - (
h + 5) * srcStride;
1243 dst += 4 -
h * dstStride;
1248 int dstStride,
int srcStride)
1259 int dstStride,
int srcStride)
1264 int16_t *
tmp = _tmp;
1272 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1273 "dli %[tmp0], 0x09 \n\t"
1275 MMI_ULWC1(%[ftmp1], %[
src], -0x02)
1276 MMI_ULWC1(%[ftmp2], %[
src], -0x01)
1277 MMI_ULWC1(%[ftmp3], %[
src], 0x00)
1278 MMI_ULWC1(%[ftmp4], %[
src], 0x01)
1279 MMI_ULWC1(%[ftmp5], %[
src], 0x02)
1280 MMI_ULWC1(%[ftmp6], %[
src], 0x03)
1281 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1282 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
1283 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1284 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
1285 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1286 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1287 "paddsh %[ftmp7], %[ftmp3], %[ftmp4] \n\t"
1288 "paddsh %[ftmp8], %[ftmp2], %[ftmp5] \n\t"
1289 "paddsh %[ftmp9], %[ftmp1], %[ftmp6] \n\t"
1290 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_20] \n\t"
1291 "pmullh %[ftmp8], %[ftmp8], %[ff_pw_5] \n\t"
1292 "psubsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1293 "paddsh %[ftmp9], %[ftmp7], %[ftmp9] \n\t"
1294 MMI_SDC1(%[ftmp9], %[
tmp], 0x00)
1295 "daddi %[tmp0], %[tmp0], -0x01 \n\t"
1296 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1297 PTR_ADDU "%[tmp], %[tmp], %[tmpStride] \n\t"
1298 "bnez %[tmp0], 1b \n\t"
1299 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1300 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1301 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1302 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1303 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1307 : [tmpStride]
"r"(8),
1308 [srcStride]
"r"((
mips_reg)srcStride),
1315 for (
i=0;
i<4;
i++) {
1316 const int16_t tmpB=
tmp[-8];
1317 const int16_t tmpA=
tmp[-4];
1318 const int16_t tmp0=
tmp[ 0];
1319 const int16_t tmp1=
tmp[ 4];
1320 const int16_t tmp2=
tmp[ 8];
1321 const int16_t tmp3=
tmp[12];
1322 const int16_t tmp4=
tmp[16];
1323 const int16_t tmp5=
tmp[20];
1324 const int16_t tmp6=
tmp[24];
1325 op2_put(dst[0*dstStride], (tmp0+tmp1)*20 - (tmpA+tmp2)*5 + (tmpB+tmp3));
1326 op2_put(dst[1*dstStride], (tmp1+tmp2)*20 - (tmp0+tmp3)*5 + (tmpA+tmp4));
1327 op2_put(dst[2*dstStride], (tmp2+tmp3)*20 - (tmp1+tmp4)*5 + (tmp0+tmp5));
1328 op2_put(dst[3*dstStride], (tmp3+tmp4)*20 - (tmp2+tmp5)*5 + (tmp1+tmp6));
1335 const uint8_t *
src, ptrdiff_t tmpStride, ptrdiff_t srcStride,
int size)
1337 int w = (
size + 8) >> 2;
1342 src -= 2 * srcStride + 2;
1346 "dli %[tmp0], 0x02 \n\t"
1347 MMI_ULWC1(%[ftmp0], %[
src], 0x00)
1348 "mtc1 %[tmp0], %[ftmp10] \n\t"
1349 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1350 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
1351 MMI_ULWC1(%[ftmp1], %[
src], 0x00)
1352 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1353 MMI_ULWC1(%[ftmp2], %[
src], 0x00)
1354 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1355 MMI_ULWC1(%[ftmp3], %[
src], 0x00)
1356 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1357 MMI_ULWC1(%[ftmp4], %[
src], 0x00)
1358 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1359 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
1360 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1361 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1362 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
1363 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
1364 MMI_ULWC1(%[ftmp5], %[
src], 0x00)
1365 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
1366 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1367 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t"
1368 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1369 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1370 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1371 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1372 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
1373 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1374 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1375 MMI_SDC1(%[ftmp6], %[
tmp], 0x00)
1376 MMI_ULWC1(%[ftmp0], %[
src], 0x00)
1377 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t"
1378 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1379 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
1380 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1381 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1382 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
1383 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1384 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1385 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1386 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1387 MMI_SDC1(%[ftmp6], %[
tmp], 0x30)
1388 MMI_ULWC1(%[ftmp1], %[
src], 0x00)
1389 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t"
1390 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1391 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
1392 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1393 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1394 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1395 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1396 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
1397 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1398 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1399 MMI_SDC1(%[ftmp6], %[
tmp], 0x60)
1400 MMI_ULWC1(%[ftmp2], %[
src], 0x00)
1401 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
1402 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1403 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
1404 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1405 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1406 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1407 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1408 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
1409 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1410 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1411 MMI_SDC1(%[ftmp6], %[
tmp], 0x90)
1412 MMI_ULWC1(%[ftmp3], %[
src], 0x00)
1413 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t"
1414 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1415 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t"
1416 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1417 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1418 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
1419 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1420 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
1421 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1422 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1423 MMI_SDC1(%[ftmp6], %[
tmp], 0xc0)
1424 MMI_ULWC1(%[ftmp4], %[
src], 0x00)
1425 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t"
1426 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1427 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t"
1428 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1429 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1430 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
1431 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1432 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
1433 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1434 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1435 MMI_SDC1(%[ftmp6], %[
tmp], 0xf0)
1436 MMI_ULWC1(%[ftmp5], %[
src], 0x00)
1437 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
1438 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1439 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t"
1440 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1441 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1442 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1443 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1444 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
1445 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1446 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1447 MMI_SDC1(%[ftmp6], %[
tmp], 0x120)
1448 MMI_ULWC1(%[ftmp0], %[
src], 0x00)
1449 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t"
1450 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1451 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
1452 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1453 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1454 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
1455 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1456 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1457 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1458 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1459 MMI_SDC1(%[ftmp6], %[
tmp], 0x150)
1460 "bne %[size], 0x10, 2f \n\t"
1462 MMI_ULWC1(%[ftmp1], %[
src], 0x00)
1463 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t"
1464 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1465 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
1466 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1467 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1468 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1469 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1470 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
1471 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1472 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1473 MMI_SDC1(%[ftmp6], %[
tmp], 0x180)
1474 MMI_ULWC1(%[ftmp2], %[
src], 0x00)
1475 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
1476 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1477 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
1478 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1479 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1480 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1481 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1482 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
1483 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1484 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1485 MMI_SDC1(%[ftmp6], %[
tmp], 0x1b0)
1486 MMI_ULWC1(%[ftmp3], %[
src], 0x00)
1487 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t"
1488 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1489 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t"
1490 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1491 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1492 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
1493 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1494 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
1495 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1496 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1497 MMI_SDC1(%[ftmp6], %[
tmp], 0x1e0)
1498 MMI_ULWC1(%[ftmp4], %[
src], 0x00)
1499 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t"
1500 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1501 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t"
1502 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1503 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1504 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
1505 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1506 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
1507 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1508 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1509 MMI_SDC1(%[ftmp6], %[
tmp], 0x210)
1510 MMI_ULWC1(%[ftmp5], %[
src], 0x00)
1511 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
1512 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1513 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t"
1514 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1515 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1516 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1517 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1518 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
1519 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1520 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1521 MMI_SDC1(%[ftmp6], %[
tmp], 0x240)
1522 MMI_ULWC1(%[ftmp0], %[
src], 0x00)
1523 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t"
1524 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1525 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t"
1526 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1527 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1528 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
1529 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1530 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1531 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1532 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1533 MMI_SDC1(%[ftmp6], %[
tmp], 0x270)
1534 MMI_ULWC1(%[ftmp1], %[
src], 0x00)
1535 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t"
1536 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1537 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
1538 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1539 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1540 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1541 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1542 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
1543 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1544 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1545 MMI_SDC1(%[ftmp6], %[
tmp], 0x2a0)
1546 MMI_ULWC1(%[ftmp2], %[
src], 0x00)
1547 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
1548 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
1549 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
1550 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1551 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1552 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1553 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t"
1554 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
1555 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1556 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1557 MMI_SDC1(%[ftmp6], %[
tmp], 0x2d0)
1559 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1560 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1561 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1562 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1563 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1564 [ftmp10]
"=&f"(ftmp[10]),
1569 [srcStride]
"r"((
mips_reg)srcStride),
1575 src += 4 - (
size + 5) * srcStride;
1580 int16_t *
tmp, ptrdiff_t dstStride, ptrdiff_t tmpStride,
int size)
1591 "dli %[tmp0], 0x02 \n\t"
1592 "mtc1 %[tmp0], %[ftmp8] \n\t"
1593 "dli %[tmp0], 0x06 \n\t"
1594 "mtc1 %[tmp0], %[ftmp9] \n\t"
1596 MMI_LDC1(%[ftmp0], %[
tmp], 0x00)
1597 MMI_LDC1(%[ftmp3], %[
tmp], 0x08)
1598 MMI_LDC1(%[ftmp6], %[
tmp], 0x10)
1599 MMI_ULDC1(%[ftmp1], %[
tmp], 0x02)
1600 MMI_ULDC1(%[ftmp4], %[
tmp], 0x0a)
1601 MMI_ULDC1(%[ftmp5], %[
tmp], 0x12)
1602 "paddh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
1603 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1604 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
1605 "paddh %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
1606 MMI_ULDC1(%[ftmp2], %[
tmp], 0x04)
1607 MMI_ULDC1(%[ftmp6], %[
tmp], 0x06)
1608 MMI_ULDC1(%[ftmp5], %[
tmp], 0x0c)
1609 MMI_ULDC1(%[ftmp7], %[
tmp], 0x0e)
1610 "paddh %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
1611 "paddh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1612 "psubh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
1613 "psubh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
1614 "psrah %[ftmp0], %[ftmp0], %[ftmp8] \n\t"
1615 "psrah %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
1616 "psubh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
1617 "psubh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
1618 "paddsh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
1619 "paddsh %[ftmp3] , %[ftmp3], %[ftmp5] \n\t"
1620 "psrah %[ftmp0], %[ftmp0], %[ftmp8] \n\t"
1621 "psrah %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
1622 "paddh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
1623 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
1624 "psrah %[ftmp0], %[ftmp0], %[ftmp9] \n\t"
1625 "psrah %[ftmp3], %[ftmp3], %[ftmp9] \n\t"
1626 "packushb %[ftmp0], %[ftmp0], %[ftmp3] \n\t"
1627 "addi %[h], %[h], -0x01 \n\t"
1628 MMI_SDC1(%[ftmp0], %[dst], 0x00)
1630 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1631 "bnez %[h], 1b \n\t"
1632 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1633 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1634 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1635 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1636 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1639 [
tmp]
"+&r"(
tmp), [dst]
"+&r"(dst),
1641 : [dstStride]
"r"((
mips_reg)dstStride)
1646 dst += 8 -
size * dstStride;
1651 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1652 ptrdiff_t srcStride,
int size)
1659 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1660 ptrdiff_t srcStride)
1667 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1668 ptrdiff_t srcStride)
1675 const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
1684 "dli %[tmp0], 0x02 \n\t"
1685 "mtc1 %[tmp0], %[ftmp7] \n\t"
1686 "dli %[tmp0], 0x05 \n\t"
1687 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1688 "mtc1 %[tmp0], %[ftmp8] \n\t"
1690 MMI_ULDC1(%[ftmp1], %[
src], 0x00)
1691 MMI_ULDC1(%[ftmp3], %[
src], 0x01)
1692 "punpckhbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t"
1693 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1694 "punpckhbh %[ftmp4], %[ftmp3], %[ftmp0] \n\t"
1695 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1696 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
1697 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1698 "psllh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1699 "psllh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1700 MMI_ULDC1(%[ftmp3], %[
src], -0x01)
1701 MMI_ULDC1(%[ftmp5], %[
src], 0x02)
1702 "punpckhbh %[ftmp4], %[ftmp3], %[ftmp0] \n\t"
1703 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1704 "punpckhbh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
1705 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1706 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1707 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
1708 "psubh %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
1709 "psubh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1710 "pmullh %[ftmp2], %[ftmp2], %[ff_pw_5] \n\t"
1711 "pmullh %[ftmp1], %[ftmp1], %[ff_pw_5] \n\t"
1712 MMI_ULWC1(%[ftmp3], %[
src], -0x02)
1713 MMI_ULWC1(%[ftmp6], %[
src], 0x07)
1714 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1715 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1716 "paddh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
1717 "paddh %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1718 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t"
1719 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t"
1720 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1721 "paddh %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
1722 "psrah %[ftmp1], %[ftmp1], %[ftmp8] \n\t"
1723 "psrah %[ftmp2], %[ftmp2], %[ftmp8] \n\t"
1724 MMI_LDC1(%[ftmp5], %[src2], 0x00)
1725 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
1726 PTR_ADDU "%[src], %[src], %[dstStride] \n\t"
1727 "pavgb %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
1729 MMI_SDC1(%[ftmp1], %[dst], 0x00)
1730 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1731 PTR_ADDU "%[src2], %[src2], %[src2Stride] \n\t"
1732 "bgtz %[h], 1b \n\t"
1733 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1734 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1735 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1736 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1737 [ftmp8]
"=&f"(ftmp[8]),
1738 [tmp0]
"=&r"(
tmp[0]),
1741 [
src]
"+&r"(
src), [dst]
"+&r"(dst),
1742 [src2]
"+&r"(src2), [
h]
"+&r"(
h)
1743 : [src2Stride]
"r"((
mips_reg)src2Stride),
1744 [dstStride]
"r"((
mips_reg)dstStride),
1751 const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride,
int h)
1760 "dli %[tmp0], 0x05 \n\t"
1761 MMI_ULDC1(%[ftmp0], %[src16], 0x00)
1762 "mtc1 %[tmp0], %[ftmp6] \n\t"
1763 MMI_ULDC1(%[ftmp1], %[src16], 0x08)
1764 MMI_ULDC1(%[ftmp2], %[src16], 0x30)
1765 MMI_ULDC1(%[ftmp3], %[src16], 0x38)
1766 "psrah %[ftmp0], %[ftmp0], %[ftmp6] \n\t"
1767 "psrah %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
1768 "psrah %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
1769 "psrah %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
1770 "packushb %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
1771 "packushb %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
1772 MMI_LDC1(%[ftmp5], %[src8], 0x00)
1773 MMI_LDXC1(%[ftmp4], %[src8], %[src8Stride], 0x00)
1774 "pavgb %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
1775 "pavgb %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
1776 MMI_SDC1(%[ftmp0], %[dst], 0x00)
1777 MMI_SDXC1(%[ftmp2], %[dst], %[dstStride], 0x00)
1778 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1779 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1780 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1781 [ftmp6]
"=&f"(ftmp[6]),
1785 : [src8]
"r"(src8), [src16]
"r"(src16),
1787 [src8Stride]
"r"((
mips_reg)src8Stride),
1788 [dstStride]
"r"((
mips_reg)dstStride)
1792 src8 += 2 * src8Stride;
1794 dst += 2 * dstStride;
1799 const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
1805 src += 8 * dstStride;
1806 dst += 8 * dstStride;
1807 src2 += 8 * src2Stride;
1815 const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride,
int h)
1823 int dstStride,
int srcStride)
1828 int16_t *
tmp = _tmp;
1836 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1837 "dli %[tmp0], 0x09 \n\t"
1839 MMI_ULWC1(%[ftmp1], %[
src], -0x02)
1840 MMI_ULWC1(%[ftmp2], %[
src], -0x01)
1841 MMI_ULWC1(%[ftmp3], %[
src], 0x00)
1842 MMI_ULWC1(%[ftmp4], %[
src], 0x01)
1843 MMI_ULWC1(%[ftmp5], %[
src], 0x02)
1844 MMI_ULWC1(%[ftmp6], %[
src], 0x03)
1845 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1846 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
1847 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1848 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
1849 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1850 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1851 "paddsh %[ftmp7], %[ftmp3], %[ftmp4] \n\t"
1852 "paddsh %[ftmp8], %[ftmp2], %[ftmp5] \n\t"
1853 "paddsh %[ftmp9], %[ftmp1], %[ftmp6] \n\t"
1854 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_20] \n\t"
1855 "pmullh %[ftmp8], %[ftmp8], %[ff_pw_5] \n\t"
1856 "psubsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1857 "paddsh %[ftmp9], %[ftmp7], %[ftmp9] \n\t"
1858 MMI_SDC1(%[ftmp9], %[
tmp], 0x00)
1859 "daddi %[tmp0], %[tmp0], -0x01 \n\t"
1860 PTR_ADDU "%[src], %[src], %[srcStride] \n\t"
1861 PTR_ADDU "%[tmp], %[tmp], %[tmpStride] \n\t"
1862 "bnez %[tmp0], 1b \n\t"
1863 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1864 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1865 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1866 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1867 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1871 : [tmpStride]
"r"(8),
1872 [srcStride]
"r"((
mips_reg)srcStride),
1879 for (
i=0;
i<4;
i++) {
1880 const int16_t tmpB=
tmp[-8];
1881 const int16_t tmpA=
tmp[-4];
1882 const int16_t tmp0=
tmp[ 0];
1883 const int16_t tmp1=
tmp[ 4];
1884 const int16_t tmp2=
tmp[ 8];
1885 const int16_t tmp3=
tmp[12];
1886 const int16_t tmp4=
tmp[16];
1887 const int16_t tmp5=
tmp[20];
1888 const int16_t tmp6=
tmp[24];
1889 op2_avg(dst[0*dstStride], (tmp0+tmp1)*20 - (tmpA+tmp2)*5 + (tmpB+tmp3));
1890 op2_avg(dst[1*dstStride], (tmp1+tmp2)*20 - (tmp0+tmp3)*5 + (tmpA+tmp4));
1891 op2_avg(dst[2*dstStride], (tmp2+tmp3)*20 - (tmp1+tmp4)*5 + (tmp0+tmp5));
1892 op2_avg(dst[3*dstStride], (tmp3+tmp4)*20 - (tmp2+tmp5)*5 + (tmp1+tmp6));
1899 int16_t *
tmp, ptrdiff_t dstStride, ptrdiff_t tmpStride,
int size)
1909 "dli %[tmp0], 0x02 \n\t"
1910 "mtc1 %[tmp0], %[ftmp9] \n\t"
1911 "dli %[tmp0], 0x06 \n\t"
1912 "mtc1 %[tmp0], %[ftmp10] \n\t"
1914 MMI_LDC1(%[ftmp0], %[
tmp], 0x00)
1915 MMI_LDC1(%[ftmp3], %[
tmp], 0x08)
1916 MMI_ULDC1(%[ftmp1], %[
tmp], 0x02)
1917 MMI_ULDC1(%[ftmp4], %[
tmp], 0x0a)
1918 MMI_LDC1(%[ftmp7], %[
tmp], 0x10)
1919 MMI_ULDC1(%[ftmp8], %[
tmp], 0x12)
1920 "paddh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
1921 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1922 "paddh %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
1923 "paddh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
1924 MMI_ULDC1(%[ftmp2], %[
tmp], 0x04)
1925 MMI_ULDC1(%[ftmp5], %[
tmp], 0x0c)
1926 MMI_ULDC1(%[ftmp7], %[
tmp], 0x06)
1927 MMI_ULDC1(%[ftmp8], %[
tmp], 0x0e)
1928 "paddh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1929 "paddh %[ftmp5], %[ftmp5], %[ftmp8] \n\t"
1930 "psubh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
1931 "psubh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
1932 "psrah %[ftmp0], %[ftmp0], %[ftmp9] \n\t"
1933 "psrah %[ftmp3], %[ftmp3], %[ftmp9] \n\t"
1934 "psubh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
1935 "psubh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
1936 "paddsh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
1937 "paddsh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
1938 "psrah %[ftmp0], %[ftmp0], %[ftmp9] \n\t"
1939 "psrah %[ftmp3], %[ftmp3], %[ftmp9] \n\t"
1940 "paddh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
1941 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
1942 "psrah %[ftmp0], %[ftmp0], %[ftmp10] \n\t"
1943 "psrah %[ftmp3], %[ftmp3], %[ftmp10] \n\t"
1944 "packushb %[ftmp0], %[ftmp0], %[ftmp3] \n\t"
1945 MMI_LDC1(%[ftmp6], %[dst], 0x00)
1946 "pavgb %[ftmp0], %[ftmp0], %[ftmp6] \n\t"
1947 MMI_SDC1(%[ftmp0], %[dst], 0x00)
1948 "addi %[h], %[h], -0x01 \n\t"
1949 PTR_ADDI "%[tmp], %[tmp], 0x30 \n\t"
1950 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
1951 "bnez %[h], 1b \n\t"
1952 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1953 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1954 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1955 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1956 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1957 [ftmp10]
"=&f"(ftmp[10]),
1960 [
tmp]
"+&r"(
tmp), [dst]
"+&r"(dst),
1962 : [dstStride]
"r"((
mips_reg)dstStride)
1967 dst += 8 -
size * dstStride;
1972 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1973 ptrdiff_t srcStride,
int size)
1980 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1981 ptrdiff_t srcStride)
1988 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1989 ptrdiff_t srcStride)
1996 const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
2004 "dli %[tmp1], 0x02 \n\t"
2005 "ori %[tmp0], $0, 0x8 \n\t"
2006 "mtc1 %[tmp1], %[ftmp7] \n\t"
2007 "dli %[tmp1], 0x05 \n\t"
2008 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
2009 "mtc1 %[tmp1], %[ftmp8] \n\t"
2011 MMI_ULDC1(%[ftmp1], %[
src], 0x00)
2012 MMI_ULDC1(%[ftmp2], %[
src], 0x01)
2013 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t"
2014 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
2015 "punpckhbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t"
2016 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
2017 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
2018 "paddh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
2019 "psllh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
2020 "psllh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
2021 MMI_ULDC1(%[ftmp2], %[
src], -0x01)
2022 MMI_ULDC1(%[ftmp5], %[
src], 0x02)
2023 "punpckhbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t"
2024 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
2025 "punpckhbh %[ftmp6], %[ftmp5], %[ftmp0] \n\t"
2026 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
2027 "paddh %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
2028 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
2029 "psubh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
2030 "psubh %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
2031 "pmullh %[ftmp1], %[ftmp1], %[ff_pw_5] \n\t"
2032 "pmullh %[ftmp3], %[ftmp3], %[ff_pw_5] \n\t"
2033 MMI_ULWC1(%[ftmp2], %[
src], -0x02)
2034 MMI_ULWC1(%[ftmp6], %[
src], 0x07)
2035 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
2036 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
2037 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
2038 "paddh %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
2039 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t"
2040 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t"
2041 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
2042 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
2043 "psrah %[ftmp1], %[ftmp1], %[ftmp8] \n\t"
2044 "psrah %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
2045 MMI_LDC1(%[ftmp5], %[src2], 0x00)
2046 "packushb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
2047 MMI_LDC1(%[ftmp9], %[dst], 0x00)
2048 "pavgb %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
2049 "pavgb %[ftmp1], %[ftmp1], %[ftmp9] \n\t"
2050 PTR_ADDU "%[src], %[src], %[dstStride] \n\t"
2051 MMI_SDC1(%[ftmp1], %[dst], 0x00)
2052 "daddi %[tmp0], %[tmp0], -0x01 \n\t"
2053 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t"
2054 PTR_ADDU "%[src2], %[src2], %[src2Stride] \n\t"
2055 "bgtz %[tmp0], 1b \n\t"
2056 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2057 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2058 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2059 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2060 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
2061 [tmp0]
"=&r"(
tmp[0]), [tmp1]
"=&r"(
tmp[1]),
2064 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
2066 : [dstStride]
"r"((
mips_reg)dstStride),
2067 [src2Stride]
"r"((
mips_reg)src2Stride),
2074 const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
2080 src += 8 * dstStride;
2081 dst += 8 * dstStride;
2082 src2 += 8 * src2Stride;
2090 const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride,
int b)
2099 "dli %[tmp0], 0x05 \n\t"
2100 MMI_ULDC1(%[ftmp0], %[src16], 0x00)
2101 "mtc1 %[tmp0], %[ftmp6] \n\t"
2102 MMI_ULDC1(%[ftmp1], %[src16], 0x08)
2103 MMI_ULDC1(%[ftmp2], %[src16], 0x30)
2104 MMI_ULDC1(%[ftmp3], %[src16], 0x38)
2105 "psrah %[ftmp0], %[ftmp0], %[ftmp6] \n\t"
2106 "psrah %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
2107 "psrah %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
2108 "psrah %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
2109 "packushb %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2110 MMI_LDC1(%[ftmp4], %[src8], 0x00)
2111 MMI_LDXC1(%[ftmp5], %[src8], %[src8Stride], 0x00)
2112 "packushb %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2113 "pavgb %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
2114 "pavgb %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
2115 MMI_LDC1(%[ftmp7], %[dst], 0x00)
2116 "pavgb %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
2117 MMI_SDC1(%[ftmp0], %[dst], 0x00)
2118 MMI_LDXC1(%[ftmp7], %[dst], %[dstStride], 0x00)
2119 "pavgb %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
2120 MMI_SDXC1(%[ftmp2], %[dst], %[dstStride], 0x00)
2121 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2122 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2123 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2124 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2128 : [src8]
"r"(src8), [src16]
"r"(src16),
2130 [src8Stride]
"r"((
mips_reg)src8Stride),
2131 [dstStride]
"r"((
mips_reg)dstStride)
2135 src8 += 2 * src8Stride;
2137 dst += 2 * dstStride;
2142 const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride,
int b)
2182 uint8_t *
const full_mid= full + 8;
2193 uint8_t *
const full_mid= full + 8;
2202 uint8_t *
const full_mid= full + 8;
2213 uint8_t *
const full_mid= full + 8;
2226 uint8_t *
const full_mid= full + 8;
2239 uint8_t *
const full_mid= full + 8;
2252 uint8_t *
const full_mid= full + 8;
2291 uint8_t *
const full_mid= full + 8;
2304 uint8_t *
const full_mid= full + 8;
2346 uint8_t *
const full_mid= full + 8;
2357 uint8_t *
const full_mid= full + 8;
2366 uint8_t *
const full_mid= full + 8;
2377 uint8_t *
const full_mid= full + 8;
2390 uint8_t *
const full_mid= full + 8;
2403 uint8_t *
const full_mid= full + 8;
2416 uint8_t *
const full_mid= full + 8;
2455 uint8_t *
const full_mid= full + 8;
2468 uint8_t *
const full_mid= full + 8;
2510 uint8_t *
const full_mid= full + 16;
2521 uint8_t *
const full_mid= full + 16;
2530 uint8_t *
const full_mid= full + 16;
2541 uint8_t *
const full_mid= full + 16;
2554 uint8_t *
const full_mid= full + 16;
2567 uint8_t *
const full_mid= full + 16;
2580 uint8_t *
const full_mid= full + 16;
2602 int16_t *
const halfV = (int16_t *) (
temp + 64);
2613 int16_t *
const halfV = (int16_t *) (
temp + 64);
2624 int16_t *
const halfV = (int16_t *) (
temp + 64);
2635 int16_t *
const halfV = (int16_t *) (
temp + 64);
2674 uint8_t *
const full_mid= full + 16;
2685 uint8_t *
const full_mid= full + 16;
2694 uint8_t *
const full_mid= full + 16;
2705 uint8_t *
const full_mid= full + 16;
2718 uint8_t *
const full_mid= full + 16;
2731 uint8_t *
const full_mid= full + 16;
2744 uint8_t *
const full_mid= full + 16;
2766 int16_t *
const halfV = (int16_t *) (
temp + 64);
2777 int16_t *
const halfV = (int16_t *) (
temp + 64);
2788 int16_t *
const halfV = (int16_t *) (
temp + 64);
2799 int16_t *
const halfV = (int16_t *) (
temp + 64);
2838 uint8_t *
const full_mid= full + 32;
2849 uint8_t *
const full_mid= full + 32;
2858 uint8_t *
const full_mid= full + 32;
2869 uint8_t *
const full_mid= full + 32;
2882 uint8_t *
const full_mid= full + 32;
2895 uint8_t *
const full_mid= full + 32;
2908 uint8_t *
const full_mid= full + 32;
2930 int16_t *
const halfV = (int16_t *) (
temp + 256);
2941 int16_t *
const halfV = (int16_t *) (
temp + 256);
2952 int16_t *
const halfV = (int16_t *) (
temp + 256);
2963 int16_t *
const halfV = (int16_t *) (
temp + 256);
3002 uint8_t *
const full_mid= full + 32;
3013 uint8_t *
const full_mid= full + 32;
3022 uint8_t *
const full_mid= full + 32;
3033 uint8_t *
const full_mid= full + 32;
3046 uint8_t *
const full_mid= full + 32;
3059 uint8_t *
const full_mid= full + 32;
3072 uint8_t *
const full_mid= full + 32;
3094 int16_t *
const halfV = (int16_t *) (
temp + 256);
3105 int16_t *
const halfV = (int16_t *) (
temp + 256);
3116 int16_t *
const halfV = (int16_t *) (
temp + 256);
3127 int16_t *
const halfV = (int16_t *) (
temp + 256);
void ff_put_h264_qpel8_mc13_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc03_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc23_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc22_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc02_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_pixels4_l2_8_mmi(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h)
static void put_h264_qpel4_v_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
static void avg_h264_qpel16_hv_lowpass_mmi(uint8_t *dst, int16_t *tmp, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t tmpStride, ptrdiff_t srcStride)
void ff_avg_h264_qpel8_mc11_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc10_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel8or16_hv1_lowpass_mmi(int16_t *tmp, const uint8_t *src, ptrdiff_t tmpStride, ptrdiff_t srcStride, int size)
void ff_avg_h264_qpel8_mc30_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc11_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc33_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel8_h_lowpass_l2_mmi(uint8_t *dst, const uint8_t *src, const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
void ff_put_h264_qpel4_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc23_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_h264_qpel8_h_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_put_h264_qpel8_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_h264_qpel8or16_hv_lowpass_mmi(uint8_t *dst, int16_t *tmp, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t tmpStride, ptrdiff_t srcStride, int size)
void ff_put_h264_qpel16_mc12_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc11_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc13_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc02_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_pixels8_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int32_t h)
void ff_avg_h264_qpel4_mc10_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_h264_qpel16_h_lowpass_l2_mmi(uint8_t *dst, const uint8_t *src, const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
static void put_h264_qpel8_hv_lowpass_mmi(uint8_t *dst, int16_t *tmp, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t tmpStride, ptrdiff_t srcStride)
void ff_put_h264_qpel8_mc33_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_pixels4_l2_8_mmi(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h)
void ff_put_h264_qpel4_mc02_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc12_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc21_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc33_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel4_h_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
static void avg_h264_qpel16_h_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_h264_qpel4_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static int aligned(int val)
void ff_put_pixels8_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int32_t h)
void ff_avg_h264_qpel16_mc10_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_h264_qpel8_h_lowpass_l2_mmi(uint8_t *dst, const uint8_t *src, const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
void ff_avg_h264_qpel4_mc12_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc23_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel8or16_hv2_lowpass_mmi(uint8_t *dst, int16_t *tmp, ptrdiff_t dstStride, ptrdiff_t tmpStride, int size)
void ff_avg_h264_qpel4_mc23_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel8or16_hv_lowpass_mmi(uint8_t *dst, int16_t *tmp, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t tmpStride, ptrdiff_t srcStride, int size)
void ff_put_h264_qpel4_mc30_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc12_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc11_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_h264_qpel8_v_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
static void put_h264_qpel4_hv_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_h264_qpel8_mc13_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc30_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel16_hv_lowpass_mmi(uint8_t *dst, int16_t *tmp, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t tmpStride, ptrdiff_t srcStride)
static void avg_h264_qpel8or16_hv2_lowpass_mmi(uint8_t *dst, int16_t *tmp, ptrdiff_t dstStride, ptrdiff_t tmpStride, int size)
void ff_avg_h264_qpel16_mc03_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void copy_block16_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
static void put_h264_qpel16_h_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_put_h264_qpel8_mc12_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel16_v_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_h264_qpel8_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc12_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc11_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_pixels16_l2_8_mmi(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h)
void ff_put_h264_qpel8_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_pixels8_l2_shift5_mmi(uint8_t *dst, int16_t *src16, const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride, int b)
static void avg_h264_qpel16_v_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_h264_qpel16_mc13_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_h264_qpel4_h_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_put_h264_qpel4_mc10_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc03_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc03_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc11_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_pixels8_l2_shift5_mmi(uint8_t *dst, int16_t *src16, const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride, int h)
static void put_h264_qpel8_v_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_h264_qpel16_mc22_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_h264_qpel8_hv_lowpass_mmi(uint8_t *dst, int16_t *tmp, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t tmpStride, ptrdiff_t srcStride)
void ff_avg_h264_qpel16_mc33_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc02_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc10_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
#define i(width, name, range_min, range_max)
static void avg_pixels16_l2_shift5_mmi(uint8_t *dst, int16_t *src16, const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride, int b)
void ff_avg_h264_qpel16_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc33_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_pixels16_l2_shift5_mmi(uint8_t *dst, int16_t *src16, const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride, int h)
static void avg_h264_qpel4_v_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_h264_qpel4_mc22_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel8_h_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
static void copy_block8_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
void ff_put_h264_qpel8_mc22_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_pixels8_l2_8_mmi(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h)
void ff_avg_h264_qpel16_mc02_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void copy_block4_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
static void avg_h264_qpel4_hv_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_pixels16_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int32_t h)
void ff_put_h264_qpel4_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
FFmpeg Automated Testing Environment ************************************Introduction Using FATE from your FFmpeg source directory Submitting the results to the FFmpeg result aggregation server Uploading new samples to the fate suite FATE makefile targets and variables Makefile targets Makefile variables Examples Introduction **************FATE is an extended regression suite on the client side and a means for results aggregation and presentation on the server side The first part of this document explains how you can use FATE from your FFmpeg source directory to test your ffmpeg binary The second part describes how you can run FATE to submit the results to FFmpeg’s FATE server In any way you can have a look at the publicly viewable FATE results by visiting this as it can be seen if some test on some platform broke with their recent contribution This usually happens on the platforms the developers could not test on The second part of this document describes how you can run FATE to submit your results to FFmpeg’s FATE server If you want to submit your results be sure to check that your combination of OS and compiler is not already listed on the above mentioned website In the third part you can find a comprehensive listing of FATE makefile targets and variables Using FATE from your FFmpeg source directory **********************************************If you want to run FATE on your machine you need to have the samples in place You can get the samples via the build target fate rsync Use this command from the top level source this will cause FATE to fail NOTE To use a custom wrapper to run the pass ‘ target exec’ to ‘configure’ or set the TARGET_EXEC Make variable Submitting the results to the FFmpeg result aggregation server ****************************************************************To submit your results to the server you should run fate through the shell script ‘tests fate sh’ from the FFmpeg sources This script needs to be invoked with a configuration file as its first argument tests fate sh path to fate_config A configuration file template with comments describing the individual configuration variables can be found at ‘doc fate_config sh template’ Create a configuration that suits your based on the configuration template The ‘slot’ configuration variable can be any string that is not yet but it is suggested that you name it adhering to the following pattern ‘ARCH OS COMPILER COMPILER VERSION’ The configuration file itself will be sourced in a shell therefore all shell features may be used This enables you to setup the environment as you need it for your build For your first test runs the ‘fate_recv’ variable should be empty or commented out This will run everything as normal except that it will omit the submission of the results to the server The following files should be present in $workdir as specified in the configuration it may help to try out the ‘ssh’ command with one or more ‘ v’ options You should get detailed output concerning your SSH configuration and the authentication process The only thing left is to automate the execution of the fate sh script and the synchronisation of the samples directory Uploading new samples to the fate suite *****************************************If you need a sample uploaded send a mail to samples request This is for developers who have an account on the fate suite server If you upload new please make sure they are as small as space on each network bandwidth and so on benefit from smaller test cases Also keep in mind older checkouts use existing sample that means in practice generally do not remove or overwrite files as it likely would break older checkouts or releases Also all needed samples for a commit should be ideally before the push If you need an account for frequently uploading samples or you wish to help others by doing that send a mail to ffmpeg devel rsync vauL Duo ug o o w
static void put_h264_qpel16_h_lowpass_l2_mmi(uint8_t *dst, const uint8_t *src, const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
void ff_put_h264_qpel4_mc22_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc21_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc30_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_pixels4_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int32_t h)
void ff_avg_h264_qpel8_mc21_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc13_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc21_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc03_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc30_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc03_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc23_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc10_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc30_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc33_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc21_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc21_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_pixels16_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int32_t h)
void ff_put_h264_qpel16_mc22_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc13_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc23_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc02_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_pixels16_l2_8_mmi(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h)
void ff_avg_pixels4_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int32_t h)
void ff_avg_h264_qpel8_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_pixels8_l2_8_mmi(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h)