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 "pxor %[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 "pxor %[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 "pxor %[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 "pxor %[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 "pxor %[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 "pxor %[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 "pxor %[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 "pxor %[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 "pxor %[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 "pxor %[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 "pxor %[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 "pxor %[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 "pxor %[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;
2601 uint8_t *
const halfHV =
temp;
2602 int16_t *
const halfV = (int16_t *) (
temp + 64);
2612 uint8_t *
const halfHV =
temp;
2613 int16_t *
const halfV = (int16_t *) (
temp + 64);
2623 uint8_t *
const halfHV =
temp;
2624 int16_t *
const halfV = (int16_t *) (
temp + 64);
2634 uint8_t *
const halfHV =
temp;
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;
2765 uint8_t *
const halfHV =
temp;
2766 int16_t *
const halfV = (int16_t *) (
temp + 64);
2776 uint8_t *
const halfHV =
temp;
2777 int16_t *
const halfV = (int16_t *) (
temp + 64);
2787 uint8_t *
const halfHV =
temp;
2788 int16_t *
const halfV = (int16_t *) (
temp + 64);
2798 uint8_t *
const halfHV =
temp;
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;
2929 uint8_t *
const halfHV =
temp;
2930 int16_t *
const halfV = (int16_t *) (
temp + 256);
2940 uint8_t *
const halfHV =
temp;
2941 int16_t *
const halfV = (int16_t *) (
temp + 256);
2951 uint8_t *
const halfHV =
temp;
2952 int16_t *
const halfV = (int16_t *) (
temp + 256);
2962 uint8_t *
const halfHV =
temp;
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;
3093 uint8_t *
const halfHV =
temp;
3094 int16_t *
const halfV = (int16_t *) (
temp + 256);
3104 uint8_t *
const halfHV =
temp;
3105 int16_t *
const halfV = (int16_t *) (
temp + 256);
3115 uint8_t *
const halfHV =
temp;
3116 int16_t *
const halfV = (int16_t *) (
temp + 256);
3126 uint8_t *
const halfHV =
temp;
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)
#define DECLARE_VAR_LOW32
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)
static uint8_t half(int a, int b)
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)
const union av_intfloat64 ff_pw_20
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)
#define DECLARE_VAR_ALL64
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)
__asm__(".macro parse_r var r\n\t" "\\var = -1\n\t" _IFC_REG(0) _IFC_REG(1) _IFC_REG(2) _IFC_REG(3) _IFC_REG(4) _IFC_REG(5) _IFC_REG(6) _IFC_REG(7) _IFC_REG(8) _IFC_REG(9) _IFC_REG(10) _IFC_REG(11) _IFC_REG(12) _IFC_REG(13) _IFC_REG(14) _IFC_REG(15) _IFC_REG(16) _IFC_REG(17) _IFC_REG(18) _IFC_REG(19) _IFC_REG(20) _IFC_REG(21) _IFC_REG(22) _IFC_REG(23) _IFC_REG(24) _IFC_REG(25) _IFC_REG(26) _IFC_REG(27) _IFC_REG(28) _IFC_REG(29) _IFC_REG(30) _IFC_REG(31) ".iflt \\var\n\t" ".error \"Unable to parse register name \\r\"\n\t" ".endif\n\t" ".endm")
void ff_put_h264_qpel4_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
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)
#define RESTRICT_ASM_LOW32
#define DECLARE_VAR_ADDRT
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)
const union av_intfloat64 ff_pw_5
#define RESTRICT_ASM_ADDRT
#define RESTRICT_ASM_ALL64
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)
const union av_intfloat64 ff_pw_16
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)