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)