32 int A = 64,
B,
C,
D,
E;
39 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 40 "dli %[tmp0], 0x06 \n\t" 41 "mtc1 %[tmp0], %[ftmp4] \n\t" 44 MMI_ULDC1(%[ftmp1], %[src], 0x00)
45 "addi %[h], %[h], -0x04 \n\t" 46 PTR_ADDU "%[src], %[src], %[stride] \n\t" 47 MMI_ULDC1(%[ftmp5], %[src], 0x00)
48 PTR_ADDU "%[src], %[src], %[stride] \n\t" 49 MMI_ULDC1(%[ftmp6], %[src], 0x00)
50 PTR_ADDU "%[src], %[src], %[stride] \n\t" 51 MMI_ULDC1(%[ftmp7], %[src], 0x00)
53 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 54 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 55 "psllh %[ftmp1], %[ftmp2], %[ftmp4] \n\t" 56 "psllh %[ftmp2], %[ftmp3], %[ftmp4] \n\t" 57 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 58 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 59 "psrlh %[ftmp1], %[ftmp1], %[ftmp4] \n\t" 60 "psrlh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 61 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 62 MMI_SDC1(%[ftmp1], %[dst], 0x00)
64 "punpcklbh %[ftmp2], %[ftmp5], %[ftmp0] \n\t" 65 "punpckhbh %[ftmp3], %[ftmp5], %[ftmp0] \n\t" 66 "psllh %[ftmp1], %[ftmp2], %[ftmp4] \n\t" 67 "psllh %[ftmp2], %[ftmp3], %[ftmp4] \n\t" 68 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 69 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 70 "psrlh %[ftmp1], %[ftmp1], %[ftmp4] \n\t" 71 "psrlh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 72 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 73 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 74 MMI_SDC1(%[ftmp1], %[dst], 0x00)
76 "punpcklbh %[ftmp2], %[ftmp6], %[ftmp0] \n\t" 77 "punpckhbh %[ftmp3], %[ftmp6], %[ftmp0] \n\t" 78 "psllh %[ftmp1], %[ftmp2], %[ftmp4] \n\t" 79 "psllh %[ftmp2], %[ftmp3], %[ftmp4] \n\t" 80 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 81 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 82 "psrlh %[ftmp1], %[ftmp1], %[ftmp4] \n\t" 83 "psrlh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 84 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 85 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 86 MMI_SDC1(%[ftmp1], %[dst], 0x00)
88 "punpcklbh %[ftmp2], %[ftmp7], %[ftmp0] \n\t" 89 "punpckhbh %[ftmp3], %[ftmp7], %[ftmp0] \n\t" 90 "psllh %[ftmp1], %[ftmp2], %[ftmp4] \n\t" 91 "psllh %[ftmp2], %[ftmp3], %[ftmp4] \n\t" 92 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 93 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 94 "psrlh %[ftmp1], %[ftmp1], %[ftmp4] \n\t" 95 "psrlh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 96 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 97 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 98 MMI_SDC1(%[ftmp1], %[dst], 0x00)
100 PTR_ADDU "%[src], %[src], %[stride] \n\t" 101 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 103 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
104 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
105 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
106 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
108 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
122 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 123 "dli %[tmp0], 0x06 \n\t" 124 "pshufh %[A], %[A], %[ftmp0] \n\t" 125 "pshufh %[B], %[B], %[ftmp0] \n\t" 126 "mtc1 %[tmp0], %[ftmp9] \n\t" 127 "pshufh %[C], %[C], %[ftmp0] \n\t" 128 "pshufh %[D], %[D], %[ftmp0] \n\t" 131 MMI_ULDC1(%[ftmp1], %[src], 0x00)
132 MMI_ULDC1(%[ftmp2], %[src], 0x01)
133 PTR_ADDU "%[src], %[src], %[stride] \n\t" 134 MMI_ULDC1(%[ftmp3], %[src], 0x00)
135 MMI_ULDC1(%[ftmp4], %[src], 0x01)
136 "addi %[h], %[h], -0x02 \n\t" 138 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 139 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t" 140 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t" 141 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t" 142 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 143 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t" 144 "paddh %[ftmp1], %[ftmp5], %[ftmp7] \n\t" 145 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t" 146 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t" 147 "paddh %[ftmp2], %[ftmp6], %[ftmp8] \n\t" 149 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 150 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t" 151 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t" 152 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t" 153 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 154 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t" 155 "paddh %[ftmp3], %[ftmp5], %[ftmp7] \n\t" 156 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t" 157 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t" 158 "paddh %[ftmp4], %[ftmp6], %[ftmp8] \n\t" 160 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 161 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 162 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 163 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 164 "psrlh %[ftmp1], %[ftmp1], %[ftmp9] \n\t" 165 "psrlh %[ftmp2], %[ftmp2], %[ftmp9] \n\t" 166 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 167 MMI_SDC1(%[ftmp1], %[dst], 0x00)
168 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 170 MMI_ULDC1(%[ftmp1], %[src], 0x00)
171 MMI_ULDC1(%[ftmp2], %[src], 0x01)
172 PTR_ADDU "%[src], %[src], %[stride] \n\t" 173 MMI_ULDC1(%[ftmp3], %[src], 0x00)
174 MMI_ULDC1(%[ftmp4], %[src], 0x01)
176 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 177 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t" 178 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t" 179 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t" 180 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 181 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t" 182 "paddh %[ftmp1], %[ftmp5], %[ftmp7] \n\t" 183 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t" 184 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t" 185 "paddh %[ftmp2], %[ftmp6], %[ftmp8] \n\t" 187 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 188 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t" 189 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t" 190 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t" 191 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 192 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t" 193 "paddh %[ftmp3], %[ftmp5], %[ftmp7] \n\t" 194 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t" 195 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t" 196 "paddh %[ftmp4], %[ftmp6], %[ftmp8] \n\t" 198 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 199 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 200 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 201 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 202 "psrlh %[ftmp1], %[ftmp1], %[ftmp9] \n\t" 203 "psrlh %[ftmp2], %[ftmp2], %[ftmp9] \n\t" 204 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 205 MMI_SDC1(%[ftmp1], %[dst], 0x00)
206 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 209 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
210 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
211 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
212 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
213 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
215 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
218 [A]
"f"(A), [
B]
"f"(
B),
229 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 230 "dli %[tmp0], 0x06 \n\t" 231 "pshufh %[A], %[A], %[ftmp0] \n\t" 232 "pshufh %[E], %[E], %[ftmp0] \n\t" 233 "mtc1 %[tmp0], %[ftmp7] \n\t" 236 MMI_ULDC1(%[ftmp1], %[src], 0x00)
237 MMI_ULDC1(%[ftmp2], %[src], 0x01)
238 "addi %[h], %[h], -0x01 \n\t" 239 PTR_ADDU "%[src], %[src], %[stride] \n\t" 241 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 242 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t" 243 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t" 244 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 245 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 246 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 247 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t" 248 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 249 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 250 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t" 252 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 253 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 254 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 255 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 256 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 257 MMI_SDC1(%[ftmp1], %[dst], 0x00)
258 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 260 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
261 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
262 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
263 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
265 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
278 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 279 "dli %[tmp0], 0x06 \n\t" 280 "pshufh %[A], %[A], %[ftmp0] \n\t" 281 "pshufh %[E], %[E], %[ftmp0] \n\t" 282 "mtc1 %[tmp0], %[ftmp7] \n\t" 285 MMI_ULDC1(%[ftmp1], %[src], 0x00)
286 PTR_ADDU "%[src], %[src], %[stride] \n\t" 287 MMI_ULDC1(%[ftmp2], %[src], 0x00)
288 "addi %[h], %[h], -0x01 \n\t" 290 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 291 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t" 292 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t" 293 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 294 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 295 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 296 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t" 297 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 298 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 299 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t" 301 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 302 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 303 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 304 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 305 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 306 MMI_SDC1(%[ftmp1], %[dst], 0x00)
308 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 310 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
311 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
312 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
313 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
315 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
330 int A = 64,
B,
C,
D,
E;
337 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 338 "dli %[tmp0], 0x06 \n\t" 339 "pshufh %[A], %[A], %[ftmp0] \n\t" 340 "mtc1 %[tmp0], %[ftmp4] \n\t" 343 MMI_ULDC1(%[ftmp1], %[src], 0x00)
344 PTR_ADDU "%[src], %[src], %[stride] \n\t" 345 MMI_ULDC1(%[ftmp5], %[src], 0x00)
346 PTR_ADDU "%[src], %[src], %[stride] \n\t" 348 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 349 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 350 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 351 "pmullh %[ftmp2], %[ftmp3], %[A] \n\t" 352 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 353 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 354 "psrlh %[ftmp1], %[ftmp1], %[ftmp4] \n\t" 355 "psrlh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 356 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 357 MMI_LDC1(%[ftmp2], %[dst], 0x00)
358 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 359 MMI_SDC1(%[ftmp1], %[dst], 0x00)
360 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 362 "punpcklbh %[ftmp2], %[ftmp5], %[ftmp0] \n\t" 363 "punpckhbh %[ftmp3], %[ftmp5], %[ftmp0] \n\t" 364 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 365 "pmullh %[ftmp2], %[ftmp3], %[A] \n\t" 366 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 367 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 368 "psrlh %[ftmp1], %[ftmp1], %[ftmp4] \n\t" 369 "psrlh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 370 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 371 MMI_LDC1(%[ftmp2], %[dst], 0x00)
372 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 373 MMI_SDC1(%[ftmp1], %[dst], 0x00)
374 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 376 "addi %[h], %[h], -0x02 \n\t" 378 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
379 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
380 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
382 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
396 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 397 "dli %[tmp0], 0x06 \n\t" 398 "pshufh %[A], %[A], %[ftmp0] \n\t" 399 "pshufh %[B], %[B], %[ftmp0] \n\t" 400 "mtc1 %[tmp0], %[ftmp9] \n\t" 401 "pshufh %[C], %[C], %[ftmp0] \n\t" 402 "pshufh %[D], %[D], %[ftmp0] \n\t" 405 MMI_ULDC1(%[ftmp1], %[src], 0x00)
406 MMI_ULDC1(%[ftmp2], %[src], 0x01)
407 PTR_ADDU "%[src], %[src], %[stride] \n\t" 408 MMI_ULDC1(%[ftmp3], %[src], 0x00)
409 MMI_ULDC1(%[ftmp4], %[src], 0x01)
410 "addi %[h], %[h], -0x01 \n\t" 412 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 413 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t" 414 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t" 415 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t" 416 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 417 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t" 418 "paddh %[ftmp1], %[ftmp5], %[ftmp7] \n\t" 419 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t" 420 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t" 421 "paddh %[ftmp2], %[ftmp6], %[ftmp8] \n\t" 423 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 424 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t" 425 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t" 426 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t" 427 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 428 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t" 429 "paddh %[ftmp3], %[ftmp5], %[ftmp7] \n\t" 430 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t" 431 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t" 432 "paddh %[ftmp4], %[ftmp6], %[ftmp8] \n\t" 434 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 435 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 436 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 437 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 438 "psrlh %[ftmp1], %[ftmp1], %[ftmp9] \n\t" 439 "psrlh %[ftmp2], %[ftmp2], %[ftmp9] \n\t" 440 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 441 MMI_LDC1(%[ftmp2], %[dst], 0x00)
442 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 443 MMI_SDC1(%[ftmp1], %[dst], 0x00)
444 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 446 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
447 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
448 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
449 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
450 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
452 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
455 [A]
"f"(A), [
B]
"f"(
B),
465 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 466 "dli %[tmp0], 0x06 \n\t" 467 "pshufh %[A], %[A], %[ftmp0] \n\t" 468 "pshufh %[E], %[E], %[ftmp0] \n\t" 469 "mtc1 %[tmp0], %[ftmp7] \n\t" 472 MMI_ULDC1(%[ftmp1], %[src], 0x00)
473 MMI_ULDC1(%[ftmp2], %[src], 0x01)
474 PTR_ADDU "%[src], %[src], %[stride] \n\t" 475 "addi %[h], %[h], -0x01 \n\t" 477 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 478 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t" 479 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t" 480 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 481 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 482 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 483 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t" 484 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 485 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 486 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t" 488 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 489 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 490 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 491 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 492 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 493 MMI_LDC1(%[ftmp2], %[dst], 0x00)
494 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 495 MMI_SDC1(%[ftmp1], %[dst], 0x00)
496 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 498 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
499 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
500 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
501 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
503 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
515 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 516 "dli %[tmp0], 0x06 \n\t" 517 "pshufh %[A], %[A], %[ftmp0] \n\t" 518 "pshufh %[E], %[E], %[ftmp0] \n\t" 519 "mtc1 %[tmp0], %[ftmp7] \n\t" 522 MMI_ULDC1(%[ftmp1], %[src], 0x00)
523 PTR_ADDU "%[src], %[src], %[stride] \n\t" 524 MMI_ULDC1(%[ftmp2], %[src], 0x00)
525 "addi %[h], %[h], -0x01 \n\t" 527 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 528 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t" 529 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t" 530 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 531 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 532 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 533 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t" 534 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 535 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 536 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t" 538 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 539 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 540 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 541 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 542 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 543 MMI_LDC1(%[ftmp2], %[dst], 0x00)
544 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 545 MMI_SDC1(%[ftmp1], %[dst], 0x00)
546 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 548 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
549 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
550 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
551 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
553 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
568 const int A = (8 - x) * (8 - y);
569 const int B = x * (8 - y);
570 const int C = (8 - x) * y;
580 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 581 "dli %[tmp0], 0x06 \n\t" 582 "pshufh %[A], %[A], %[ftmp0] \n\t" 583 "pshufh %[B], %[B], %[ftmp0] \n\t" 584 "mtc1 %[tmp0], %[ftmp7] \n\t" 585 "pshufh %[C], %[C], %[ftmp0] \n\t" 586 "pshufh %[D], %[D], %[ftmp0] \n\t" 589 PTR_ADDU "%[addr0], %[src], %[stride] \n\t" 590 MMI_ULWC1(%[ftmp1], %[src], 0x00)
591 MMI_ULWC1(%[ftmp2], %[src], 0x01)
592 MMI_ULWC1(%[ftmp3], %[addr0], 0x00)
593 MMI_ULWC1(%[ftmp4], %[addr0], 0x01)
595 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 596 "punpcklbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 597 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 598 "pmullh %[ftmp6], %[ftmp6], %[B] \n\t" 599 "paddh %[ftmp1], %[ftmp5], %[ftmp6] \n\t" 601 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 602 "punpcklbh %[ftmp6], %[ftmp4], %[ftmp0] \n\t" 603 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 604 "pmullh %[ftmp6], %[ftmp6], %[D] \n\t" 605 "paddh %[ftmp2], %[ftmp5], %[ftmp6] \n\t" 607 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 608 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 609 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 610 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 611 "addi %[h], %[h], -0x01 \n\t" 612 MMI_SWC1(%[ftmp1], %[dst], 0x00)
613 PTR_ADDU "%[src], %[src], %[stride] \n\t" 614 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 616 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
617 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
618 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
619 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
622 [addr0]
"=&r"(addr[0]),
623 [dst]
"+&r"(dst), [src]
"+&r"(src),
626 [
A]
"f"(
A), [B]
"f"(B),
631 const int step = C ?
stride : 1;
634 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 635 "dli %[tmp0], 0x06 \n\t" 636 "pshufh %[A], %[A], %[ftmp0] \n\t" 637 "pshufh %[E], %[E], %[ftmp0] \n\t" 638 "mtc1 %[tmp0], %[ftmp5] \n\t" 641 PTR_ADDU "%[addr0], %[src], %[step] \n\t" 642 MMI_ULWC1(%[ftmp1], %[src], 0x00)
643 MMI_ULWC1(%[ftmp2], %[addr0], 0x00)
645 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 646 "punpcklbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t" 647 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 648 "pmullh %[ftmp4], %[ftmp4], %[E] \n\t" 649 "paddh %[ftmp1], %[ftmp3], %[ftmp4] \n\t" 651 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 652 "psrlh %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 653 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 654 "addi %[h], %[h], -0x01 \n\t" 655 MMI_SWC1(%[ftmp1], %[dst], 0x00)
656 PTR_ADDU "%[src], %[src], %[stride] \n\t" 657 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 659 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
660 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
661 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
664 [addr0]
"=&r"(addr[0]),
665 [dst]
"+&r"(dst), [src]
"+&r"(src),
674 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 675 "dli %[tmp0], 0x06 \n\t" 676 "pshufh %[A], %[A], %[ftmp0] \n\t" 677 "mtc1 %[tmp0], %[ftmp3] \n\t" 680 MMI_ULWC1(%[ftmp1], %[src], 0x00)
681 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 682 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 683 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 684 "psrlh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 685 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 686 PTR_ADDU "%[src], %[src], %[stride] \n\t" 687 MMI_SWC1(%[ftmp1], %[dst], 0x00)
688 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 690 MMI_ULWC1(%[ftmp1], %[src], 0x00)
691 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 692 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 693 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 694 "psrlh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 695 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 696 "addi %[h], %[h], -0x02 \n\t" 697 MMI_SWC1(%[ftmp1], %[dst], 0x00)
699 PTR_ADDU "%[src], %[src], %[stride] \n\t" 700 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 702 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
703 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
706 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
718 const int A = (8 - x) *(8 - y);
719 const int B = x * (8 - y);
720 const int C = (8 - x) * y;
730 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 731 "dli %[tmp0], 0x06 \n\t" 732 "pshufh %[A], %[A], %[ftmp0] \n\t" 733 "pshufh %[B], %[B], %[ftmp0] \n\t" 734 "mtc1 %[tmp0], %[ftmp7] \n\t" 735 "pshufh %[C], %[C], %[ftmp0] \n\t" 736 "pshufh %[D], %[D], %[ftmp0] \n\t" 739 PTR_ADDU "%[addr0], %[src], %[stride] \n\t" 740 MMI_ULWC1(%[ftmp1], %[src], 0x00)
741 MMI_ULWC1(%[ftmp2], %[src], 0x01)
742 MMI_ULWC1(%[ftmp3], %[addr0], 0x00)
743 MMI_ULWC1(%[ftmp4], %[addr0], 0x01)
745 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 746 "punpcklbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 747 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 748 "pmullh %[ftmp6], %[ftmp6], %[B] \n\t" 749 "paddh %[ftmp1], %[ftmp5], %[ftmp6] \n\t" 751 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 752 "punpcklbh %[ftmp6], %[ftmp4], %[ftmp0] \n\t" 753 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 754 "pmullh %[ftmp6], %[ftmp6], %[D] \n\t" 755 "paddh %[ftmp2], %[ftmp5], %[ftmp6] \n\t" 757 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 758 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 759 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 760 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 761 MMI_LWC1(%[ftmp2], %[dst], 0x00)
762 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 763 "addi %[h], %[h], -0x01 \n\t" 764 MMI_SWC1(%[ftmp1], %[dst], 0x00)
765 PTR_ADDU "%[src], %[src], %[stride] \n\t" 766 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 768 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
769 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
770 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
771 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
774 [addr0]
"=&r"(addr[0]),
775 [dst]
"+&r"(dst), [src]
"+&r"(src),
778 [
A]
"f"(
A), [B]
"f"(B),
783 const int step = C ?
stride : 1;
786 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 787 "dli %[tmp0], 0x06 \n\t" 788 "pshufh %[A], %[A], %[ftmp0] \n\t" 789 "pshufh %[E], %[E], %[ftmp0] \n\t" 790 "mtc1 %[tmp0], %[ftmp5] \n\t" 792 PTR_ADDU "%[addr0], %[src], %[step] \n\t" 793 MMI_ULWC1(%[ftmp1], %[src], 0x00)
794 MMI_ULWC1(%[ftmp2], %[addr0], 0x00)
796 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 797 "punpcklbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t" 798 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 799 "pmullh %[ftmp4], %[ftmp4], %[E] \n\t" 800 "paddh %[ftmp1], %[ftmp3], %[ftmp4] \n\t" 802 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 803 "psrlh %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 804 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 805 MMI_LWC1(%[ftmp2], %[dst], 0x00)
806 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 807 "addi %[h], %[h], -0x01 \n\t" 808 MMI_SWC1(%[ftmp1], %[dst], 0x00)
809 PTR_ADDU "%[src], %[src], %[stride] \n\t" 810 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 812 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
813 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
814 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
817 [addr0]
"=&r"(addr[0]),
818 [dst]
"+&r"(dst), [src]
"+&r"(src),
827 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 828 "dli %[tmp0], 0x06 \n\t" 829 "pshufh %[A], %[A], %[ftmp0] \n\t" 830 "mtc1 %[tmp0], %[ftmp3] \n\t" 833 MMI_ULWC1(%[ftmp1], %[src], 0x00)
834 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 835 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 836 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 837 "psrlh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 838 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 839 MMI_LWC1(%[ftmp2], %[dst], 0x00)
840 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 841 PTR_ADDU "%[src], %[src], %[stride] \n\t" 842 MMI_SWC1(%[ftmp1], %[dst], 0x00)
843 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 845 MMI_ULWC1(%[ftmp1], %[src], 0x00)
846 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" 847 "pmullh %[ftmp1], %[ftmp2], %[A] \n\t" 848 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 849 "psrlh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 850 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 851 MMI_LWC1(%[ftmp2], %[dst], 0x00)
852 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 853 "addi %[h], %[h], -0x02 \n\t" 854 MMI_SWC1(%[ftmp1], %[dst], 0x00)
856 PTR_ADDU "%[src], %[src], %[stride] \n\t" 857 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 859 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
860 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
863 [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)