30 ptrdiff_t line_size,
int h)
38 PTR_ADDU "%[addr1], %[line_size], %[line_size] \n\t"
40 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
41 MMI_ULWC1(%[ftmp0], %[pixels], 0x00)
42 MMI_ULWC1(%[ftmp1], %[addr0], 0x00)
43 MMI_SWC1(%[ftmp0], %[block], 0x00)
44 MMI_SWXC1(%[ftmp1], %[block], %[line_size], 0x00)
45 PTR_ADDU "%[pixels], %[pixels], %[addr1] \n\t"
46 PTR_ADDU "%[block], %[block], %[addr1] \n\t"
48 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
49 MMI_ULWC1(%[ftmp0], %[pixels], 0x00)
50 MMI_ULWC1(%[ftmp1], %[addr0], 0x00)
51 MMI_SWC1(%[ftmp0], %[block], 0x00)
52 MMI_SWXC1(%[ftmp1], %[block], %[line_size], 0x00)
53 PTR_ADDU "%[pixels], %[pixels], %[addr1] \n\t"
54 PTR_ADDU "%[block], %[block], %[addr1] \n\t"
58 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
61 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
64 : [line_size]
"r"((
mips_reg)line_size)
70 ptrdiff_t line_size,
int h)
77 PTR_ADDU "%[addr1], %[line_size], %[line_size] \n\t"
79 MMI_ULDC1(%[ftmp0], %[pixels], 0x00)
80 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
81 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
82 MMI_SDC1(%[ftmp0], %[block], 0x00)
83 PTR_ADDU "%[addr2], %[block], %[line_size] \n\t"
84 MMI_SDC1(%[ftmp1], %[addr2], 0x00)
85 PTR_ADDU "%[pixels], %[pixels], %[addr1] \n\t"
86 PTR_ADDU "%[block], %[block], %[addr1] \n\t"
88 MMI_ULDC1(%[ftmp0], %[pixels], 0x00)
89 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
90 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
91 MMI_SDC1(%[ftmp0], %[block], 0x00)
92 PTR_ADDU "%[addr2], %[block], %[line_size] \n\t"
93 MMI_SDC1(%[ftmp1], %[addr2], 0x00)
94 PTR_ADDU "%[pixels], %[pixels], %[addr1] \n\t"
95 PTR_ADDU "%[block], %[block], %[addr1] \n\t"
99 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
101 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
102 [addr2]
"=&r"(addr[2]),
105 : [line_size]
"r"((
mips_reg)line_size)
111 ptrdiff_t line_size,
int h)
119 PTR_ADDU "%[addr1], %[line_size], %[line_size] \n\t"
121 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
122 MMI_ULDC1(%[ftmp0], %[pixels], 0x00)
123 MMI_ULDC1(%[ftmp2], %[pixels], 0x08)
124 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
125 MMI_ULDC1(%[ftmp3], %[addr0], 0x08)
126 MMI_SDC1(%[ftmp0], %[block], 0x00)
127 MMI_SDXC1(%[ftmp1], %[block], %[line_size], 0x00)
128 MMI_SDC1(%[ftmp2], %[block], 0x08)
129 MMI_SDXC1(%[ftmp3], %[block], %[line_size], 0x08)
130 PTR_ADDU "%[pixels], %[pixels], %[addr1] \n\t"
131 PTR_ADDU "%[block], %[block], %[addr1] \n\t"
133 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
134 MMI_ULDC1(%[ftmp0], %[pixels], 0x00)
135 MMI_ULDC1(%[ftmp2], %[pixels], 0x08)
136 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
137 MMI_ULDC1(%[ftmp3], %[addr0], 0x08)
138 MMI_SDC1(%[ftmp0], %[block], 0x00)
139 MMI_SDXC1(%[ftmp1], %[block], %[line_size], 0x00)
140 MMI_SDC1(%[ftmp2], %[block], 0x08)
141 MMI_SDXC1(%[ftmp3], %[block], %[line_size], 0x08)
142 PTR_ADDU "%[pixels], %[pixels], %[addr1] \n\t"
143 PTR_ADDU "%[block], %[block], %[addr1] \n\t"
147 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
148 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
151 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
154 : [line_size]
"r"((
mips_reg)line_size)
160 ptrdiff_t line_size,
int h)
168 PTR_ADDU "%[addr2], %[line_size], %[line_size] \n\t"
170 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
171 MMI_ULWC1(%[ftmp0], %[pixels], 0x00)
172 MMI_ULWC1(%[ftmp1], %[addr0], 0x00)
173 PTR_ADDU "%[addr1], %[block], %[line_size] \n\t"
174 MMI_ULWC1(%[ftmp2], %[block], 0x00)
175 MMI_ULWC1(%[ftmp3], %[addr1], 0x00)
176 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
177 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
178 MMI_SWC1(%[ftmp0], %[block], 0x00)
179 MMI_SWXC1(%[ftmp1], %[block], %[line_size], 0x00)
180 PTR_ADDU "%[pixels], %[pixels], %[addr2] \n\t"
181 PTR_ADDU "%[block], %[block], %[addr2] \n\t"
183 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
184 MMI_ULWC1(%[ftmp0], %[pixels], 0x00)
185 MMI_ULWC1(%[ftmp1], %[addr0], 0x00)
186 PTR_ADDU "%[addr1], %[block], %[line_size] \n\t"
187 MMI_ULWC1(%[ftmp2], %[block], 0x00)
188 MMI_ULWC1(%[ftmp3], %[addr1], 0x00)
189 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
190 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
191 MMI_SWC1(%[ftmp0], %[block], 0x00)
192 MMI_SWXC1(%[ftmp1], %[block], %[line_size], 0x00)
193 PTR_ADDU "%[pixels], %[pixels], %[addr2] \n\t"
194 PTR_ADDU "%[block], %[block], %[addr2] \n\t"
198 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
199 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
202 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
203 [addr2]
"=&r"(addr[2]),
206 : [line_size]
"r"((
mips_reg)line_size)
212 ptrdiff_t line_size,
int h)
220 PTR_ADDU "%[addr2], %[line_size], %[line_size] \n\t"
222 MMI_ULDC1(%[ftmp0], %[pixels], 0x00)
223 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
224 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
225 PTR_ADDU "%[addr1], %[block], %[line_size] \n\t"
226 MMI_ULDC1(%[ftmp2], %[block], 0x00)
227 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
228 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
229 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
230 MMI_SDC1(%[ftmp0], %[block], 0x00)
231 MMI_SDXC1(%[ftmp1], %[block], %[line_size], 0x00)
232 PTR_ADDU "%[pixels], %[pixels], %[addr2] \n\t"
233 PTR_ADDU "%[block], %[block], %[addr2] \n\t"
235 MMI_ULDC1(%[ftmp0], %[pixels], 0x00)
236 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
237 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
238 PTR_ADDU "%[addr1], %[block], %[line_size] \n\t"
239 MMI_ULDC1(%[ftmp2], %[block], 0x00)
240 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
241 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
242 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
243 MMI_SDC1(%[ftmp0], %[block], 0x00)
244 MMI_SDXC1(%[ftmp1], %[block], %[line_size], 0x00)
245 PTR_ADDU "%[pixels], %[pixels], %[addr2] \n\t"
246 PTR_ADDU "%[block], %[block], %[addr2] \n\t"
250 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
251 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
254 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
255 [addr2]
"=&r"(addr[2]),
258 : [line_size]
"r"((
mips_reg)line_size)
264 ptrdiff_t line_size,
int h)
272 PTR_ADDU "%[addr2], %[line_size], %[line_size] \n\t"
274 MMI_ULDC1(%[ftmp0], %[pixels], 0x00)
275 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
276 MMI_ULDC1(%[ftmp4], %[pixels], 0x08)
277 PTR_ADDU "%[addr1], %[block], %[line_size] \n\t"
278 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
279 MMI_ULDC1(%[ftmp5], %[addr0], 0x08)
280 MMI_ULDC1(%[ftmp2], %[block], 0x00)
281 MMI_ULDC1(%[ftmp6], %[block], 0x08)
282 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
283 MMI_ULDC1(%[ftmp7], %[addr1], 0x08)
284 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
285 "pavgb %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
286 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
287 "pavgb %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
288 MMI_SDC1(%[ftmp0], %[block], 0x00)
289 MMI_SDXC1(%[ftmp1], %[block], %[line_size], 0x00)
290 MMI_SDC1(%[ftmp4], %[block], 0x08)
291 MMI_SDXC1(%[ftmp5], %[block], %[line_size], 0x08)
292 PTR_ADDU "%[pixels], %[pixels], %[addr2] \n\t"
293 PTR_ADDU "%[block], %[block], %[addr2] \n\t"
295 MMI_ULDC1(%[ftmp0], %[pixels], 0x00)
296 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
297 MMI_ULDC1(%[ftmp4], %[pixels], 0x08)
298 PTR_ADDU "%[addr1], %[block], %[line_size] \n\t"
299 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
300 MMI_ULDC1(%[ftmp5], %[addr0], 0x08)
301 MMI_ULDC1(%[ftmp2], %[block], 0x00)
302 MMI_ULDC1(%[ftmp6], %[block], 0x08)
303 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
304 MMI_ULDC1(%[ftmp7], %[addr1], 0x08)
305 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
306 "pavgb %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
307 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
308 "pavgb %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
309 MMI_SDC1(%[ftmp0], %[block], 0x00)
310 MMI_SDXC1(%[ftmp1], %[block], %[line_size], 0x00)
311 MMI_SDC1(%[ftmp4], %[block], 0x08)
312 MMI_SDXC1(%[ftmp5], %[block], %[line_size], 0x08)
313 PTR_ADDU "%[pixels], %[pixels], %[addr2] \n\t"
314 PTR_ADDU "%[block], %[block], %[addr2] \n\t"
318 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
319 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
320 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
321 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
324 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
325 [addr2]
"=&r"(addr[2]),
328 : [line_size]
"r"((
mips_reg)line_size)
334 const uint8_t *src2,
int dst_stride,
int src_stride1,
int src_stride2,
343 PTR_ADDU "%[addr2], %[src_stride1], %[src_stride1] \n\t"
344 PTR_ADDU "%[addr3], %[src_stride2], %[src_stride2] \n\t"
345 PTR_ADDU "%[addr4], %[dst_stride], %[dst_stride] \n\t"
347 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
348 MMI_ULWC1(%[ftmp0], %[src1], 0x00)
349 MMI_ULWC1(%[ftmp1], %[addr0], 0x00)
350 MMI_ULWC1(%[ftmp2], %[src2], 0x00)
351 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
352 MMI_ULWC1(%[ftmp3], %[addr1], 0x00)
353 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
354 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
355 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
356 MMI_SWC1(%[ftmp0], %[dst], 0x00)
357 MMI_SWXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
358 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
359 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
361 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
362 MMI_ULWC1(%[ftmp0], %[src1], 0x00)
363 MMI_ULWC1(%[ftmp1], %[addr0], 0x00)
364 MMI_ULWC1(%[ftmp2], %[src2], 0x00)
365 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
366 MMI_ULWC1(%[ftmp3], %[addr1], 0x00)
367 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
368 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
369 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
370 MMI_SWC1(%[ftmp0], %[dst], 0x00)
371 MMI_SWXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
372 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
373 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
377 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
378 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
381 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
382 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
383 [addr4]
"=&r"(addr[4]),
385 [src2]
"+&r"(src2), [
h]
"+&r"(
h)
386 : [dst_stride]
"r"((
mips_reg)dst_stride),
387 [src_stride1]
"r"((
mips_reg)src_stride1),
388 [src_stride2]
"r"((
mips_reg)src_stride2)
394 const uint8_t *src2,
int dst_stride,
int src_stride1,
int src_stride2,
403 PTR_ADDU "%[addr2], %[src_stride1], %[src_stride1] \n\t"
404 PTR_ADDU "%[addr3], %[src_stride2], %[src_stride2] \n\t"
405 PTR_ADDU "%[addr4], %[dst_stride], %[dst_stride] \n\t"
408 MMI_ULDC1(%[ftmp0], %[src1], 0x00)
409 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
410 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
411 MMI_ULDC1(%[ftmp2], %[src2], 0x00)
412 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
413 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
414 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
415 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
416 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
417 MMI_SDC1(%[ftmp0], %[dst], 0x00)
418 MMI_SDXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
419 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
420 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
422 MMI_ULDC1(%[ftmp0], %[src1], 0x00)
423 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
424 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
425 MMI_ULDC1(%[ftmp2], %[src2], 0x00)
426 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
427 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
428 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
429 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
430 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
431 MMI_SDC1(%[ftmp0], %[dst], 0x00)
432 MMI_SDXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
433 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
434 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
438 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
439 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
442 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
443 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
444 [addr4]
"=&r"(addr[4]),
446 [src2]
"+&r"(src2), [
h]
"+&r"(
h)
447 : [dst_stride]
"r"((
mips_reg)dst_stride),
448 [src_stride1]
"r"((
mips_reg)src_stride1),
449 [src_stride2]
"r"((
mips_reg)src_stride2)
455 const uint8_t *src2,
int dst_stride,
int src_stride1,
int src_stride2,
464 PTR_ADDU "%[addr2], %[src_stride1], %[src_stride1] \n\t"
465 PTR_ADDU "%[addr3], %[src_stride2], %[src_stride2] \n\t"
466 PTR_ADDU "%[addr4], %[dst_stride], %[dst_stride] \n\t"
469 MMI_ULDC1(%[ftmp0], %[src1], 0x00)
470 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
471 MMI_ULDC1(%[ftmp4], %[src1], 0x08)
472 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
473 MMI_ULDC1(%[ftmp5], %[addr0], 0x08)
474 MMI_ULDC1(%[ftmp2], %[src2], 0x00)
475 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
476 MMI_ULDC1(%[ftmp6], %[src2], 0x08)
477 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
478 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
479 MMI_ULDC1(%[ftmp7], %[addr1], 0x08)
480 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
481 "pavgb %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
482 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
483 "pavgb %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
484 MMI_SDC1(%[ftmp0], %[dst], 0x00)
485 MMI_SDXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
486 MMI_SDC1(%[ftmp4], %[dst], 0x08)
487 MMI_SDXC1(%[ftmp5], %[dst], %[dst_stride], 0x08)
488 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
489 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
491 MMI_ULDC1(%[ftmp0], %[src1], 0x00)
492 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
493 MMI_ULDC1(%[ftmp4], %[src1], 0x08)
494 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
495 MMI_ULDC1(%[ftmp5], %[addr0], 0x08)
496 MMI_ULDC1(%[ftmp2], %[src2], 0x00)
497 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
498 MMI_ULDC1(%[ftmp6], %[src2], 0x08)
499 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
500 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
501 MMI_ULDC1(%[ftmp7], %[addr1], 0x08)
502 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
503 "pavgb %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
504 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
505 "pavgb %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
506 MMI_SDC1(%[ftmp0], %[dst], 0x00)
507 MMI_SDXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
508 MMI_SDC1(%[ftmp4], %[dst], 0x08)
509 MMI_SDXC1(%[ftmp5], %[dst], %[dst_stride], 0x08)
510 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
511 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
515 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
516 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
517 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
518 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
521 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
522 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
523 [addr4]
"=&r"(addr[4]),
525 [src2]
"+&r"(src2), [
h]
"+&r"(
h)
526 : [dst_stride]
"r"((
mips_reg)dst_stride),
527 [src_stride1]
"r"((
mips_reg)src_stride1),
528 [src_stride2]
"r"((
mips_reg)src_stride2)
534 const uint8_t *src2,
int dst_stride,
int src_stride1,
int src_stride2,
543 PTR_ADDU "%[addr2], %[src_stride1], %[src_stride1] \n\t"
544 PTR_ADDU "%[addr3], %[src_stride2], %[src_stride2] \n\t"
545 PTR_ADDU "%[addr4], %[dst_stride], %[dst_stride] \n\t"
548 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
549 MMI_ULWC1(%[ftmp0], %[src1], 0x00)
550 MMI_ULWC1(%[ftmp1], %[addr0], 0x00)
551 MMI_ULWC1(%[ftmp2], %[src2], 0x00)
552 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
553 MMI_ULWC1(%[ftmp3], %[addr1], 0x00)
554 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
555 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
556 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
557 PTR_ADDU "%[addr5], %[dst], %[dst_stride] \n\t"
558 MMI_ULWC1(%[ftmp4], %[dst], 0x00)
559 MMI_ULWC1(%[ftmp5], %[addr5], 0x00)
560 "pavgb %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
561 "pavgb %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
562 MMI_SWC1(%[ftmp0], %[dst], 0x00)
563 MMI_SWXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
564 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
565 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
567 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
568 MMI_ULWC1(%[ftmp0], %[src1], 0x00)
569 MMI_ULWC1(%[ftmp1], %[addr0], 0x00)
570 MMI_ULWC1(%[ftmp2], %[src2], 0x00)
571 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
572 MMI_ULWC1(%[ftmp3], %[addr1], 0x00)
573 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
574 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
575 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
576 PTR_ADDU "%[addr5], %[dst], %[dst_stride] \n\t"
577 MMI_ULWC1(%[ftmp4], %[dst], 0x00)
578 MMI_ULWC1(%[ftmp5], %[addr5], 0x00)
579 "pavgb %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
580 "pavgb %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
581 MMI_SWC1(%[ftmp0], %[dst], 0x00)
582 MMI_SWXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
583 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
584 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
588 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
589 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
590 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
593 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
594 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
595 [addr4]
"=&r"(addr[4]), [addr5]
"=&r"(addr[5]),
596 [dst]
"+&r"(dst), [src1]
"+&r"(src1),
597 [src2]
"+&r"(src2), [h]
"+&r"(h)
598 : [dst_stride]
"r"((
mips_reg)dst_stride),
599 [src_stride1]
"r"((
mips_reg)src_stride1),
600 [src_stride2]
"r"((
mips_reg)src_stride2)
606 const uint8_t *src2,
int dst_stride,
int src_stride1,
int src_stride2,
615 PTR_ADDU "%[addr2], %[src_stride1], %[src_stride1] \n\t"
616 PTR_ADDU "%[addr3], %[src_stride2], %[src_stride2] \n\t"
617 PTR_ADDU "%[addr4], %[dst_stride], %[dst_stride] \n\t"
620 MMI_ULDC1(%[ftmp0], %[src1], 0x00)
621 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
622 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
623 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
624 MMI_ULDC1(%[ftmp2], %[src2], 0x00)
625 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
626 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
627 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
628 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
629 PTR_ADDU "%[addr5], %[dst], %[dst_stride] \n\t"
630 MMI_ULDC1(%[ftmp4], %[dst], 0x00)
631 MMI_ULDC1(%[ftmp5], %[addr5], 0x00)
632 "pavgb %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
633 "pavgb %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
634 MMI_SDC1(%[ftmp0], %[dst], 0x00)
635 MMI_SDXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
636 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
637 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
639 MMI_ULDC1(%[ftmp0], %[src1], 0x00)
640 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
641 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
642 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
643 MMI_ULDC1(%[ftmp2], %[src2], 0x00)
644 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
645 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
646 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
647 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
648 PTR_ADDU "%[addr5], %[dst], %[dst_stride] \n\t"
649 MMI_ULDC1(%[ftmp4], %[dst], 0x00)
650 MMI_ULDC1(%[ftmp5], %[addr5], 0x00)
651 "pavgb %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
652 "pavgb %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
653 MMI_SDC1(%[ftmp0], %[dst], 0x00)
654 MMI_SDXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
655 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
656 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
660 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
661 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
662 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
665 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
666 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
667 [addr4]
"=&r"(addr[4]), [addr5]
"=&r"(addr[5]),
668 [dst]
"+&r"(dst), [src1]
"+&r"(src1),
669 [src2]
"+&r"(src2), [h]
"+&r"(h)
670 : [dst_stride]
"r"((
mips_reg)dst_stride),
671 [src_stride1]
"r"((
mips_reg)src_stride1),
672 [src_stride2]
"r"((
mips_reg)src_stride2)
678 const uint8_t *src2,
int dst_stride,
int src_stride1,
int src_stride2,
684 src_stride1, src_stride2, h);
688 ptrdiff_t line_size,
int h)
695 ptrdiff_t line_size,
int h)
702 ptrdiff_t line_size,
int h)
709 ptrdiff_t line_size,
int h)
716 ptrdiff_t line_size,
int h)
723 ptrdiff_t line_size,
int h)
730 const uint8_t *src2,
int dst_stride,
int src_stride1,
int src_stride2,
739 "pcmpeqb %[ftmp4], %[ftmp4], %[ftmp4] \n\t"
740 PTR_ADDU "%[addr2], %[src_stride1], %[src_stride1] \n\t"
741 PTR_ADDU "%[addr3], %[src_stride2], %[src_stride2] \n\t"
742 PTR_ADDU "%[addr4], %[dst_stride], %[dst_stride] \n\t"
745 MMI_ULDC1(%[ftmp0], %[src1], 0x00)
746 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
747 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
748 MMI_ULDC1(%[ftmp2], %[src2], 0x00)
749 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
750 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
751 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
752 "xor %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
753 "xor %[ftmp1], %[ftmp1], %[ftmp4] \n\t"
754 "xor %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
755 "xor %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
756 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
757 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
758 "xor %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
759 "xor %[ftmp1], %[ftmp1], %[ftmp4] \n\t"
760 MMI_SDC1(%[ftmp0], %[dst], 0x00)
761 MMI_SDXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
762 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
763 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
765 MMI_ULDC1(%[ftmp0], %[src1], 0x00)
766 PTR_ADDU "%[addr0], %[src1], %[src_stride1] \n\t"
767 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
768 MMI_ULDC1(%[ftmp2], %[src2], 0x00)
769 PTR_ADDU "%[addr1], %[src2], %[src_stride2] \n\t"
770 MMI_ULDC1(%[ftmp3], %[addr1], 0x00)
771 PTR_ADDU "%[src1], %[src1], %[addr2] \n\t"
772 "xor %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
773 "xor %[ftmp1], %[ftmp1], %[ftmp4] \n\t"
774 "xor %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
775 "xor %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
776 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
777 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
778 "xor %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
779 "xor %[ftmp1], %[ftmp1], %[ftmp4] \n\t"
780 MMI_SDC1(%[ftmp0], %[dst], 0x00)
781 MMI_SDXC1(%[ftmp1], %[dst], %[dst_stride], 0x00)
782 PTR_ADDU "%[src2], %[src2], %[addr3] \n\t"
783 PTR_ADDU "%[dst], %[dst], %[addr4] \n\t"
787 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
788 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
789 [ftmp4]
"=&f"(ftmp[4]),
792 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
793 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
794 [addr4]
"=&r"(addr[4]),
795 [dst]
"+&r"(dst), [src1]
"+&r"(src1),
796 [src2]
"+&r"(src2), [h]
"+&r"(h)
797 : [dst_stride]
"r"((
mips_reg)dst_stride),
798 [src_stride1]
"r"((
mips_reg)src_stride1),
799 [src_stride2]
"r"((
mips_reg)src_stride2)
805 ptrdiff_t line_size,
int h)
808 line_size, line_size, h);
812 ptrdiff_t line_size,
int h)
819 ptrdiff_t line_size,
int h)
822 line_size, line_size, h);
826 ptrdiff_t line_size,
int h)
829 line_size, line_size, h);
833 ptrdiff_t line_size,
int h)
836 line_size, line_size, h);
840 ptrdiff_t line_size,
int h)
843 line_size, line_size, h);
847 ptrdiff_t line_size,
int h)
850 line_size, line_size, h);
854 ptrdiff_t line_size,
int h)
861 ptrdiff_t line_size,
int h)
864 line_size, line_size, line_size, h);
868 ptrdiff_t line_size,
int h)
875 ptrdiff_t line_size,
int h)
880 const uint32_t
b =
AV_RN32(pixels + 1);
881 uint32_t l0 = (a & 0x03030303UL) +
884 uint32_t h0 = ((a & 0xFCFCFCFCUL) >> 2) +
885 ((b & 0xFCFCFCFCUL) >> 2);
889 for (i = 0; i <
h; i += 2) {
891 uint32_t b =
AV_RN32(pixels + 1);
892 l1 = (a & 0x03030303UL) +
894 h1 = ((a & 0xFCFCFCFCUL) >> 2) +
895 ((b & 0xFCFCFCFCUL) >> 2);
896 *((uint32_t *) block) = h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL);
901 l0 = (a & 0x03030303UL) +
904 h0 = ((a & 0xFCFCFCFCUL) >> 2) +
905 ((b & 0xFCFCFCFCUL) >> 2);
906 *((uint32_t *) block) = h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL);
913 ptrdiff_t line_size,
int h)
922 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
923 "dli %[addr0], 0x0f \n\t"
924 "pcmpeqw %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
925 "dmtc1 %[addr0], %[ftmp8] \n\t"
926 "dli %[addr0], 0x01 \n\t"
927 "psrlh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
928 "dmtc1 %[addr0], %[ftmp8] \n\t"
929 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
931 "dli %[addr0], 0x02 \n\t"
932 "dmtc1 %[addr0], %[ftmp9] \n\t"
933 MMI_ULDC1(%[ftmp0], %[pixels], 0x00)
934 MMI_ULDC1(%[ftmp4], %[pixels], 0x01)
935 "mov.d %[ftmp1], %[ftmp0] \n\t"
936 "mov.d %[ftmp5], %[ftmp4] \n\t"
937 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
938 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
939 "punpckhbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
940 "punpckhbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
941 "paddush %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
942 "paddush %[ftmp5], %[ftmp5], %[ftmp1] \n\t"
943 "xor %[addr0], %[addr0], %[addr0] \n\t"
944 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
948 PTR_ADDU "%[addr1], %[pixels], %[addr0] \n\t"
949 MMI_ULDC1(%[ftmp0], %[addr1], 0x00)
950 MMI_ULDC1(%[ftmp2], %[addr1], 0x01)
951 "mov.d %[ftmp1], %[ftmp0] \n\t"
952 "mov.d %[ftmp3], %[ftmp2] \n\t"
953 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
954 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
955 "punpckhbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
956 "punpckhbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
957 "paddush %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
958 "paddush %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
959 "paddush %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
960 "paddush %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
961 "paddush %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
962 "paddush %[ftmp5], %[ftmp5], %[ftmp1] \n\t"
963 "psrlh %[ftmp4], %[ftmp4], %[ftmp9] \n\t"
964 "psrlh %[ftmp5], %[ftmp5], %[ftmp9] \n\t"
965 "packushb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
966 MMI_SDXC1(%[ftmp4], %[block], %[addr0], 0x00)
967 PTR_ADDU "%[addr0], %[addr0], %[line_size] \n\t"
968 PTR_ADDU "%[addr1], %[pixels], %[addr0] \n\t"
969 MMI_ULDC1(%[ftmp2], %[addr1], 0x00)
970 MMI_ULDC1(%[ftmp4], %[addr1], 0x01)
971 "mov.d %[ftmp3], %[ftmp2] \n\t"
972 "mov.d %[ftmp5], %[ftmp4] \n\t"
973 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
974 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
975 "punpckhbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
976 "punpckhbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
977 "paddush %[ftmp4], %[ftmp4], %[ftmp2] \n\t"
978 "paddush %[ftmp5], %[ftmp5], %[ftmp3] \n\t"
979 "paddush %[ftmp0], %[ftmp0], %[ftmp6] \n\t"
980 "paddush %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
981 "paddush %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
982 "paddush %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
983 "psrlh %[ftmp0], %[ftmp0], %[ftmp9] \n\t"
984 "psrlh %[ftmp1], %[ftmp1], %[ftmp9] \n\t"
985 "packushb %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
986 MMI_SDXC1(%[ftmp0], %[block], %[addr0], 0x00)
987 PTR_ADDU "%[addr0], %[addr0], %[line_size] \n\t"
990 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
991 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
992 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
993 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
994 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
997 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
998 [
h]
"+&r"(
h), [pixels]
"+&r"(pixels)
1006 for (j = 0; j < 2; j++) {
1008 const uint32_t
a =
AV_RN32(pixels);
1009 const uint32_t
b =
AV_RN32(pixels + 1);
1010 uint32_t l0 = (a & 0x03030303UL) +
1011 (b & 0x03030303UL) +
1013 uint32_t h0 = ((a & 0xFCFCFCFCUL) >> 2) +
1014 ((b & 0xFCFCFCFCUL) >> 2);
1017 pixels += line_size;
1018 for (i = 0; i <
h; i += 2) {
1020 uint32_t b =
AV_RN32(pixels + 1);
1021 l1 = (a & 0x03030303UL) +
1023 h1 = ((a & 0xFCFCFCFCUL) >> 2) +
1024 ((b & 0xFCFCFCFCUL) >> 2);
1025 *((uint32_t *) block) = h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL);
1026 pixels += line_size;
1030 l0 = (a & 0x03030303UL) +
1031 (b & 0x03030303UL) +
1033 h0 = ((a & 0xFCFCFCFCUL) >> 2) +
1034 ((b & 0xFCFCFCFCUL) >> 2);
1035 *((uint32_t *) block) = h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL);
1036 pixels += line_size;
1039 pixels += 4 - line_size * (h + 1);
1040 block += 4 - line_size *
h;
1046 ptrdiff_t line_size,
int h)
1053 ptrdiff_t line_size,
int h)
1057 const uint32_t
a =
AV_RN32(pixels);
1058 const uint32_t
b =
AV_RN32(pixels + 1);
1059 uint32_t l0 = (a & 0x03030303UL) +
1060 (b & 0x03030303UL) +
1062 uint32_t h0 = ((a & 0xFCFCFCFCUL) >> 2) +
1063 ((b & 0xFCFCFCFCUL) >> 2);
1066 pixels += line_size;
1067 for (i = 0; i <
h; i += 2) {
1069 uint32_t b =
AV_RN32(pixels + 1);
1070 l1 = (a & 0x03030303UL) +
1072 h1 = ((a & 0xFCFCFCFCUL) >> 2) +
1073 ((b & 0xFCFCFCFCUL) >> 2);
1074 *((uint32_t *) block) =
rnd_avg32(*((uint32_t *) block), h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL));
1075 pixels += line_size;
1079 l0 = (a & 0x03030303UL) +
1080 (b & 0x03030303UL) +
1082 h0 = ((a & 0xFCFCFCFCUL) >> 2) +
1083 ((b & 0xFCFCFCFCUL) >> 2);
1084 *((uint32_t *) block) =
rnd_avg32(*((uint32_t *) block), h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL));
1085 pixels += line_size;
1091 ptrdiff_t line_size,
int h)
1096 for (j = 0; j < 2; j++) {
1098 const uint32_t
a =
AV_RN32(pixels);
1099 const uint32_t
b =
AV_RN32(pixels + 1);
1100 uint32_t l0 = (a & 0x03030303UL) +
1101 (b & 0x03030303UL) +
1103 uint32_t h0 = ((a & 0xFCFCFCFCUL) >> 2) +
1104 ((b & 0xFCFCFCFCUL) >> 2);
1107 pixels += line_size;
1108 for (i = 0; i <
h; i += 2) {
1110 uint32_t b =
AV_RN32(pixels + 1);
1111 l1 = (a & 0x03030303UL) +
1113 h1 = ((a & 0xFCFCFCFCUL) >> 2) +
1114 ((b & 0xFCFCFCFCUL) >> 2);
1115 *((uint32_t *) block) =
rnd_avg32(*((uint32_t *) block), h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL));
1116 pixels += line_size;
1120 l0 = (a & 0x03030303UL) +
1121 (b & 0x03030303UL) +
1123 h0 = ((a & 0xFCFCFCFCUL) >> 2) +
1124 ((b & 0xFCFCFCFCUL) >> 2);
1125 *((uint32_t *) block) =
rnd_avg32(*((uint32_t *) block), h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL));
1126 pixels += line_size;
1129 pixels += 4 - line_size * (h + 1);
1130 block += 4 - line_size *
h;
1135 ptrdiff_t line_size,
int h)
1142 ptrdiff_t line_size,
int h)
1147 for (j = 0; j < 2; j++) {
1149 const uint32_t
a =
AV_RN32(pixels);
1150 const uint32_t
b =
AV_RN32(pixels + 1);
1151 uint32_t l0 = (a & 0x03030303UL) +
1152 (b & 0x03030303UL) +
1154 uint32_t h0 = ((a & 0xFCFCFCFCUL) >> 2) +
1155 ((b & 0xFCFCFCFCUL) >> 2);
1158 pixels += line_size;
1159 for (i = 0; i <
h; i += 2) {
1161 uint32_t b =
AV_RN32(pixels + 1);
1162 l1 = (a & 0x03030303UL) +
1164 h1 = ((a & 0xFCFCFCFCUL) >> 2) +
1165 ((b & 0xFCFCFCFCUL) >> 2);
1166 *((uint32_t *) block) = h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL);
1167 pixels += line_size;
1171 l0 = (a & 0x03030303UL) +
1172 (b & 0x03030303UL) +
1174 h0 = ((a & 0xFCFCFCFCUL) >> 2) +
1175 ((b & 0xFCFCFCFCUL) >> 2);
1176 *((uint32_t *) block) = h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL);
1177 pixels += line_size;
1180 pixels += 4 - line_size * (h + 1);
1181 block += 4 - line_size *
h;
1186 ptrdiff_t line_size,
int h)
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)
void ff_avg_pixels4_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_avg_pixels4_y2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_pixels8_xy2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
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_no_rnd_pixels8_xy2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_avg_pixels4_xy2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_avg_pixels16_y2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
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_put_no_rnd_pixels16_x2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_pixels16_y2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_no_rnd_pixels8_x2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_pixels4_x2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_avg_pixels8_xy2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_pixels8_y2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_no_rnd_pixels16_xy2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_pixels4_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_pixels4_xy2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_avg_pixels16_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_no_rnd_pixels8_y2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
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_put_pixels4_y2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
static uint32_t rnd_avg32(uint32_t a, uint32_t b)
void ff_avg_pixels8_y2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_avg_pixels16_x2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_avg_pixels16_xy2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
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)
void ff_put_pixels16_x2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_no_rnd_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_pixels4_x2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_avg_pixels8_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_pixels16_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_avg_pixels8_x2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_pixels8_x2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
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_no_rnd_pixels16_y2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_pixels8_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
void ff_put_pixels16_xy2_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)