32 int A = 64,
B,
C,
D,
E;
40 MMI_ULDC1(%[ftmp0], %[src], 0x00)
41 PTR_ADDU "%[src], %[src], %[stride] \n\t" 42 MMI_ULDC1(%[ftmp1], %[src], 0x00)
43 PTR_ADDU "%[src], %[src], %[stride] \n\t" 44 MMI_ULDC1(%[ftmp2], %[src], 0x00)
45 PTR_ADDU "%[src], %[src], %[stride] \n\t" 46 MMI_ULDC1(%[ftmp3], %[src], 0x00)
47 PTR_ADDU "%[src], %[src], %[stride] \n\t" 49 "addi %[h], %[h], -0x04 \n\t" 51 MMI_SDC1(%[ftmp0], %[dst], 0x00)
52 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 53 MMI_SDC1(%[ftmp1], %[dst], 0x00)
54 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 55 MMI_SDC1(%[ftmp2], %[dst], 0x00)
56 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 57 MMI_SDC1(%[ftmp3], %[dst], 0x00)
58 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 60 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
61 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
62 [dst]
"+&r"(dst), [src]
"+&r"(src),
75 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 76 "dli %[tmp0], 0x06 \n\t" 77 "pshufh %[A], %[A], %[ftmp0] \n\t" 78 "pshufh %[B], %[B], %[ftmp0] \n\t" 79 "mtc1 %[tmp0], %[ftmp9] \n\t" 80 "pshufh %[C], %[C], %[ftmp0] \n\t" 81 "pshufh %[D], %[D], %[ftmp0] \n\t" 84 MMI_ULDC1(%[ftmp1], %[src], 0x00)
85 MMI_ULDC1(%[ftmp2], %[src], 0x01)
86 PTR_ADDU "%[src], %[src], %[stride] \n\t" 87 MMI_ULDC1(%[ftmp3], %[src], 0x00)
88 MMI_ULDC1(%[ftmp4], %[src], 0x01)
89 PTR_ADDU "%[src], %[src], %[stride] \n\t" 90 MMI_ULDC1(%[ftmp10], %[src], 0x00)
91 MMI_ULDC1(%[ftmp11], %[src], 0x01)
92 "addi %[h], %[h], -0x02 \n\t" 94 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 95 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t" 96 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t" 97 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t" 98 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 99 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t" 100 "paddh %[ftmp1], %[ftmp5], %[ftmp7] \n\t" 101 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t" 102 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t" 103 "paddh %[ftmp2], %[ftmp6], %[ftmp8] \n\t" 104 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 105 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t" 106 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t" 107 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t" 108 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 109 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t" 110 "paddh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 111 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t" 112 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t" 113 "paddh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 114 "paddh %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 115 "paddh %[ftmp2], %[ftmp2], %[ftmp6] \n\t" 116 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 117 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 118 "psrlh %[ftmp1], %[ftmp1], %[ftmp9] \n\t" 119 "psrlh %[ftmp2], %[ftmp2], %[ftmp9] \n\t" 120 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 122 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 123 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t" 124 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t" 125 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t" 126 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 127 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t" 128 "paddh %[ftmp3], %[ftmp5], %[ftmp7] \n\t" 129 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t" 130 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t" 131 "paddh %[ftmp4], %[ftmp6], %[ftmp8] \n\t" 132 "punpcklbh %[ftmp5], %[ftmp10], %[ftmp0] \n\t" 133 "punpckhbh %[ftmp6], %[ftmp10], %[ftmp0] \n\t" 134 "punpcklbh %[ftmp7], %[ftmp11], %[ftmp0] \n\t" 135 "punpckhbh %[ftmp8], %[ftmp11], %[ftmp0] \n\t" 136 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 137 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t" 138 "paddh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" 139 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t" 140 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t" 141 "paddh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" 142 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" 143 "paddh %[ftmp4], %[ftmp4], %[ftmp6] \n\t" 144 "paddh %[ftmp3], %[ftmp3], %[ff_pw_32] \n\t" 145 "paddh %[ftmp4], %[ftmp4], %[ff_pw_32] \n\t" 146 "psrlh %[ftmp3], %[ftmp3], %[ftmp9] \n\t" 147 "psrlh %[ftmp4], %[ftmp4], %[ftmp9] \n\t" 148 "packushb %[ftmp3], %[ftmp3], %[ftmp4] \n\t" 150 MMI_SDC1(%[ftmp1], %[dst], 0x00)
151 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 152 MMI_SDC1(%[ftmp3], %[dst], 0x00)
153 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 155 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
156 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
157 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
158 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
159 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
160 [ftmp10]
"=&f"(ftmp[10]), [ftmp11]
"=&f"(ftmp[11]),
162 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
165 [A]
"f"(A), [
B]
"f"(
B),
175 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 176 "dli %[tmp0], 0x06 \n\t" 177 "pshufh %[A], %[A], %[ftmp0] \n\t" 178 "pshufh %[E], %[E], %[ftmp0] \n\t" 179 "mtc1 %[tmp0], %[ftmp7] \n\t" 182 MMI_ULDC1(%[ftmp1], %[src], 0x00)
183 MMI_ULDC1(%[ftmp2], %[src], 0x01)
184 "addi %[h], %[h], -0x01 \n\t" 185 PTR_ADDU "%[src], %[src], %[stride] \n\t" 187 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 188 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t" 189 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t" 190 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 191 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 192 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 193 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t" 194 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 195 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 196 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t" 198 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 199 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 200 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 201 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 202 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 203 MMI_SDC1(%[ftmp1], %[dst], 0x00)
204 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 206 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
207 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
208 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
209 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
211 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
224 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 225 "dli %[tmp0], 0x06 \n\t" 226 "pshufh %[A], %[A], %[ftmp0] \n\t" 227 "pshufh %[E], %[E], %[ftmp0] \n\t" 228 "mtc1 %[tmp0], %[ftmp7] \n\t" 231 MMI_ULDC1(%[ftmp1], %[src], 0x00)
232 PTR_ADDU "%[src], %[src], %[stride] \n\t" 233 MMI_ULDC1(%[ftmp2], %[src], 0x00)
234 PTR_ADDU "%[src], %[src], %[stride] \n\t" 235 MMI_ULDC1(%[ftmp8], %[src], 0x00)
236 "addi %[h], %[h], -0x02 \n\t" 238 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 239 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t" 240 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t" 241 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 242 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 243 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 244 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" 245 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 246 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 247 "paddh %[ftmp4], %[ftmp4], %[ftmp6] \n\t" 248 "paddh %[ftmp3], %[ftmp3], %[ff_pw_32] \n\t" 249 "paddh %[ftmp4], %[ftmp4], %[ff_pw_32] \n\t" 250 "psrlh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 251 "psrlh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 252 "packushb %[ftmp1], %[ftmp3], %[ftmp4] \n\t" 254 "punpcklbh %[ftmp3], %[ftmp2], %[ftmp0] \n\t" 255 "punpckhbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t" 256 "punpcklbh %[ftmp5], %[ftmp8], %[ftmp0] \n\t" 257 "punpckhbh %[ftmp6], %[ftmp8], %[ftmp0] \n\t" 258 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 259 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 260 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" 261 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 262 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 263 "paddh %[ftmp4], %[ftmp4], %[ftmp6] \n\t" 264 "paddh %[ftmp3], %[ftmp3], %[ff_pw_32] \n\t" 265 "paddh %[ftmp4], %[ftmp4], %[ff_pw_32] \n\t" 266 "psrlh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 267 "psrlh %[ftmp4], %[ftmp4], %[ftmp7] \n\t" 268 "packushb %[ftmp2], %[ftmp3], %[ftmp4] \n\t" 270 MMI_SDC1(%[ftmp1], %[dst], 0x00)
271 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 272 MMI_SDC1(%[ftmp2], %[dst], 0x00)
273 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 275 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
276 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
277 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
278 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
279 [ftmp8]
"=&f"(ftmp[8]), [tmp0]
"=&r"(tmp[0]),
280 [dst]
"+&r"(dst), [src]
"+&r"(src),
293 int A = 64,
B,
C,
D,
E;
301 MMI_ULDC1(%[ftmp0], %[src], 0x00)
302 PTR_ADDU "%[src], %[src], %[stride] \n\t" 303 MMI_ULDC1(%[ftmp1], %[src], 0x00)
304 PTR_ADDU "%[src], %[src], %[stride] \n\t" 305 MMI_LDC1(%[ftmp2], %[dst], 0x00)
306 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 307 MMI_LDC1(%[ftmp3], %[dst], 0x00)
308 PTR_SUBU "%[dst], %[dst], %[stride] \n\t" 309 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t" 310 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 311 MMI_SDC1(%[ftmp0], %[dst], 0x00)
312 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 313 MMI_SDC1(%[ftmp1], %[dst], 0x00)
314 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 315 "addi %[h], %[h], -0x02 \n\t" 317 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
318 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
319 [dst]
"+&r"(dst), [src]
"+&r"(src),
331 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 332 "dli %[tmp0], 0x06 \n\t" 333 "pshufh %[A], %[A], %[ftmp0] \n\t" 334 "pshufh %[B], %[B], %[ftmp0] \n\t" 335 "mtc1 %[tmp0], %[ftmp9] \n\t" 336 "pshufh %[C], %[C], %[ftmp0] \n\t" 337 "pshufh %[D], %[D], %[ftmp0] \n\t" 340 MMI_ULDC1(%[ftmp1], %[src], 0x00)
341 MMI_ULDC1(%[ftmp2], %[src], 0x01)
342 PTR_ADDU "%[src], %[src], %[stride] \n\t" 343 MMI_ULDC1(%[ftmp3], %[src], 0x00)
344 MMI_ULDC1(%[ftmp4], %[src], 0x01)
345 "addi %[h], %[h], -0x01 \n\t" 347 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 348 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t" 349 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t" 350 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t" 351 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 352 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t" 353 "paddh %[ftmp1], %[ftmp5], %[ftmp7] \n\t" 354 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t" 355 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t" 356 "paddh %[ftmp2], %[ftmp6], %[ftmp8] \n\t" 358 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 359 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t" 360 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t" 361 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t" 362 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 363 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t" 364 "paddh %[ftmp3], %[ftmp5], %[ftmp7] \n\t" 365 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t" 366 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t" 367 "paddh %[ftmp4], %[ftmp6], %[ftmp8] \n\t" 369 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 370 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t" 371 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 372 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 373 "psrlh %[ftmp1], %[ftmp1], %[ftmp9] \n\t" 374 "psrlh %[ftmp2], %[ftmp2], %[ftmp9] \n\t" 375 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 376 MMI_LDC1(%[ftmp2], %[dst], 0x00)
377 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 378 MMI_SDC1(%[ftmp1], %[dst], 0x00)
379 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 381 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
382 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
383 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
384 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
385 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
387 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
390 [A]
"f"(A), [
B]
"f"(
B),
399 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 400 "dli %[tmp0], 0x06 \n\t" 401 "pshufh %[A], %[A], %[ftmp0] \n\t" 402 "pshufh %[E], %[E], %[ftmp0] \n\t" 403 "mtc1 %[tmp0], %[ftmp7] \n\t" 406 MMI_ULDC1(%[ftmp1], %[src], 0x00)
407 MMI_ULDC1(%[ftmp2], %[src], 0x01)
408 PTR_ADDU "%[src], %[src], %[stride] \n\t" 409 "addi %[h], %[h], -0x01 \n\t" 411 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 412 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t" 413 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t" 414 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 415 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 416 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 417 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t" 418 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 419 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 420 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t" 422 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 423 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 424 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 425 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 426 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 427 MMI_LDC1(%[ftmp2], %[dst], 0x00)
428 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 429 MMI_SDC1(%[ftmp1], %[dst], 0x00)
430 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 432 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
433 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
434 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
435 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
437 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
449 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 450 "dli %[tmp0], 0x06 \n\t" 451 "pshufh %[A], %[A], %[ftmp0] \n\t" 452 "pshufh %[E], %[E], %[ftmp0] \n\t" 453 "mtc1 %[tmp0], %[ftmp7] \n\t" 456 MMI_ULDC1(%[ftmp1], %[src], 0x00)
457 PTR_ADDU "%[src], %[src], %[stride] \n\t" 458 MMI_ULDC1(%[ftmp2], %[src], 0x00)
459 "addi %[h], %[h], -0x01 \n\t" 461 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 462 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t" 463 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t" 464 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 465 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 466 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t" 467 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t" 468 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t" 469 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t" 470 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t" 472 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 473 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t" 474 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 475 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t" 476 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 477 MMI_LDC1(%[ftmp2], %[dst], 0x00)
478 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 479 MMI_SDC1(%[ftmp1], %[dst], 0x00)
480 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 482 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
483 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
484 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
485 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
487 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
500 const int A = (8 - x) * (8 - y);
501 const int B = x * (8 - y);
502 const int C = (8 - x) * y;
512 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 513 "dli %[tmp0], 0x06 \n\t" 514 "pshufh %[A], %[A], %[ftmp0] \n\t" 515 "pshufh %[B], %[B], %[ftmp0] \n\t" 516 "mtc1 %[tmp0], %[ftmp7] \n\t" 517 "pshufh %[C], %[C], %[ftmp0] \n\t" 518 "pshufh %[D], %[D], %[ftmp0] \n\t" 521 MMI_ULWC1(%[ftmp1], %[src], 0x00)
522 MMI_ULWC1(%[ftmp2], %[src], 0x01)
523 PTR_ADDU "%[src], %[src], %[stride] \n\t" 524 MMI_ULWC1(%[ftmp3], %[src], 0x00)
525 MMI_ULWC1(%[ftmp4], %[src], 0x01)
527 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 528 "punpcklbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 529 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 530 "pmullh %[ftmp6], %[ftmp6], %[B] \n\t" 531 "paddh %[ftmp1], %[ftmp5], %[ftmp6] \n\t" 532 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 533 "punpcklbh %[ftmp6], %[ftmp4], %[ftmp0] \n\t" 534 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 535 "pmullh %[ftmp6], %[ftmp6], %[D] \n\t" 536 "paddh %[ftmp2], %[ftmp5], %[ftmp6] \n\t" 537 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 538 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 539 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 540 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 542 "addi %[h], %[h], -0x01 \n\t" 543 MMI_SWC1(%[ftmp1], %[dst], 0x00)
544 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 546 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
547 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
548 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
549 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
552 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
555 [A]
"f"(A), [
B]
"f"(
B),
560 const int step = C ?
stride : 1;
562 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 563 "dli %[tmp0], 0x06 \n\t" 564 "pshufh %[A], %[A], %[ftmp0] \n\t" 565 "pshufh %[E], %[E], %[ftmp0] \n\t" 566 "mtc1 %[tmp0], %[ftmp5] \n\t" 569 MMI_ULWC1(%[ftmp1], %[src], 0x00)
570 PTR_ADDU "%[addr0], %[src], %[step] \n\t" 571 MMI_ULWC1(%[ftmp2], %[addr0], 0x00)
572 PTR_ADDU "%[src], %[src], %[stride] \n\t" 573 "addi %[h], %[h], -0x01 \n\t" 574 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 575 "punpcklbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t" 576 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 577 "pmullh %[ftmp4], %[ftmp4], %[E] \n\t" 578 "paddh %[ftmp1], %[ftmp3], %[ftmp4] \n\t" 579 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 580 "psrlh %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 581 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 582 MMI_SWC1(%[ftmp1], %[dst], 0x00)
583 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 585 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
586 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
587 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
590 [addr0]
"=&r"(addr[0]),
591 [dst]
"+&r"(dst), [src]
"+&r"(src),
601 MMI_ULWC1(%[ftmp0], %[src], 0x00)
602 PTR_ADDU "%[src], %[src], %[stride] \n\t" 603 MMI_ULWC1(%[ftmp1], %[src], 0x00)
604 PTR_ADDU "%[src], %[src], %[stride] \n\t" 605 "addi %[h], %[h], -0x02 \n\t" 606 MMI_SWC1(%[ftmp0], %[dst], 0x00)
607 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 608 MMI_SWC1(%[ftmp1], %[dst], 0x00)
609 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 611 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
612 [dst]
"+&r"(dst), [src]
"+&r"(src),
624 const int A = (8 - x) *(8 - y);
625 const int B = x * (8 - y);
626 const int C = (8 - x) * y;
636 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 637 "dli %[tmp0], 0x06 \n\t" 638 "pshufh %[A], %[A], %[ftmp0] \n\t" 639 "pshufh %[B], %[B], %[ftmp0] \n\t" 640 "mtc1 %[tmp0], %[ftmp7] \n\t" 641 "pshufh %[C], %[C], %[ftmp0] \n\t" 642 "pshufh %[D], %[D], %[ftmp0] \n\t" 645 MMI_ULWC1(%[ftmp1], %[src], 0x00)
646 MMI_ULWC1(%[ftmp2], %[src], 0x01)
647 PTR_ADDU "%[src], %[src], %[stride] \n\t" 648 MMI_ULWC1(%[ftmp3], %[src], 0x00)
649 MMI_ULWC1(%[ftmp4], %[src], 0x01)
651 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t" 652 "punpcklbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t" 653 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t" 654 "pmullh %[ftmp6], %[ftmp6], %[B] \n\t" 655 "paddh %[ftmp1], %[ftmp5], %[ftmp6] \n\t" 656 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t" 657 "punpcklbh %[ftmp6], %[ftmp4], %[ftmp0] \n\t" 658 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t" 659 "pmullh %[ftmp6], %[ftmp6], %[D] \n\t" 660 "paddh %[ftmp2], %[ftmp5], %[ftmp6] \n\t" 661 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 662 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 663 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t" 664 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 665 MMI_LWC1(%[ftmp2], %[dst], 0x00)
666 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 668 "addi %[h], %[h], -0x01 \n\t" 669 MMI_SWC1(%[ftmp1], %[dst], 0x00)
670 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 672 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
673 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
674 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
675 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
678 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
681 [A]
"f"(A), [
B]
"f"(
B),
686 const int step = C ?
stride : 1;
688 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 689 "dli %[tmp0], 0x06 \n\t" 690 "pshufh %[A], %[A], %[ftmp0] \n\t" 691 "pshufh %[E], %[E], %[ftmp0] \n\t" 692 "mtc1 %[tmp0], %[ftmp5] \n\t" 695 MMI_ULWC1(%[ftmp1], %[src], 0x00)
696 PTR_ADDU "%[addr0], %[src], %[step] \n\t" 697 MMI_ULWC1(%[ftmp2], %[addr0], 0x00)
698 PTR_ADDU "%[src], %[src], %[stride] \n\t" 699 "addi %[h], %[h], -0x01 \n\t" 700 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" 701 "punpcklbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t" 702 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t" 703 "pmullh %[ftmp4], %[ftmp4], %[E] \n\t" 704 "paddh %[ftmp1], %[ftmp3], %[ftmp4] \n\t" 705 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t" 706 "psrlh %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 707 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 708 MMI_LWC1(%[ftmp2], %[dst], 0x00)
709 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t" 710 MMI_SWC1(%[ftmp1], %[dst], 0x00)
711 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 713 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
714 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
715 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
718 [addr0]
"=&r"(addr[0]),
719 [dst]
"+&r"(dst), [src]
"+&r"(src),
729 MMI_ULWC1(%[ftmp0], %[src], 0x00)
730 PTR_ADDU "%[src], %[src], %[stride] \n\t" 731 MMI_ULWC1(%[ftmp1], %[src], 0x00)
732 PTR_ADDU "%[src], %[src], %[stride] \n\t" 733 "addi %[h], %[h], -0x02 \n\t" 734 MMI_LWC1(%[ftmp2], %[dst], 0x00)
735 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t" 736 MMI_SWC1(%[ftmp0], %[dst], 0x00)
737 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 738 MMI_LWC1(%[ftmp3], %[dst], 0x00)
739 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t" 740 MMI_SWC1(%[ftmp1], %[dst], 0x00)
741 PTR_ADDU "%[dst], %[dst], %[stride] \n\t" 743 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
744 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
745 [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)