30 int dstStride,
int srcStride,
int h)
37 MMI_ULWC1(%[ftmp0], %[src], 0x00)
38 MMI_SWC1(%[ftmp0], %[dst], 0x00)
39 "addi %[h], %[h], -0x01 \n\t" 40 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 41 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 43 : [ftmp0]
"=&f"(ftmp[0]),
44 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
47 : [dstStride]
"r"((
mips_reg)dstStride),
54 int dstStride,
int srcStride,
int h)
61 MMI_ULDC1(%[ftmp0], %[src], 0x00)
62 MMI_SDC1(%[ftmp0], %[dst], 0x00)
63 "addi %[h], %[h], -0x01 \n\t" 64 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 65 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 67 : [ftmp0]
"=&f"(ftmp[0]),
69 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
71 : [dstStride]
"r"((
mips_reg)dstStride),
78 int dstStride,
int srcStride,
int h)
86 MMI_ULDC1(%[ftmp0], %[src], 0x00)
87 "ldl %[tmp0], 0x0f(%[src]) \n\t" 88 "ldr %[tmp0], 0x08(%[src]) \n\t" 89 MMI_SDC1(%[ftmp0], %[dst], 0x00)
90 "sdl %[tmp0], 0x0f(%[dst]) \n\t" 91 "sdr %[tmp0], 0x08(%[dst]) \n\t" 92 "addi %[h], %[h], -0x01 \n\t" 93 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 94 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 96 : [ftmp0]
"=&f"(ftmp[0]),
99 [dst]
"+&r"(dst), [src]
"+&r"(src),
101 : [dstStride]
"r"((
mips_reg)dstStride),
107 #define op2_avg(a, b) a = (((a)+CLIP(((b) + 512)>>10)+1)>>1) 108 #define op2_put(a, b) a = CLIP(((b) + 512)>>10) 110 int dstStride,
int srcStride)
117 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 118 "dli %[tmp0], 0x04 \n\t" 120 MMI_ULWC1(%[ftmp1], %[src], -0x02)
121 MMI_ULWC1(%[ftmp2], %[src], -0x01)
122 MMI_ULWC1(%[ftmp3], %[src], 0x00)
123 MMI_ULWC1(%[ftmp4], %[src], 0x01)
124 MMI_ULWC1(%[ftmp5], %[src], 0x02)
125 MMI_ULWC1(%[ftmp6], %[src], 0x03)
127 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 128 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 129 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 130 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t" 131 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t" 132 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 133 "paddsh %[ftmp7], %[ftmp3], %[ftmp4] \n\t" 134 "paddsh %[ftmp8], %[ftmp2], %[ftmp5] \n\t" 135 "paddsh %[ftmp9], %[ftmp1], %[ftmp6] \n\t" 136 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_20] \n\t" 137 "pmullh %[ftmp8], %[ftmp8], %[ff_pw_5] \n\t" 138 "psubsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t" 139 "paddsh %[ftmp9], %[ftmp7], %[ftmp9] \n\t" 140 "paddsh %[ftmp9], %[ftmp9], %[ff_pw_16] \n\t" 141 "psrah %[ftmp9], %[ftmp9], %[ff_pw_5] \n\t" 142 "packushb %[ftmp9], %[ftmp9], %[ftmp0] \n\t" 143 MMI_SWC1(%[ftmp9], %[dst], 0x00)
144 "daddi %[tmp0], %[tmp0], -0x01 \n\t" 145 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 146 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 147 "bnez %[tmp0], 1b \n\t" 148 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
149 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
150 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
151 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
152 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
155 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
156 : [dstStride]
"r"((
mips_reg)dstStride),
157 [srcStride]
"r"((
mips_reg)srcStride),
165 int dstStride,
int srcStride)
172 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 173 "dli %[tmp0], 0x08 \n\t" 175 MMI_ULDC1(%[ftmp1], %[src], -0x02)
176 MMI_ULDC1(%[ftmp2], %[src], -0x01)
177 MMI_ULDC1(%[ftmp3], %[src], 0x00)
178 MMI_ULDC1(%[ftmp4], %[src], 0x01)
179 MMI_ULDC1(%[ftmp5], %[src], 0x02)
180 MMI_ULDC1(%[ftmp6], %[src], 0x03)
181 "punpcklbh %[ftmp7], %[ftmp3], %[ftmp0] \n\t" 182 "punpckhbh %[ftmp8], %[ftmp3], %[ftmp0] \n\t" 183 "punpcklbh %[ftmp9], %[ftmp4], %[ftmp0] \n\t" 184 "punpckhbh %[ftmp10], %[ftmp4], %[ftmp0] \n\t" 185 "paddsh %[ftmp3], %[ftmp7], %[ftmp9] \n\t" 186 "paddsh %[ftmp4], %[ftmp8], %[ftmp10] \n\t" 187 "pmullh %[ftmp3], %[ftmp3], %[ff_pw_20] \n\t" 188 "pmullh %[ftmp4], %[ftmp4], %[ff_pw_20] \n\t" 189 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t" 190 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t" 191 "punpcklbh %[ftmp9], %[ftmp5], %[ftmp0] \n\t" 192 "punpckhbh %[ftmp10], %[ftmp5], %[ftmp0] \n\t" 193 "paddsh %[ftmp2], %[ftmp7], %[ftmp9] \n\t" 194 "paddsh %[ftmp5], %[ftmp8], %[ftmp10] \n\t" 195 "pmullh %[ftmp2], %[ftmp2], %[ff_pw_5] \n\t" 196 "pmullh %[ftmp5], %[ftmp5], %[ff_pw_5] \n\t" 197 "punpcklbh %[ftmp7], %[ftmp1], %[ftmp0] \n\t" 198 "punpckhbh %[ftmp8], %[ftmp1], %[ftmp0] \n\t" 199 "punpcklbh %[ftmp9], %[ftmp6], %[ftmp0] \n\t" 200 "punpckhbh %[ftmp10], %[ftmp6], %[ftmp0] \n\t" 201 "paddsh %[ftmp1], %[ftmp7], %[ftmp9] \n\t" 202 "paddsh %[ftmp6], %[ftmp8], %[ftmp10] \n\t" 203 "psubsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 204 "psubsh %[ftmp4], %[ftmp4], %[ftmp5] \n\t" 205 "paddsh %[ftmp3], %[ftmp3], %[ftmp1] \n\t" 206 "paddsh %[ftmp4], %[ftmp4], %[ftmp6] \n\t" 207 "paddsh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 208 "paddsh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t" 209 "psrah %[ftmp3], %[ftmp3], %[ff_pw_5] \n\t" 210 "psrah %[ftmp4], %[ftmp4], %[ff_pw_5] \n\t" 211 "packushb %[ftmp9], %[ftmp3], %[ftmp4] \n\t" 212 MMI_SDC1(%[ftmp9], %[dst], 0x00)
213 "daddi %[tmp0], %[tmp0], -0x01 \n\t" 214 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 215 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 216 "bnez %[tmp0], 1b \n\t" 217 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
218 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
219 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
220 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
221 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
222 [ftmp10]
"=&f"(ftmp[10]),
225 [dst]
"+&r"(dst), [src]
"+&r"(src)
226 : [dstStride]
"r"((
mips_reg)dstStride),
227 [srcStride]
"r"((
mips_reg)srcStride),
235 int dstStride,
int srcStride)
246 int dstStride,
int srcStride)
253 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 254 "dli %[tmp0], 0x04 \n\t" 256 MMI_ULWC1(%[ftmp1], %[src], -0x02)
257 MMI_ULWC1(%[ftmp2], %[src], -0x01)
258 MMI_ULWC1(%[ftmp3], %[src], 0x00)
259 MMI_ULWC1(%[ftmp4], %[src], 0x01)
260 MMI_ULWC1(%[ftmp5], %[src], 0x02)
261 MMI_ULWC1(%[ftmp6], %[src], 0x03)
262 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 263 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 264 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 265 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t" 266 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t" 267 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 268 "paddsh %[ftmp7], %[ftmp3], %[ftmp4] \n\t" 269 "paddsh %[ftmp8], %[ftmp2], %[ftmp5] \n\t" 270 "paddsh %[ftmp9], %[ftmp1], %[ftmp6] \n\t" 271 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_20] \n\t" 272 "pmullh %[ftmp8], %[ftmp8], %[ff_pw_5] \n\t" 273 "psubsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t" 274 "paddsh %[ftmp9], %[ftmp7], %[ftmp9] \n\t" 275 "paddsh %[ftmp9], %[ftmp9], %[ff_pw_16] \n\t" 276 "psrah %[ftmp9], %[ftmp9], %[ff_pw_5] \n\t" 277 "packushb %[ftmp9], %[ftmp9], %[ftmp0] \n\t" 278 MMI_LWC1(%[ftmp10], %[dst], 0x00)
279 "pavgb %[ftmp9], %[ftmp9], %[ftmp10] \n\t" 280 MMI_SWC1(%[ftmp9], %[dst], 0x00)
281 "daddi %[tmp0], %[tmp0], -0x01 \n\t" 282 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 283 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 284 "bnez %[tmp0], 1b \n\t" 285 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
286 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
287 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
288 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
289 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
290 [ftmp10]
"=&f"(ftmp[10]),
293 [dst]
"+&r"(dst), [src]
"+&r"(src)
294 : [dstStride]
"r"((
mips_reg)dstStride),
295 [srcStride]
"r"((
mips_reg)srcStride),
303 int dstStride,
int srcStride)
310 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 311 "dli %[tmp0], 0x08 \n\t" 313 MMI_ULDC1(%[ftmp1], %[src], -0x02)
314 MMI_ULDC1(%[ftmp2], %[src], -0x01)
315 MMI_ULDC1(%[ftmp3], %[src], 0x00)
316 MMI_ULDC1(%[ftmp4], %[src], 0x01)
317 MMI_ULDC1(%[ftmp5], %[src], 0x02)
318 MMI_ULDC1(%[ftmp6], %[src], 0x03)
319 "punpcklbh %[ftmp7], %[ftmp3], %[ftmp0] \n\t" 320 "punpckhbh %[ftmp8], %[ftmp3], %[ftmp0] \n\t" 321 "punpcklbh %[ftmp9], %[ftmp4], %[ftmp0] \n\t" 322 "punpckhbh %[ftmp10], %[ftmp4], %[ftmp0] \n\t" 323 "paddsh %[ftmp3], %[ftmp7], %[ftmp9] \n\t" 324 "paddsh %[ftmp4], %[ftmp8], %[ftmp10] \n\t" 325 "pmullh %[ftmp3], %[ftmp3], %[ff_pw_20] \n\t" 326 "pmullh %[ftmp4], %[ftmp4], %[ff_pw_20] \n\t" 327 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t" 328 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t" 329 "punpcklbh %[ftmp9], %[ftmp5], %[ftmp0] \n\t" 330 "punpckhbh %[ftmp10], %[ftmp5], %[ftmp0] \n\t" 331 "paddsh %[ftmp2], %[ftmp7], %[ftmp9] \n\t" 332 "paddsh %[ftmp5], %[ftmp8], %[ftmp10] \n\t" 333 "pmullh %[ftmp2], %[ftmp2], %[ff_pw_5] \n\t" 334 "pmullh %[ftmp5], %[ftmp5], %[ff_pw_5] \n\t" 335 "punpcklbh %[ftmp7], %[ftmp1], %[ftmp0] \n\t" 336 "punpckhbh %[ftmp8], %[ftmp1], %[ftmp0] \n\t" 337 "punpcklbh %[ftmp9], %[ftmp6], %[ftmp0] \n\t" 338 "punpckhbh %[ftmp10], %[ftmp6], %[ftmp0] \n\t" 339 "paddsh %[ftmp1], %[ftmp7], %[ftmp9] \n\t" 340 "paddsh %[ftmp6], %[ftmp8], %[ftmp10] \n\t" 341 "psubsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 342 "psubsh %[ftmp4], %[ftmp4], %[ftmp5] \n\t" 343 "paddsh %[ftmp3], %[ftmp3], %[ftmp1] \n\t" 344 "paddsh %[ftmp4], %[ftmp4], %[ftmp6] \n\t" 345 "paddsh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 346 "paddsh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t" 347 "psrah %[ftmp3], %[ftmp3], %[ff_pw_5] \n\t" 348 "psrah %[ftmp4], %[ftmp4], %[ff_pw_5] \n\t" 349 "packushb %[ftmp9], %[ftmp3], %[ftmp4] \n\t" 350 MMI_LDC1(%[ftmp10], %[dst], 0x00)
351 "pavgb %[ftmp9], %[ftmp9], %[ftmp10] \n\t" 352 MMI_SDC1(%[ftmp9], %[dst], 0x00)
353 "daddi %[tmp0], %[tmp0], -0x01 \n\t" 354 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 355 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 356 "bnez %[tmp0], 1b \n\t" 357 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
358 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
359 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
360 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
361 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
362 [ftmp10]
"=&f"(ftmp[10]),
365 [dst]
"+&r"(dst), [src]
"+&r"(src)
366 : [dstStride]
"r"((
mips_reg)dstStride),
367 [srcStride]
"r"((
mips_reg)srcStride),
375 int dstStride,
int srcStride)
386 int dstStride,
int srcStride)
392 src -= 2 * srcStride;
396 ".set noreorder \n\t" 397 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 398 "dli %[tmp0], 0x02 \n\t" 399 MMI_LWC1(%[ftmp1], %[src], 0x00)
400 "mtc1 %[tmp0], %[ftmp10] \n\t" 401 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 402 "dli %[tmp0], 0x05 \n\t" 403 MMI_LWC1(%[ftmp2], %[src], 0x00)
404 "mtc1 %[tmp0], %[ftmp11] \n\t" 405 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 406 MMI_LWC1(%[ftmp3], %[src], 0x00)
407 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 408 MMI_LWC1(%[ftmp4], %[src], 0x00)
409 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 410 MMI_LWC1(%[ftmp5], %[src], 0x00)
411 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 412 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 413 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 414 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 415 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t" 416 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t" 417 MMI_LWC1(%[ftmp6], %[src], 0x00)
418 "paddh %[ftmp7], %[ftmp3], %[ftmp4] \n\t" 419 "psllh %[ftmp7], %[ftmp7], %[ftmp10] \n\t" 420 "psubh %[ftmp7], %[ftmp7], %[ftmp2] \n\t" 421 "psubh %[ftmp7], %[ftmp7], %[ftmp5] \n\t" 422 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 423 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_5] \n\t" 424 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 425 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 426 "paddh %[ftmp1], %[ftmp1], %[ftmp6] \n\t" 427 "paddh %[ftmp7], %[ftmp7], %[ftmp1] \n\t" 428 "psrah %[ftmp7], %[ftmp7], %[ftmp11] \n\t" 429 "packushb %[ftmp7], %[ftmp7], %[ftmp7] \n\t" 430 MMI_SWC1(%[ftmp7], %[dst], 0x00)
431 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 432 MMI_LWC1(%[ftmp1], %[src], 0x00)
433 "paddh %[ftmp7], %[ftmp4], %[ftmp5] \n\t" 434 "psllh %[ftmp7], %[ftmp7], %[ftmp10] \n\t" 435 "psubh %[ftmp7], %[ftmp7], %[ftmp3] \n\t" 436 "psubh %[ftmp7], %[ftmp7], %[ftmp6] \n\t" 437 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 438 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_5] \n\t" 439 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 440 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 441 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 442 "paddh %[ftmp7], %[ftmp7], %[ftmp2] \n\t" 443 "psrah %[ftmp7], %[ftmp7], %[ftmp11] \n\t" 444 "packushb %[ftmp7], %[ftmp7], %[ftmp7] \n\t" 445 MMI_SWC1(%[ftmp7], %[dst], 0x00)
446 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 447 MMI_LWC1(%[ftmp2], %[src], 0x00)
448 "paddh %[ftmp7], %[ftmp5], %[ftmp6] \n\t" 449 "psllh %[ftmp7], %[ftmp7], %[ftmp10] \n\t" 450 "psubh %[ftmp7], %[ftmp7], %[ftmp4] \n\t" 451 "psubh %[ftmp7], %[ftmp7], %[ftmp1] \n\t" 452 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 453 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_5] \n\t" 454 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 455 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 456 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 457 "paddh %[ftmp7], %[ftmp7], %[ftmp3] \n\t" 458 "psrah %[ftmp7], %[ftmp7], %[ftmp11] \n\t" 459 "packushb %[ftmp7], %[ftmp7], %[ftmp7] \n\t" 460 MMI_SWC1(%[ftmp7], %[dst], 0x00)
461 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 462 MMI_LWC1(%[ftmp3], %[src], 0x00)
463 "paddh %[ftmp7], %[ftmp6], %[ftmp1] \n\t" 464 "psllh %[ftmp7], %[ftmp7], %[ftmp10] \n\t" 465 "psubh %[ftmp7], %[ftmp7], %[ftmp5] \n\t" 466 "psubh %[ftmp7], %[ftmp7], %[ftmp2] \n\t" 467 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 468 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_5] \n\t" 469 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t" 470 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 471 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t" 472 "paddh %[ftmp7], %[ftmp7], %[ftmp4] \n\t" 473 "psrah %[ftmp7], %[ftmp7], %[ftmp11] \n\t" 474 "packushb %[ftmp7], %[ftmp7], %[ftmp7] \n\t" 475 MMI_SWC1(%[ftmp7], %[dst], 0x00)
476 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 478 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
479 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
480 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
481 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
482 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
483 [ftmp10]
"=&f"(ftmp[10]), [ftmp11]
"=&f"(ftmp[11]),
486 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
487 : [dstStride]
"r"((
mips_reg)dstStride),
488 [srcStride]
"r"((
mips_reg)srcStride),
495 int dstStride,
int srcStride)
503 src -= 2 * srcStride;
508 ".set noreorder \n\t" 509 "dli %[tmp0], 0x02 \n\t" 510 MMI_LWC1(%[ftmp0], %[src], 0x00)
511 "mtc1 %[tmp0], %[ftmp8] \n\t" 512 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 513 "dli %[tmp0], 0x05 \n\t" 514 MMI_LWC1(%[ftmp1], %[src], 0x00)
515 "mtc1 %[tmp0], %[ftmp9] \n\t" 516 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 517 MMI_LWC1(%[ftmp2], %[src], 0x00)
518 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 519 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t" 520 MMI_LWC1(%[ftmp3], %[src], 0x00)
521 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 522 MMI_LWC1(%[ftmp4], %[src], 0x00)
523 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 524 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 525 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 526 MMI_LWC1(%[ftmp5], %[src], 0x00)
527 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t" 528 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 529 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 530 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 531 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 532 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 533 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 534 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 535 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 536 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t" 537 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 538 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 539 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 540 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 541 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 542 MMI_SWC1(%[ftmp6], %[dst], 0x00)
543 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 544 MMI_LWC1(%[ftmp0], %[src], 0x00)
545 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t" 546 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 547 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 548 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 549 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 550 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 551 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 552 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 553 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 554 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 555 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 556 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 557 MMI_SWC1(%[ftmp6], %[dst], 0x00)
558 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 559 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t" 560 MMI_LWC1(%[ftmp1], %[src], 0x00)
561 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 562 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 563 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 564 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 565 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 566 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 567 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 568 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 569 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 570 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 571 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 572 MMI_SWC1(%[ftmp6], %[dst], 0x00)
573 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 574 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 575 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 576 MMI_LWC1(%[ftmp2], %[src], 0x00)
577 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 578 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 579 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 580 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 581 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 582 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 583 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 584 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 585 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 586 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 587 MMI_SWC1(%[ftmp6], %[dst], 0x00)
588 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t" 589 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 590 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 591 MMI_LWC1(%[ftmp3], %[src], 0x00)
592 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 593 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 594 "punpcklbh %[ftmp3] , %[ftmp3], %[ftmp7] \n\t" 595 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 596 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t" 597 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 598 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t" 599 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 600 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 601 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 602 MMI_SWC1(%[ftmp6], %[dst], 0x00)
603 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t" 604 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 605 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 606 MMI_LWC1(%[ftmp4], %[src], 0x00)
607 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 608 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 609 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 610 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 611 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t" 612 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 613 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t" 614 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 615 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 616 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 617 MMI_SWC1(%[ftmp6], %[dst], 0x00)
618 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t" 619 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 620 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 621 MMI_LWC1(%[ftmp5], %[src], 0x00)
622 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 623 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 624 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 625 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 626 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t" 627 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 628 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 629 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 630 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 631 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 632 MMI_SWC1(%[ftmp6], %[dst], 0x00)
633 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t" 634 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 635 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 636 MMI_LWC1(%[ftmp0], %[src], 0x00)
637 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 638 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 639 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 640 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 641 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 642 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 643 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 644 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 645 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 646 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 647 MMI_SWC1(%[ftmp6], %[dst], 0x00)
648 "bne %[h], 0x10, 2f \n\t" 649 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 650 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t" 651 MMI_LWC1(%[ftmp1], %[src], 0x00)
652 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 653 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 654 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 655 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 656 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 657 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 658 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 659 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 660 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 661 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 662 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 663 MMI_SWC1(%[ftmp6], %[dst], 0x00)
664 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 665 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 666 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 667 MMI_LWC1(%[ftmp2], %[src], 0x00)
668 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 669 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 670 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 671 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 672 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 673 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 674 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 675 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 676 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 677 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 678 MMI_SWC1(%[ftmp6], %[dst], 0x00)
679 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t" 680 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 681 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 682 MMI_LWC1(%[ftmp3], %[src], 0x00)
683 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 684 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 685 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 686 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 687 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t" 688 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 689 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t" 690 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 691 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 692 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 693 MMI_SWC1(%[ftmp6], %[dst], 0x00)
694 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t" 695 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 696 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 697 MMI_LWC1(%[ftmp4], %[src], 0x00)
698 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 699 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 700 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 701 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 702 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t" 703 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 704 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t" 705 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 706 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 707 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 708 MMI_SWC1(%[ftmp6], %[dst], 0x00)
709 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t" 710 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 711 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 712 MMI_LWC1(%[ftmp5], %[src], 0x00)
713 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 714 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 715 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 716 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 717 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t" 718 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 719 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 720 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 721 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 722 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 723 MMI_SWC1(%[ftmp6], %[dst], 0x00)
724 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t" 725 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 726 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 727 MMI_LWC1(%[ftmp0], %[src], 0x00)
728 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 729 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 730 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 731 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 732 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 733 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 734 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 735 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 736 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 737 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 738 MMI_SWC1(%[ftmp6], %[dst], 0x00)
739 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t" 740 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 741 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 742 MMI_LWC1(%[ftmp1], %[src], 0x00)
743 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 744 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 745 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 746 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 747 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 748 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 749 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 750 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 751 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 752 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 753 MMI_SWC1(%[ftmp6], %[dst], 0x00)
754 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 755 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 756 "psllh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 757 MMI_LWC1(%[ftmp2], %[src], 0x00)
758 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 759 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 760 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 761 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 762 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 763 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 764 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 765 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 766 "psrah %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 767 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 768 MMI_SWC1(%[ftmp6], %[dst], 0x00)
769 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 772 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
773 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
774 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
775 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
776 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
779 [src]
"+&r"(src), [dst]
"+&r"(dst),
781 : [dstStride]
"r"((
mips_reg)dstStride),
782 [srcStride]
"r"((
mips_reg)srcStride),
787 src += 4 - (h + 5) * srcStride;
788 dst += 4 - h * dstStride;
793 int dstStride,
int srcStride)
804 int dstStride,
int srcStride)
809 src -= 2 * srcStride;
813 ".set noreorder \n\t" 814 "dli %[tmp0], 0x02 \n\t" 815 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t" 816 "mtc1 %[tmp0], %[ftmp9] \n\t" 817 "dli %[tmp0], 0x05 \n\t" 818 MMI_LWC1(%[ftmp0], %[src], 0x00)
819 "mtc1 %[tmp0], %[ftmp8] \n\t" 820 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 821 MMI_LWC1(%[ftmp1], %[src], 0x00)
822 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 823 MMI_LWC1(%[ftmp2], %[src], 0x00)
824 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 825 MMI_LWC1(%[ftmp3], %[src], 0x00)
826 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 827 MMI_LWC1(%[ftmp4], %[src], 0x00)
828 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 829 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 830 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 831 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 832 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 833 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 834 MMI_LWC1(%[ftmp5], %[src], 0x00)
835 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t" 836 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 837 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 838 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 839 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 840 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 841 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t" 842 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 843 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 844 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 845 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 846 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 847 MMI_LWC1(%[ftmp0], %[dst], 0x00)
848 "pavgb %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 849 MMI_SWC1(%[ftmp6], %[dst], 0x00)
850 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 851 MMI_LWC1(%[ftmp0], %[src], 0x00)
852 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t" 853 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 854 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 855 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 856 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 857 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 858 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 859 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 860 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 861 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 862 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 863 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 864 MMI_LWC1(%[ftmp1], %[dst], 0x00)
865 "pavgb %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 866 MMI_SWC1(%[ftmp6], %[dst], 0x00)
867 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 868 MMI_LWC1(%[ftmp1], %[src], 0x00)
869 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t" 870 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 871 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 872 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 873 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 874 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 875 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 876 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 877 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 878 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 879 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 880 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 881 MMI_LWC1(%[ftmp2], %[dst], 0x00)
882 "pavgb %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 883 MMI_SWC1(%[ftmp6], %[dst], 0x00)
884 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 885 MMI_LWC1(%[ftmp2], %[src], 0x00)
886 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 887 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 888 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 889 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 890 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 891 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 892 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 893 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 894 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 895 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 896 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 897 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 898 MMI_LWC1(%[ftmp3], %[dst], 0x00)
899 "pavgb %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 900 MMI_SWC1(%[ftmp6], %[dst], 0x00)
901 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 903 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
904 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
905 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
906 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
907 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
909 [src]
"+&r"(src), [dst]
"+&r"(dst)
910 : [dstStride]
"r"((
mips_reg)dstStride),
911 [srcStride]
"r"((
mips_reg)srcStride),
918 int dstStride,
int srcStride)
926 src -= 2 * srcStride;
931 ".set noreorder \n\t" 932 "dli %[tmp0], 0x02 \n\t" 933 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t" 934 "mtc1 %[tmp0], %[ftmp9] \n\t" 935 "dli %[tmp0], 0x05 \n\t" 936 MMI_LWC1(%[ftmp0], %[src], 0x00)
937 "mtc1 %[tmp0], %[ftmp8] \n\t" 938 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 939 MMI_LWC1(%[ftmp1], %[src], 0x00)
940 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 941 MMI_LWC1(%[ftmp2], %[src], 0x00)
942 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 943 MMI_LWC1(%[ftmp3], %[src], 0x00)
944 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 945 MMI_LWC1(%[ftmp4], %[src], 0x00)
946 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 947 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 948 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 949 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 950 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 951 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 952 MMI_LWC1(%[ftmp5], %[src], 0x00)
953 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t" 954 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 955 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 956 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 957 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 958 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 959 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t" 960 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 961 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 962 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 963 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 964 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 965 MMI_LWC1(%[ftmp0], %[dst], 0x00)
966 "pavgb %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 967 MMI_SWC1(%[ftmp6], %[dst], 0x00)
968 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 969 MMI_LWC1(%[ftmp0], %[src], 0x00)
970 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t" 971 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 972 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 973 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 974 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 975 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 976 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 977 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 978 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 979 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 980 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 981 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 982 MMI_LWC1(%[ftmp1], %[dst], 0x00)
983 "pavgb %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 984 MMI_SWC1(%[ftmp6], %[dst], 0x00)
985 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 986 MMI_LWC1(%[ftmp1], %[src], 0x00)
987 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t" 988 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 989 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 990 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 991 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 992 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 993 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 994 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 995 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 996 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 997 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 998 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 999 MMI_LWC1(%[ftmp2], %[dst], 0x00)
1000 "pavgb %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1001 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1002 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1003 MMI_LWC1(%[ftmp2], %[src], 0x00)
1004 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 1005 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1006 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1007 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1008 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 1009 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1010 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 1011 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1012 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 1013 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1014 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1015 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1016 MMI_LWC1(%[ftmp3], %[dst], 0x00)
1017 "pavgb %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1018 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1019 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1020 MMI_LWC1(%[ftmp3], %[src], 0x00)
1021 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t" 1022 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1023 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1024 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1025 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 1026 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1027 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t" 1028 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1029 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t" 1030 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1031 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1032 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1033 MMI_LWC1(%[ftmp4], %[dst], 0x00)
1034 "pavgb %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1035 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1036 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1037 MMI_LWC1(%[ftmp4], %[src], 0x00)
1038 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t" 1039 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1040 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1041 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1042 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 1043 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1044 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t" 1045 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1046 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t" 1047 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1048 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1049 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1050 MMI_LWC1(%[ftmp5], %[dst], 0x00)
1051 "pavgb %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1052 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1053 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1054 MMI_LWC1(%[ftmp5], %[src], 0x00)
1055 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t" 1056 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1057 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1058 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1059 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 1060 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1061 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t" 1062 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1063 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 1064 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1065 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1066 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1067 MMI_LWC1(%[ftmp0], %[dst], 0x00)
1068 "pavgb %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1069 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1070 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1071 MMI_LWC1(%[ftmp0], %[src], 0x00)
1072 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t" 1073 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1074 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1075 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1076 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 1077 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1078 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 1079 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1080 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 1081 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1082 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1083 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1084 MMI_LWC1(%[ftmp1], %[dst], 0x00)
1085 "pavgb %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1086 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1087 "bne %[h], 0x10, 2f \n\t" 1088 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1089 MMI_LWC1(%[ftmp1], %[src], 0x00)
1090 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t" 1091 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1092 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1093 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1094 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 1095 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1096 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 1097 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1098 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 1099 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1100 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1101 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1102 MMI_LWC1(%[ftmp2], %[dst], 0x00)
1103 "pavgb %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1104 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1105 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1106 MMI_LWC1(%[ftmp2], %[src], 0x00)
1107 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 1108 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1109 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1110 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1111 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 1112 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1113 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 1114 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1115 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 1116 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1117 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1118 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1119 MMI_LWC1(%[ftmp3], %[dst], 0x00)
1120 "pavgb %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1121 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1122 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1123 MMI_LWC1(%[ftmp3], %[src], 0x00)
1124 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t" 1125 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1126 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1127 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1128 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 1129 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1130 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t" 1131 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1132 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t" 1133 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1134 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1135 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1136 MMI_LWC1(%[ftmp4], %[dst], 0x00)
1137 "pavgb %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1138 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1139 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1140 MMI_LWC1(%[ftmp4], %[src], 0x00)
1141 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t" 1142 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1143 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1144 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1145 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 1146 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1147 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t" 1148 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1149 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t" 1150 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1151 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1152 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1153 MMI_LWC1(%[ftmp5], %[dst], 0x00)
1154 "pavgb %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1155 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1156 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1157 MMI_LWC1(%[ftmp5], %[src], 0x00)
1158 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t" 1159 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1160 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1161 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1162 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 1163 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1164 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t" 1165 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1166 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 1167 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1168 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1169 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1170 MMI_LWC1(%[ftmp0], %[dst], 0x00)
1171 "pavgb %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1172 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1173 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1174 MMI_LWC1(%[ftmp0], %[src], 0x00)
1175 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t" 1176 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1177 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1178 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1179 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 1180 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1181 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 1182 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1183 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 1184 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1185 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1186 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1187 MMI_LWC1(%[ftmp1], %[dst], 0x00)
1188 "pavgb %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1189 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1190 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1191 MMI_LWC1(%[ftmp1], %[src], 0x00)
1192 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t" 1193 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1194 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1195 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1196 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 1197 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1198 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 1199 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1200 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 1201 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1202 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1203 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1204 MMI_LWC1(%[ftmp2], %[dst], 0x00)
1205 "pavgb %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1206 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1207 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1208 MMI_LWC1(%[ftmp2], %[src], 0x00)
1209 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 1210 "psllh %[ftmp6], %[ftmp6], %[ftmp9] \n\t" 1211 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1212 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1213 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 1214 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1215 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 1216 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1217 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 1218 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1219 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 1220 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t" 1221 MMI_LWC1(%[ftmp3], %[dst], 0x00)
1222 "pavgb %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1223 MMI_SWC1(%[ftmp6], %[dst], 0x00)
1224 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1227 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1228 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1229 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1230 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1231 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1232 [tmp0]
"=&r"(tmp[0]),
1234 [src]
"+&r"(src), [dst]
"+&r"(dst),
1236 : [dstStride]
"r"((
mips_reg)dstStride),
1237 [srcStride]
"r"((
mips_reg)srcStride),
1242 src += 4 - (h + 5) * srcStride;
1243 dst += 4 - h * dstStride;
1248 int dstStride,
int srcStride)
1259 int dstStride,
int srcStride)
1264 int16_t *
tmp = _tmp;
1272 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1273 "dli %[tmp0], 0x09 \n\t" 1275 MMI_ULWC1(%[ftmp1], %[src], -0x02)
1276 MMI_ULWC1(%[ftmp2], %[src], -0x01)
1277 MMI_ULWC1(%[ftmp3], %[src], 0x00)
1278 MMI_ULWC1(%[ftmp4], %[src], 0x01)
1279 MMI_ULWC1(%[ftmp5], %[src], 0x02)
1280 MMI_ULWC1(%[ftmp6], %[src], 0x03)
1281 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 1282 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 1283 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 1284 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t" 1285 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t" 1286 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1287 "paddsh %[ftmp7], %[ftmp3], %[ftmp4] \n\t" 1288 "paddsh %[ftmp8], %[ftmp2], %[ftmp5] \n\t" 1289 "paddsh %[ftmp9], %[ftmp1], %[ftmp6] \n\t" 1290 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_20] \n\t" 1291 "pmullh %[ftmp8], %[ftmp8], %[ff_pw_5] \n\t" 1292 "psubsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t" 1293 "paddsh %[ftmp9], %[ftmp7], %[ftmp9] \n\t" 1294 MMI_SDC1(%[ftmp9], %[tmp], 0x00)
1295 "daddi %[tmp0], %[tmp0], -0x01 \n\t" 1296 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1297 PTR_ADDU "%[tmp], %[tmp], %[tmpStride] \n\t" 1298 "bnez %[tmp0], 1b \n\t" 1299 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1300 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1301 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1302 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1303 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1306 [tmp]
"+&r"(tmp), [
src]
"+&r"(
src)
1307 : [tmpStride]
"r"(8),
1308 [srcStride]
"r"((
mips_reg)srcStride),
1315 for (i=0; i<4; i++) {
1316 const int16_t tmpB= tmp[-8];
1317 const int16_t tmpA= tmp[-4];
1318 const int16_t tmp0= tmp[ 0];
1319 const int16_t tmp1= tmp[ 4];
1320 const int16_t tmp2= tmp[ 8];
1321 const int16_t tmp3= tmp[12];
1322 const int16_t tmp4= tmp[16];
1323 const int16_t tmp5= tmp[20];
1324 const int16_t tmp6= tmp[24];
1325 op2_put(dst[0*dstStride], (tmp0+tmp1)*20 - (tmpA+tmp2)*5 + (tmpB+tmp3));
1326 op2_put(dst[1*dstStride], (tmp1+tmp2)*20 - (tmp0+tmp3)*5 + (tmpA+tmp4));
1327 op2_put(dst[2*dstStride], (tmp2+tmp3)*20 - (tmp1+tmp4)*5 + (tmp0+tmp5));
1328 op2_put(dst[3*dstStride], (tmp3+tmp4)*20 - (tmp2+tmp5)*5 + (tmp1+tmp6));
1335 const uint8_t *
src, ptrdiff_t tmpStride, ptrdiff_t srcStride,
int size)
1337 int w = (size + 8) >> 2;
1342 src -= 2 * srcStride + 2;
1346 "dli %[tmp0], 0x02 \n\t" 1347 MMI_ULWC1(%[ftmp0], %[src], 0x00)
1348 "mtc1 %[tmp0], %[ftmp10] \n\t" 1349 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1350 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t" 1351 MMI_ULWC1(%[ftmp1], %[src], 0x00)
1352 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1353 MMI_ULWC1(%[ftmp2], %[src], 0x00)
1354 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1355 MMI_ULWC1(%[ftmp3], %[src], 0x00)
1356 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1357 MMI_ULWC1(%[ftmp4], %[src], 0x00)
1358 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1359 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 1360 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 1361 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 1362 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 1363 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 1364 MMI_ULWC1(%[ftmp5], %[src], 0x00)
1365 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t" 1366 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1367 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t" 1368 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1369 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1370 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 1371 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1372 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 1373 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1374 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1375 MMI_SDC1(%[ftmp6], %[tmp], 0x00)
1376 MMI_ULWC1(%[ftmp0], %[src], 0x00)
1377 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t" 1378 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1379 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 1380 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1381 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1382 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 1383 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1384 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 1385 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1386 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1387 MMI_SDC1(%[ftmp6], %[tmp], 0x30)
1388 MMI_ULWC1(%[ftmp1], %[src], 0x00)
1389 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t" 1390 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1391 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 1392 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1393 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1394 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 1395 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1396 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 1397 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1398 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1399 MMI_SDC1(%[ftmp6], %[tmp], 0x60)
1400 MMI_ULWC1(%[ftmp2], %[src], 0x00)
1401 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 1402 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1403 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 1404 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1405 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1406 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 1407 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1408 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 1409 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1410 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1411 MMI_SDC1(%[ftmp6], %[tmp], 0x90)
1412 MMI_ULWC1(%[ftmp3], %[src], 0x00)
1413 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t" 1414 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1415 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t" 1416 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1417 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1418 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 1419 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1420 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t" 1421 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1422 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1423 MMI_SDC1(%[ftmp6], %[tmp], 0xc0)
1424 MMI_ULWC1(%[ftmp4], %[src], 0x00)
1425 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t" 1426 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1427 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t" 1428 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1429 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1430 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 1431 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1432 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t" 1433 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1434 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1435 MMI_SDC1(%[ftmp6], %[tmp], 0xf0)
1436 MMI_ULWC1(%[ftmp5], %[src], 0x00)
1437 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t" 1438 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1439 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t" 1440 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1441 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1442 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 1443 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1444 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 1445 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1446 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1447 MMI_SDC1(%[ftmp6], %[tmp], 0x120)
1448 MMI_ULWC1(%[ftmp0], %[src], 0x00)
1449 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t" 1450 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1451 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 1452 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1453 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1454 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 1455 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1456 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 1457 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1458 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1459 MMI_SDC1(%[ftmp6], %[tmp], 0x150)
1460 "bne %[size], 0x10, 2f \n\t" 1462 MMI_ULWC1(%[ftmp1], %[src], 0x00)
1463 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t" 1464 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1465 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 1466 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1467 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1468 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 1469 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1470 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 1471 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1472 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1473 MMI_SDC1(%[ftmp6], %[tmp], 0x180)
1474 MMI_ULWC1(%[ftmp2], %[src], 0x00)
1475 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 1476 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1477 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 1478 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1479 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1480 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 1481 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1482 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 1483 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1484 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1485 MMI_SDC1(%[ftmp6], %[tmp], 0x1b0)
1486 MMI_ULWC1(%[ftmp3], %[src], 0x00)
1487 "paddh %[ftmp6], %[ftmp0], %[ftmp1] \n\t" 1488 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1489 "paddh %[ftmp4], %[ftmp4], %[ff_pw_16] \n\t" 1490 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1491 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1492 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 1493 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1494 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t" 1495 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1496 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1497 MMI_SDC1(%[ftmp6], %[tmp], 0x1e0)
1498 MMI_ULWC1(%[ftmp4], %[src], 0x00)
1499 "paddh %[ftmp6], %[ftmp1], %[ftmp2] \n\t" 1500 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1501 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t" 1502 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1503 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1504 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 1505 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1506 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t" 1507 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1508 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1509 MMI_SDC1(%[ftmp6], %[tmp], 0x210)
1510 MMI_ULWC1(%[ftmp5], %[src], 0x00)
1511 "paddh %[ftmp6], %[ftmp2], %[ftmp3] \n\t" 1512 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1513 "paddh %[ftmp0], %[ftmp0], %[ff_pw_16] \n\t" 1514 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1515 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1516 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 1517 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1518 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 1519 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1520 "paddh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1521 MMI_SDC1(%[ftmp6], %[tmp], 0x240)
1522 MMI_ULWC1(%[ftmp0], %[src], 0x00)
1523 "paddh %[ftmp6], %[ftmp3], %[ftmp4] \n\t" 1524 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1525 "paddh %[ftmp1], %[ftmp1], %[ff_pw_16] \n\t" 1526 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1527 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t" 1528 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 1529 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1530 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 1531 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1532 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1533 MMI_SDC1(%[ftmp6], %[tmp], 0x270)
1534 MMI_ULWC1(%[ftmp1], %[src], 0x00)
1535 "paddh %[ftmp6], %[ftmp4], %[ftmp5] \n\t" 1536 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1537 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 1538 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1539 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1540 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 1541 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1542 "paddh %[ftmp2], %[ftmp2], %[ftmp1] \n\t" 1543 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1544 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t" 1545 MMI_SDC1(%[ftmp6], %[tmp], 0x2a0)
1546 MMI_ULWC1(%[ftmp2], %[src], 0x00)
1547 "paddh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 1548 "psllh %[ftmp6], %[ftmp6], %[ftmp10] \n\t" 1549 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 1550 "psubh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1551 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t" 1552 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 1553 "pmullh %[ftmp6], %[ftmp6], %[ff_pw_5] \n\t" 1554 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" 1555 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1556 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" 1557 MMI_SDC1(%[ftmp6], %[tmp], 0x2d0)
1559 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1560 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1561 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1562 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1563 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1564 [ftmp10]
"=&f"(ftmp[10]),
1569 [srcStride]
"r"((
mips_reg)srcStride),
1575 src += 4 - (size + 5) * srcStride;
1580 int16_t *
tmp, ptrdiff_t dstStride, ptrdiff_t tmpStride,
int size)
1591 "dli %[tmp0], 0x02 \n\t" 1592 "mtc1 %[tmp0], %[ftmp8] \n\t" 1593 "dli %[tmp0], 0x06 \n\t" 1594 "mtc1 %[tmp0], %[ftmp9] \n\t" 1596 MMI_LDC1(%[ftmp0], %[tmp], 0x00)
1597 MMI_LDC1(%[ftmp3], %[tmp], 0x08)
1598 MMI_LDC1(%[ftmp6], %[tmp], 0x10)
1599 MMI_ULDC1(%[ftmp1], %[tmp], 0x02)
1600 MMI_ULDC1(%[ftmp4], %[tmp], 0x0a)
1601 MMI_ULDC1(%[ftmp5], %[tmp], 0x12)
1602 "paddh %[ftmp0], %[ftmp0], %[ftmp4] \n\t" 1603 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 1604 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" 1605 "paddh %[ftmp4], %[ftmp4], %[ftmp6] \n\t" 1606 MMI_ULDC1(%[ftmp2], %[tmp], 0x04)
1607 MMI_ULDC1(%[ftmp6], %[tmp], 0x06)
1608 MMI_ULDC1(%[ftmp5], %[tmp], 0x0c)
1609 MMI_ULDC1(%[ftmp7], %[tmp], 0x0e)
1610 "paddh %[ftmp2], %[ftmp2], %[ftmp6] \n\t" 1611 "paddh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 1612 "psubh %[ftmp0], %[ftmp0], %[ftmp1] \n\t" 1613 "psubh %[ftmp3], %[ftmp3], %[ftmp4] \n\t" 1614 "psrah %[ftmp0], %[ftmp0], %[ftmp8] \n\t" 1615 "psrah %[ftmp3], %[ftmp3], %[ftmp8] \n\t" 1616 "psubh %[ftmp0], %[ftmp0], %[ftmp1] \n\t" 1617 "psubh %[ftmp3], %[ftmp3], %[ftmp4] \n\t" 1618 "paddsh %[ftmp0], %[ftmp0], %[ftmp2] \n\t" 1619 "paddsh %[ftmp3] , %[ftmp3], %[ftmp5] \n\t" 1620 "psrah %[ftmp0], %[ftmp0], %[ftmp8] \n\t" 1621 "psrah %[ftmp3], %[ftmp3], %[ftmp8] \n\t" 1622 "paddh %[ftmp0], %[ftmp0], %[ftmp2] \n\t" 1623 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" 1624 "psrah %[ftmp0], %[ftmp0], %[ftmp9] \n\t" 1625 "psrah %[ftmp3], %[ftmp3], %[ftmp9] \n\t" 1626 "packushb %[ftmp0], %[ftmp0], %[ftmp3] \n\t" 1627 "addi %[h], %[h], -0x01 \n\t" 1628 MMI_SDC1(%[ftmp0], %[dst], 0x00)
1630 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1631 "bnez %[h], 1b \n\t" 1632 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1633 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1634 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1635 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1636 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1639 [tmp]
"+&r"(tmp), [dst]
"+&r"(dst),
1641 : [dstStride]
"r"((
mips_reg)dstStride)
1645 tmp += 8 - size * 24;
1646 dst += 8 - size * dstStride;
1651 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1652 ptrdiff_t srcStride,
int size)
1659 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1660 ptrdiff_t srcStride)
1667 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1668 ptrdiff_t srcStride)
1675 const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
1684 "dli %[tmp0], 0x02 \n\t" 1685 "mtc1 %[tmp0], %[ftmp7] \n\t" 1686 "dli %[tmp0], 0x05 \n\t" 1687 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1688 "mtc1 %[tmp0], %[ftmp8] \n\t" 1690 MMI_ULDC1(%[ftmp1], %[src], 0x00)
1691 MMI_ULDC1(%[ftmp3], %[src], 0x01)
1692 "punpckhbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 1693 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 1694 "punpckhbh %[ftmp4], %[ftmp3], %[ftmp0] \n\t" 1695 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 1696 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 1697 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 1698 "psllh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 1699 "psllh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 1700 MMI_ULDC1(%[ftmp3], %[src], -0x01)
1701 MMI_ULDC1(%[ftmp5], %[src], 0x02)
1702 "punpckhbh %[ftmp4], %[ftmp3], %[ftmp0] \n\t" 1703 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 1704 "punpckhbh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 1705 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t" 1706 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 1707 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" 1708 "psubh %[ftmp2], %[ftmp2], %[ftmp6] \n\t" 1709 "psubh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 1710 "pmullh %[ftmp2], %[ftmp2], %[ff_pw_5] \n\t" 1711 "pmullh %[ftmp1], %[ftmp1], %[ff_pw_5] \n\t" 1712 MMI_ULWC1(%[ftmp3], %[src], -0x02)
1713 MMI_ULWC1(%[ftmp6], %[src], 0x07)
1714 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 1715 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1716 "paddh %[ftmp3], %[ftmp3], %[ftmp4] \n\t" 1717 "paddh %[ftmp5], %[ftmp5], %[ftmp6] \n\t" 1718 "paddh %[ftmp3], %[ftmp3], %[ff_pw_16] \n\t" 1719 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t" 1720 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 1721 "paddh %[ftmp2], %[ftmp2], %[ftmp5] \n\t" 1722 "psrah %[ftmp1], %[ftmp1], %[ftmp8] \n\t" 1723 "psrah %[ftmp2], %[ftmp2], %[ftmp8] \n\t" 1724 MMI_LDC1(%[ftmp5], %[src2], 0x00)
1725 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 1726 PTR_ADDU "%[src], %[src], %[dstStride] \n\t" 1727 "pavgb %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 1729 MMI_SDC1(%[ftmp1], %[dst], 0x00)
1730 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 1731 PTR_ADDU "%[src2], %[src2], %[src2Stride] \n\t" 1732 "bgtz %[h], 1b \n\t" 1733 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1734 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1735 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1736 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1737 [ftmp8]
"=&f"(ftmp[8]),
1738 [tmp0]
"=&r"(tmp[0]),
1741 [
src]
"+&r"(
src), [dst]
"+&r"(dst),
1742 [src2]
"+&r"(src2), [h]
"+&r"(h)
1743 : [src2Stride]
"r"((
mips_reg)src2Stride),
1744 [dstStride]
"r"((
mips_reg)dstStride),
1751 const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride,
int h)
1760 "dli %[tmp0], 0x05 \n\t" 1761 MMI_ULDC1(%[ftmp0], %[src16], 0x00)
1762 "mtc1 %[tmp0], %[ftmp6] \n\t" 1763 MMI_ULDC1(%[ftmp1], %[src16], 0x08)
1764 MMI_ULDC1(%[ftmp2], %[src16], 0x30)
1765 MMI_ULDC1(%[ftmp3], %[src16], 0x38)
1766 "psrah %[ftmp0], %[ftmp0], %[ftmp6] \n\t" 1767 "psrah %[ftmp1], %[ftmp1], %[ftmp6] \n\t" 1768 "psrah %[ftmp2], %[ftmp2], %[ftmp6] \n\t" 1769 "psrah %[ftmp3], %[ftmp3], %[ftmp6] \n\t" 1770 "packushb %[ftmp0], %[ftmp0], %[ftmp1] \n\t" 1771 "packushb %[ftmp2], %[ftmp2], %[ftmp3] \n\t" 1772 MMI_LDC1(%[ftmp5], %[src8], 0x00)
1773 MMI_LDXC1(%[ftmp4], %[src8], %[src8Stride], 0x00)
1774 "pavgb %[ftmp0], %[ftmp0], %[ftmp5] \n\t" 1775 "pavgb %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 1776 MMI_SDC1(%[ftmp0], %[dst], 0x00)
1777 MMI_SDXC1(%[ftmp2], %[dst], %[dstStride], 0x00)
1778 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1779 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1780 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1781 [ftmp6]
"=&f"(ftmp[6]),
1785 : [src8]
"r"(src8), [src16]
"r"(src16),
1787 [src8Stride]
"r"((
mips_reg)src8Stride),
1788 [dstStride]
"r"((
mips_reg)dstStride)
1792 src8 += 2 * src8Stride;
1794 dst += 2 * dstStride;
1799 const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
1805 src += 8 * dstStride;
1806 dst += 8 * dstStride;
1807 src2 += 8 * src2Stride;
1815 const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride,
int h)
1823 int dstStride,
int srcStride)
1828 int16_t *
tmp = _tmp;
1836 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1837 "dli %[tmp0], 0x09 \n\t" 1839 MMI_ULWC1(%[ftmp1], %[src], -0x02)
1840 MMI_ULWC1(%[ftmp2], %[src], -0x01)
1841 MMI_ULWC1(%[ftmp3], %[src], 0x00)
1842 MMI_ULWC1(%[ftmp4], %[src], 0x01)
1843 MMI_ULWC1(%[ftmp5], %[src], 0x02)
1844 MMI_ULWC1(%[ftmp6], %[src], 0x03)
1845 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 1846 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 1847 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 1848 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t" 1849 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t" 1850 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 1851 "paddsh %[ftmp7], %[ftmp3], %[ftmp4] \n\t" 1852 "paddsh %[ftmp8], %[ftmp2], %[ftmp5] \n\t" 1853 "paddsh %[ftmp9], %[ftmp1], %[ftmp6] \n\t" 1854 "pmullh %[ftmp7], %[ftmp7], %[ff_pw_20] \n\t" 1855 "pmullh %[ftmp8], %[ftmp8], %[ff_pw_5] \n\t" 1856 "psubsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t" 1857 "paddsh %[ftmp9], %[ftmp7], %[ftmp9] \n\t" 1858 MMI_SDC1(%[ftmp9], %[tmp], 0x00)
1859 "daddi %[tmp0], %[tmp0], -0x01 \n\t" 1860 PTR_ADDU "%[src], %[src], %[srcStride] \n\t" 1861 PTR_ADDU "%[tmp], %[tmp], %[tmpStride] \n\t" 1862 "bnez %[tmp0], 1b \n\t" 1863 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1864 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1865 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1866 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1867 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1870 [tmp]
"+&r"(tmp), [
src]
"+&r"(
src)
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)
1966 tmp += 8 - size * 24;
1967 dst += 8 - size * dstStride;
1972 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1973 ptrdiff_t srcStride,
int size)
1980 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1981 ptrdiff_t srcStride)
1988 const uint8_t *
src, ptrdiff_t dstStride, ptrdiff_t tmpStride,
1989 ptrdiff_t srcStride)
1996 const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
2004 "dli %[tmp1], 0x02 \n\t" 2005 "ori %[tmp0], $0, 0x8 \n\t" 2006 "mtc1 %[tmp1], %[ftmp7] \n\t" 2007 "dli %[tmp1], 0x05 \n\t" 2008 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 2009 "mtc1 %[tmp1], %[ftmp8] \n\t" 2011 MMI_ULDC1(%[ftmp1], %[src], 0x00)
2012 MMI_ULDC1(%[ftmp2], %[src], 0x01)
2013 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 2014 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 2015 "punpckhbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t" 2016 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 2017 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 2018 "paddh %[ftmp3], %[ftmp3], %[ftmp4] \n\t" 2019 "psllh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 2020 "psllh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 2021 MMI_ULDC1(%[ftmp2], %[src], -0x01)
2022 MMI_ULDC1(%[ftmp5], %[src], 0x02)
2023 "punpckhbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t" 2024 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 2025 "punpckhbh %[ftmp6], %[ftmp5], %[ftmp0] \n\t" 2026 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t" 2027 "paddh %[ftmp2], %[ftmp2], %[ftmp5] \n\t" 2028 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t" 2029 "psubh %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 2030 "psubh %[ftmp3], %[ftmp3], %[ftmp6] \n\t" 2031 "pmullh %[ftmp1], %[ftmp1], %[ff_pw_5] \n\t" 2032 "pmullh %[ftmp3], %[ftmp3], %[ff_pw_5] \n\t" 2033 MMI_ULWC1(%[ftmp2], %[src], -0x02)
2034 MMI_ULWC1(%[ftmp6], %[src], 0x07)
2035 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 2036 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 2037 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 2038 "paddh %[ftmp5], %[ftmp5], %[ftmp6] \n\t" 2039 "paddh %[ftmp2], %[ftmp2], %[ff_pw_16] \n\t" 2040 "paddh %[ftmp5], %[ftmp5], %[ff_pw_16] \n\t" 2041 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 2042 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" 2043 "psrah %[ftmp1], %[ftmp1], %[ftmp8] \n\t" 2044 "psrah %[ftmp3], %[ftmp3], %[ftmp8] \n\t" 2045 MMI_LDC1(%[ftmp5], %[src2], 0x00)
2046 "packushb %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 2047 MMI_LDC1(%[ftmp9], %[dst], 0x00)
2048 "pavgb %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 2049 "pavgb %[ftmp1], %[ftmp1], %[ftmp9] \n\t" 2050 PTR_ADDU "%[src], %[src], %[dstStride] \n\t" 2051 MMI_SDC1(%[ftmp1], %[dst], 0x00)
2052 "daddi %[tmp0], %[tmp0], -0x01 \n\t" 2053 PTR_ADDU "%[dst], %[dst], %[dstStride] \n\t" 2054 PTR_ADDU "%[src2], %[src2], %[src2Stride] \n\t" 2055 "bgtz %[tmp0], 1b \n\t" 2056 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2057 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2058 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2059 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2060 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
2061 [tmp0]
"=&r"(tmp[0]), [tmp1]
"=&r"(tmp[1]),
2064 [dst]
"+&r"(dst), [src]
"+&r"(src),
2066 : [dstStride]
"r"((
mips_reg)dstStride),
2067 [src2Stride]
"r"((
mips_reg)src2Stride),
2074 const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t src2Stride)
2080 src += 8 * dstStride;
2081 dst += 8 * dstStride;
2082 src2 += 8 * src2Stride;
2090 const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride,
int b)
2099 "dli %[tmp0], 0x05 \n\t" 2100 MMI_ULDC1(%[ftmp0], %[src16], 0x00)
2101 "mtc1 %[tmp0], %[ftmp6] \n\t" 2102 MMI_ULDC1(%[ftmp1], %[src16], 0x08)
2103 MMI_ULDC1(%[ftmp2], %[src16], 0x30)
2104 MMI_ULDC1(%[ftmp3], %[src16], 0x38)
2105 "psrah %[ftmp0], %[ftmp0], %[ftmp6] \n\t" 2106 "psrah %[ftmp1], %[ftmp1], %[ftmp6] \n\t" 2107 "psrah %[ftmp2], %[ftmp2], %[ftmp6] \n\t" 2108 "psrah %[ftmp3], %[ftmp3], %[ftmp6] \n\t" 2109 "packushb %[ftmp0], %[ftmp0], %[ftmp1] \n\t" 2110 MMI_LDC1(%[ftmp4], %[src8], 0x00)
2111 MMI_LDXC1(%[ftmp5], %[src8], %[src8Stride], 0x00)
2112 "packushb %[ftmp2], %[ftmp2], %[ftmp3] \n\t" 2113 "pavgb %[ftmp0], %[ftmp0], %[ftmp4] \n\t" 2114 "pavgb %[ftmp2], %[ftmp2], %[ftmp5] \n\t" 2115 MMI_LDC1(%[ftmp7], %[dst], 0x00)
2116 "pavgb %[ftmp0], %[ftmp0], %[ftmp7] \n\t" 2117 MMI_SDC1(%[ftmp0], %[dst], 0x00)
2118 MMI_LDXC1(%[ftmp7], %[dst], %[dstStride], 0x00)
2119 "pavgb %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 2120 MMI_SDXC1(%[ftmp2], %[dst], %[dstStride], 0x00)
2121 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2122 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2123 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2124 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2128 : [src8]
"r"(src8), [src16]
"r"(src16),
2130 [src8Stride]
"r"((
mips_reg)src8Stride),
2131 [dstStride]
"r"((
mips_reg)dstStride)
2135 src8 += 2 * src8Stride;
2137 dst += 2 * dstStride;
2142 const uint8_t *src8, ptrdiff_t dstStride, ptrdiff_t src8Stride,
int b)
2182 uint8_t *
const full_mid= full + 8;
2193 uint8_t *
const full_mid= full + 8;
2202 uint8_t *
const full_mid= full + 8;
2213 uint8_t *
const full_mid= full + 8;
2226 uint8_t *
const full_mid= full + 8;
2239 uint8_t *
const full_mid= full + 8;
2252 uint8_t *
const full_mid= full + 8;
2291 uint8_t *
const full_mid= full + 8;
2304 uint8_t *
const full_mid= full + 8;
2346 uint8_t *
const full_mid= full + 8;
2357 uint8_t *
const full_mid= full + 8;
2366 uint8_t *
const full_mid= full + 8;
2377 uint8_t *
const full_mid= full + 8;
2390 uint8_t *
const full_mid= full + 8;
2403 uint8_t *
const full_mid= full + 8;
2416 uint8_t *
const full_mid= full + 8;
2455 uint8_t *
const full_mid= full + 8;
2468 uint8_t *
const full_mid= full + 8;
2510 uint8_t *
const full_mid= full + 16;
2521 uint8_t *
const full_mid= full + 16;
2530 uint8_t *
const full_mid= full + 16;
2541 uint8_t *
const full_mid= full + 16;
2554 uint8_t *
const full_mid= full + 16;
2567 uint8_t *
const full_mid= full + 16;
2580 uint8_t *
const full_mid= full + 16;
2602 int16_t *
const halfV = (int16_t *) (temp + 64);
2613 int16_t *
const halfV = (int16_t *) (temp + 64);
2624 int16_t *
const halfV = (int16_t *) (temp + 64);
2635 int16_t *
const halfV = (int16_t *) (temp + 64);
2674 uint8_t *
const full_mid= full + 16;
2685 uint8_t *
const full_mid= full + 16;
2694 uint8_t *
const full_mid= full + 16;
2705 uint8_t *
const full_mid= full + 16;
2718 uint8_t *
const full_mid= full + 16;
2731 uint8_t *
const full_mid= full + 16;
2744 uint8_t *
const full_mid= full + 16;
2766 int16_t *
const halfV = (int16_t *) (temp + 64);
2777 int16_t *
const halfV = (int16_t *) (temp + 64);
2788 int16_t *
const halfV = (int16_t *) (temp + 64);
2799 int16_t *
const halfV = (int16_t *) (temp + 64);
2838 uint8_t *
const full_mid= full + 32;
2849 uint8_t *
const full_mid= full + 32;
2858 uint8_t *
const full_mid= full + 32;
2869 uint8_t *
const full_mid= full + 32;
2882 uint8_t *
const full_mid= full + 32;
2895 uint8_t *
const full_mid= full + 32;
2908 uint8_t *
const full_mid= full + 32;
2930 int16_t *
const halfV = (int16_t *) (temp + 256);
2941 int16_t *
const halfV = (int16_t *) (temp + 256);
2952 int16_t *
const halfV = (int16_t *) (temp + 256);
2963 int16_t *
const halfV = (int16_t *) (temp + 256);
3002 uint8_t *
const full_mid= full + 32;
3013 uint8_t *
const full_mid= full + 32;
3022 uint8_t *
const full_mid= full + 32;
3033 uint8_t *
const full_mid= full + 32;
3046 uint8_t *
const full_mid= full + 32;
3059 uint8_t *
const full_mid= full + 32;
3072 uint8_t *
const full_mid= full + 32;
3094 int16_t *
const halfV = (int16_t *) (temp + 256);
3105 int16_t *
const halfV = (int16_t *) (temp + 256);
3116 int16_t *
const halfV = (int16_t *) (temp + 256);
3127 int16_t *
const halfV = (int16_t *) (temp + 256);
void ff_put_h264_qpel16_mc02_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_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_avg_h264_qpel8_mc00_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)
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_h264_qpel4_mc20_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_put_h264_qpel8_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel4_v_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_put_h264_qpel16_mc12_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)
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_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc11_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)
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_mc33_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_pixels16_l2_8_mmi(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h)
void ff_put_h264_qpel4_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
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)
static void avg_h264_qpel8_h_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_put_h264_qpel4_mc12_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_avg_h264_qpel16_mc21_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc11_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc02_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_put_h264_qpel4_mc13_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)
void ff_avg_h264_qpel4_mc10_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc33_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)
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)
void ff_avg_h264_qpel16_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc02_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)
static void avg_h264_qpel16_h_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
static void put_h264_qpel4_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_put_h264_qpel8_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static int aligned(int val)
void ff_avg_h264_qpel4_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel4_mc23_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_qpel16_mc10_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)
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_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_h264_qpel4_mc12_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_put_h264_qpel4_mc11_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)
static void put_h264_qpel4_hv_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_h264_qpel16_mc23_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)
void ff_avg_h264_qpel4_mc30_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc03_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_qpel8or16_hv2_lowpass_mmi(uint8_t *dst, int16_t *tmp, ptrdiff_t dstStride, ptrdiff_t tmpStride, int size)
void ff_avg_h264_qpel4_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_pixels8_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int32_t h)
void ff_put_h264_qpel16_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc30_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)
void ff_avg_h264_qpel8_mc12_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)
void ff_avg_h264_qpel8_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)
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)
static void avg_h264_qpel8or16_hv2_lowpass_mmi(uint8_t *dst, int16_t *tmp, ptrdiff_t dstStride, ptrdiff_t tmpStride, int size)
static void copy_block16_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
static void put_h264_qpel16_v_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_put_h264_qpel4_mc03_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_mc20_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_h264_qpel16_mc33_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)
void ff_avg_h264_qpel16_mc13_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc10_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)
static void avg_h264_qpel16_v_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_h264_qpel8_mc03_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
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_qpel4_mc22_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)
void ff_put_h264_qpel8_mc22_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_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)
void ff_put_h264_qpel16_mc11_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel8_v_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
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_mc02_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_pixels16_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int32_t h)
void ff_avg_h264_qpel4_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel4_mc00_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_put_h264_qpel8_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_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_mc03_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc30_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void copy_block8_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
void ff_avg_h264_qpel8_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_h264_qpel4_hv_lowpass_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
static void copy_block4_mmi(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
void ff_put_h264_qpel16_mc30_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_avg_h264_qpel16_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_pixels4_8_mmi(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int32_t h)
void ff_avg_h264_qpel4_mc21_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_put_h264_qpel4_mc22_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc21_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_put_h264_qpel16_mc13_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_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_mc21_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_avg_h264_qpel8_mc23_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_qpel8_mc23_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc10_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc13_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_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_h264_qpel16_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)