32 const int A = (8 - x) * (8 - y);
33 const int B = x * (8 - y);
34 const int C = (8 - x) * y;
44 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 45 "dli %[tmp0], 0x06 \n\t" 46 "pshufh %[A], %[A], %[ftmp0] \n\t" 47 "pshufh %[B], %[B], %[ftmp0] \n\t" 48 "mtc1 %[tmp0], %[ftmp9] \n\t" 49 "pshufh %[C], %[C], %[ftmp0] \n\t" 50 "pshufh %[D], %[D], %[ftmp0] \n\t" 53 PTR_ADDU "%[addr0], %[src], %[stride] \n\t" 54 MMI_ULDC1(%[ftmp1], %[src], 0x00)
55 MMI_ULDC1(%[ftmp2], %[src], 0x01)
56 MMI_ULDC1(%[ftmp3], %[addr0], 0x00)
57 MMI_ULDC1(%[ftmp4], %[addr0], 0x01)
59 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 60 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t" 61 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t" 62 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t" 63 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 64 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t" 65 "paddh %[ftmp1], %[ftmp5], %[ftmp7] \n\t" 66 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t" 67 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t" 68 "paddh %[ftmp2], %[ftmp6], %[ftmp8] \n\t" 70 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 71 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t" 72 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t" 73 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t" 74 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 75 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t" 76 "paddh %[ftmp3], %[ftmp5], %[ftmp7] \n\t" 77 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t" 78 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t" 79 "paddh %[ftmp4], %[ftmp6], %[ftmp8] \n\t" 81 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 82 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 83 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 84 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 85 "psrlh %[ftmp1], %[ftmp1], %[ftmp9] \n\t" 86 "psrlh %[ftmp2], %[ftmp2], %[ftmp9] \n\t" 87 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 88 "addi %[h], %[h], -0x01 \n\t" 89 MMI_SDC1(%[ftmp1], %[dst], 0x00)
90 PTR_ADDU "%[src], %[src], %[stride] \n\t" 91 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 93 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
94 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
95 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
96 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
97 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
100 [addr0]
"=&r"(addr[0]),
101 [dst]
"+&r"(dst), [src]
"+&r"(src),
104 [
A]
"f"(
A), [B]
"f"(B),
109 const int step = C ?
stride : 1;
112 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 113 "dli %[tmp0], 0x06 \n\t" 114 "pshufh %[A], %[A], %[ftmp0] \n\t" 115 "pshufh %[E], %[E], %[ftmp0] \n\t" 116 "mtc1 %[tmp0], %[ftmp7] \n\t" 119 PTR_ADDU "%[addr0], %[src], %[step] \n\t" 120 MMI_ULDC1(%[ftmp1], %[src], 0x00)
121 MMI_ULDC1(%[ftmp2], %[addr0], 0x00)
123 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 124 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t" 125 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t" 126 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 127 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 128 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 129 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t" 130 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 131 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 132 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t" 134 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 135 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 136 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 137 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 138 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 139 "addi %[h], %[h], -0x01 \n\t" 140 MMI_SDC1(%[ftmp1], %[dst], 0x00)
141 PTR_ADDU "%[src], %[src], %[stride] \n\t" 142 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 144 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
145 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
146 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
147 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
150 [addr0]
"=&r"(addr[0]),
151 [dst]
"+&r"(dst), [src]
"+&r"(src),
160 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 161 "dli %[tmp0], 0x06 \n\t" 162 "pshufh %[A], %[A], %[ftmp0] \n\t" 163 "mtc1 %[tmp0], %[ftmp4] \n\t" 166 MMI_ULDC1(%[ftmp1], %[src], 0x00)
167 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 168 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 169 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 170 "pmullh %[ftmp2], %[ftmp3], %[A] \n\t" 171 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 172 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 173 "psrlh %[ftmp1], %[ftmp1], %[ftmp4] \n\t" 174 "psrlh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 175 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 176 PTR_ADDU "%[src], %[src], %[stride] \n\t" 177 MMI_SDC1(%[ftmp1], %[dst], 0x00)
179 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 180 MMI_ULDC1(%[ftmp1], %[src], 0x00)
181 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 182 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 183 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 184 "pmullh %[ftmp2], %[ftmp3], %[A] \n\t" 185 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 186 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 187 "psrlh %[ftmp1], %[ftmp1], %[ftmp4] \n\t" 188 "psrlh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 189 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 190 "addi %[h], %[h], -0x02 \n\t" 191 MMI_SDC1(%[ftmp1], %[dst], 0x00)
193 PTR_ADDU "%[src], %[src], %[stride] \n\t" 194 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 196 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
197 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
198 [ftmp4]
"=&f"(ftmp[4]),
201 [dst]
"+&r"(dst), [src]
"+&r"(src),
213 const int A = (8 - x) * (8 - y);
214 const int B = x * (8 - y);
215 const int C = (8 - x) * y;
225 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 226 "dli %[tmp0], 0x06 \n\t" 227 "pshufh %[A], %[A], %[ftmp0] \n\t" 228 "pshufh %[B], %[B], %[ftmp0] \n\t" 229 "mtc1 %[tmp0], %[ftmp9] \n\t" 230 "pshufh %[C], %[C], %[ftmp0] \n\t" 231 "pshufh %[D], %[D], %[ftmp0] \n\t" 234 PTR_ADDU "%[addr0], %[src], %[stride] \n\t" 235 MMI_ULDC1(%[ftmp1], %[src], 0x00)
236 MMI_ULDC1(%[ftmp2], %[src], 0x01)
237 MMI_ULDC1(%[ftmp3], %[addr0], 0x00)
238 MMI_ULDC1(%[ftmp4], %[addr0], 0x01)
240 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 241 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t" 242 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t" 243 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t" 244 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 245 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t" 246 "paddh %[ftmp1], %[ftmp5], %[ftmp7] \n\t" 247 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t" 248 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t" 249 "paddh %[ftmp2], %[ftmp6], %[ftmp8] \n\t" 251 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 252 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t" 253 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t" 254 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t" 255 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 256 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t" 257 "paddh %[ftmp3], %[ftmp5], %[ftmp7] \n\t" 258 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t" 259 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t" 260 "paddh %[ftmp4], %[ftmp6], %[ftmp8] \n\t" 262 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 263 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 264 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 265 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 266 "psrlh %[ftmp1], %[ftmp1], %[ftmp9] \n\t" 267 "psrlh %[ftmp2], %[ftmp2], %[ftmp9] \n\t" 268 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 269 MMI_LDC1(%[ftmp2], %[dst], 0x00)
270 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 271 "addi %[h], %[h], -0x01 \n\t" 272 MMI_SDC1(%[ftmp1], %[dst], 0x00)
273 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 274 PTR_ADDU "%[src], %[src], %[stride] \n\t" 276 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
277 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
278 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
279 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
280 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
283 [addr0]
"=&r"(addr[0]),
284 [dst]
"+&r"(dst), [src]
"+&r"(src),
287 [
A]
"f"(
A), [B]
"f"(B),
292 const int step = C ?
stride : 1;
295 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 296 "dli %[tmp0], 0x06 \n\t" 297 "pshufh %[A], %[A], %[ftmp0] \n\t" 298 "pshufh %[E], %[E], %[ftmp0] \n\t" 299 "mtc1 %[tmp0], %[ftmp7] \n\t" 302 PTR_ADDU "%[addr0], %[src], %[step] \n\t" 303 MMI_ULDC1(%[ftmp1], %[src], 0x00)
304 MMI_ULDC1(%[ftmp2], %[addr0], 0x00)
306 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 307 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t" 308 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t" 309 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 310 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 311 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 312 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t" 313 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 314 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 315 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t" 317 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 318 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 319 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 320 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 321 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 322 MMI_LDC1(%[ftmp2], %[dst], 0x00)
323 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 324 "addi %[h], %[h], -0x01 \n\t" 325 MMI_SDC1(%[ftmp1], %[dst], 0x00)
326 PTR_ADDU "%[src], %[src], %[stride] \n\t" 327 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 329 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
330 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
331 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
332 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
335 [addr0]
"=&r"(addr[0]),
336 [dst]
"+&r"(dst), [src]
"+&r"(src),
345 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 346 "dli %[tmp0], 0x06 \n\t" 347 "pshufh %[A], %[A], %[ftmp0] \n\t" 348 "mtc1 %[tmp0], %[ftmp4] \n\t" 351 MMI_ULDC1(%[ftmp1], %[src], 0x00)
352 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 353 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 354 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 355 "pmullh %[ftmp2], %[ftmp3], %[A] \n\t" 356 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 357 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 358 "psrlh %[ftmp1], %[ftmp1], %[ftmp4] \n\t" 359 "psrlh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 360 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 361 MMI_LDC1(%[ftmp2], %[dst], 0x00)
362 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 363 PTR_ADDU "%[src], %[src], %[stride] \n\t" 364 MMI_SDC1(%[ftmp1], %[dst], 0x00)
365 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 367 MMI_ULDC1(%[ftmp1], %[src], 0x00)
368 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 369 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 370 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 371 "pmullh %[ftmp2], %[ftmp3], %[A] \n\t" 372 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 373 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 374 "psrlh %[ftmp1], %[ftmp1], %[ftmp4] \n\t" 375 "psrlh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 376 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 377 MMI_LDC1(%[ftmp2], %[dst], 0x00)
378 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 379 "addi %[h], %[h], -0x02 \n\t" 380 MMI_SDC1(%[ftmp1], %[dst], 0x00)
382 PTR_ADDU "%[src], %[src], %[stride] \n\t" 383 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 385 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
386 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
387 [ftmp4]
"=&f"(ftmp[4]),
390 [dst]
"+&r"(dst), [src]
"+&r"(src),
402 const int A = (8 - x) * (8 - y);
403 const int B = x * (8 - y);
404 const int C = (8 - x) * y;
414 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 415 "dli %[tmp0], 0x06 \n\t" 416 "pshufh %[A], %[A], %[ftmp0] \n\t" 417 "pshufh %[B], %[B], %[ftmp0] \n\t" 418 "mtc1 %[tmp0], %[ftmp7] \n\t" 419 "pshufh %[C], %[C], %[ftmp0] \n\t" 420 "pshufh %[D], %[D], %[ftmp0] \n\t" 423 PTR_ADDU "%[addr0], %[src], %[stride] \n\t" 424 MMI_ULWC1(%[ftmp1], %[src], 0x00)
425 MMI_ULWC1(%[ftmp2], %[src], 0x01)
426 MMI_ULWC1(%[ftmp3], %[addr0], 0x00)
427 MMI_ULWC1(%[ftmp4], %[addr0], 0x01)
429 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 430 "punpcklbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 431 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 432 "pmullh %[ftmp6], %[ftmp6], %[B] \n\t" 433 "paddh %[ftmp1], %[ftmp5], %[ftmp6] \n\t" 435 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 436 "punpcklbh %[ftmp6], %[ftmp4], %[ftmp0] \n\t" 437 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 438 "pmullh %[ftmp6], %[ftmp6], %[D] \n\t" 439 "paddh %[ftmp2], %[ftmp5], %[ftmp6] \n\t" 441 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 442 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 443 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 444 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 445 "addi %[h], %[h], -0x01 \n\t" 446 MMI_SWC1(%[ftmp1], %[dst], 0x00)
447 PTR_ADDU "%[src], %[src], %[stride] \n\t" 448 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 450 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
451 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
452 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
453 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
456 [addr0]
"=&r"(addr[0]),
457 [dst]
"+&r"(dst), [src]
"+&r"(src),
460 [
A]
"f"(
A), [B]
"f"(B),
465 const int step = C ?
stride : 1;
468 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 469 "dli %[tmp0], 0x06 \n\t" 470 "pshufh %[A], %[A], %[ftmp0] \n\t" 471 "pshufh %[E], %[E], %[ftmp0] \n\t" 472 "mtc1 %[tmp0], %[ftmp5] \n\t" 475 PTR_ADDU "%[addr0], %[src], %[step] \n\t" 476 MMI_ULWC1(%[ftmp1], %[src], 0x00)
477 MMI_ULWC1(%[ftmp2], %[addr0], 0x00)
479 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 480 "punpcklbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t" 481 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 482 "pmullh %[ftmp4], %[ftmp4], %[E] \n\t" 483 "paddh %[ftmp1], %[ftmp3], %[ftmp4] \n\t" 485 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 486 "psrlh %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 487 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 488 "addi %[h], %[h], -0x01 \n\t" 489 MMI_SWC1(%[ftmp1], %[dst], 0x00)
490 PTR_ADDU "%[src], %[src], %[stride] \n\t" 491 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 493 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
494 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
495 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
498 [addr0]
"=&r"(addr[0]),
499 [dst]
"+&r"(dst), [src]
"+&r"(src),
508 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 509 "dli %[tmp0], 0x06 \n\t" 510 "pshufh %[A], %[A], %[ftmp0] \n\t" 511 "mtc1 %[tmp0], %[ftmp3] \n\t" 514 MMI_ULWC1(%[ftmp1], %[src], 0x00)
515 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 516 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 517 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 518 "psrlh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 519 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 520 PTR_ADDU "%[src], %[src], %[stride] \n\t" 521 MMI_SWC1(%[ftmp1], %[dst], 0x00)
522 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 524 MMI_ULWC1(%[ftmp1], %[src], 0x00)
525 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 526 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 527 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 528 "psrlh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 529 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 530 "addi %[h], %[h], -0x02 \n\t" 531 MMI_SWC1(%[ftmp1], %[dst], 0x00)
533 PTR_ADDU "%[src], %[src], %[stride] \n\t" 534 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 536 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
537 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
540 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
552 const int A = (8 - x) *(8 - y);
553 const int B = x * (8 - y);
554 const int C = (8 - x) * y;
564 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 565 "dli %[tmp0], 0x06 \n\t" 566 "pshufh %[A], %[A], %[ftmp0] \n\t" 567 "pshufh %[B], %[B], %[ftmp0] \n\t" 568 "mtc1 %[tmp0], %[ftmp7] \n\t" 569 "pshufh %[C], %[C], %[ftmp0] \n\t" 570 "pshufh %[D], %[D], %[ftmp0] \n\t" 573 PTR_ADDU "%[addr0], %[src], %[stride] \n\t" 574 MMI_ULWC1(%[ftmp1], %[src], 0x00)
575 MMI_ULWC1(%[ftmp2], %[src], 0x01)
576 MMI_ULWC1(%[ftmp3], %[addr0], 0x00)
577 MMI_ULWC1(%[ftmp4], %[addr0], 0x01)
579 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 580 "punpcklbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 581 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 582 "pmullh %[ftmp6], %[ftmp6], %[B] \n\t" 583 "paddh %[ftmp1], %[ftmp5], %[ftmp6] \n\t" 585 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 586 "punpcklbh %[ftmp6], %[ftmp4], %[ftmp0] \n\t" 587 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 588 "pmullh %[ftmp6], %[ftmp6], %[D] \n\t" 589 "paddh %[ftmp2], %[ftmp5], %[ftmp6] \n\t" 591 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 592 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 593 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 594 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 595 MMI_LWC1(%[ftmp2], %[dst], 0x00)
596 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 597 "addi %[h], %[h], -0x01 \n\t" 598 MMI_SWC1(%[ftmp1], %[dst], 0x00)
599 PTR_ADDU "%[src], %[src], %[stride] \n\t" 600 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 602 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
603 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
604 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
605 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
608 [addr0]
"=&r"(addr[0]),
609 [dst]
"+&r"(dst), [src]
"+&r"(src),
612 [
A]
"f"(
A), [B]
"f"(B),
617 const int step = C ?
stride : 1;
620 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 621 "dli %[tmp0], 0x06 \n\t" 622 "pshufh %[A], %[A], %[ftmp0] \n\t" 623 "pshufh %[E], %[E], %[ftmp0] \n\t" 624 "mtc1 %[tmp0], %[ftmp5] \n\t" 626 PTR_ADDU "%[addr0], %[src], %[step] \n\t" 627 MMI_ULWC1(%[ftmp1], %[src], 0x00)
628 MMI_ULWC1(%[ftmp2], %[addr0], 0x00)
630 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 631 "punpcklbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t" 632 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 633 "pmullh %[ftmp4], %[ftmp4], %[E] \n\t" 634 "paddh %[ftmp1], %[ftmp3], %[ftmp4] \n\t" 636 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 637 "psrlh %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 638 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 639 MMI_LWC1(%[ftmp2], %[dst], 0x00)
640 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 641 "addi %[h], %[h], -0x01 \n\t" 642 MMI_SWC1(%[ftmp1], %[dst], 0x00)
643 PTR_ADDU "%[src], %[src], %[stride] \n\t" 644 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 646 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
647 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
648 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
651 [addr0]
"=&r"(addr[0]),
652 [dst]
"+&r"(dst), [src]
"+&r"(src),
661 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 662 "dli %[tmp0], 0x06 \n\t" 663 "pshufh %[A], %[A], %[ftmp0] \n\t" 664 "mtc1 %[tmp0], %[ftmp3] \n\t" 667 MMI_ULWC1(%[ftmp1], %[src], 0x00)
668 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 669 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 670 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 671 "psrlh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 672 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 673 MMI_LWC1(%[ftmp2], %[dst], 0x00)
674 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 675 PTR_ADDU "%[src], %[src], %[stride] \n\t" 676 MMI_SWC1(%[ftmp1], %[dst], 0x00)
677 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 679 MMI_ULWC1(%[ftmp1], %[src], 0x00)
680 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 681 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 682 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 683 "psrlh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 684 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 685 MMI_LWC1(%[ftmp2], %[dst], 0x00)
686 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 687 "addi %[h], %[h], -0x02 \n\t" 688 MMI_SWC1(%[ftmp1], %[dst], 0x00)
690 PTR_ADDU "%[src], %[src], %[stride] \n\t" 691 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 693 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
694 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
697 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
void ff_put_h264_chroma_mc4_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y)
void ff_avg_h264_chroma_mc4_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y)
void ff_avg_h264_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y)
void ff_put_h264_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y)