42 MMI_ULDC1(%[ftmp0], %[
src], 0x00)
43 PTR_ADDU "%[src], %[src], %[stride] \n\t"
44 MMI_ULDC1(%[ftmp1], %[
src], 0x00)
45 PTR_ADDU "%[src], %[src], %[stride] \n\t"
46 MMI_ULDC1(%[ftmp2], %[
src], 0x00)
47 PTR_ADDU "%[src], %[src], %[stride] \n\t"
48 MMI_ULDC1(%[ftmp3], %[
src], 0x00)
49 PTR_ADDU "%[src], %[src], %[stride] \n\t"
51 "addi %[h], %[h], -0x04 \n\t"
53 MMI_SDC1(%[ftmp0], %[dst], 0x00)
54 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
55 MMI_SDC1(%[ftmp1], %[dst], 0x00)
56 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
57 MMI_SDC1(%[ftmp2], %[dst], 0x00)
58 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
59 MMI_SDC1(%[ftmp3], %[dst], 0x00)
60 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
63 [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
64 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
65 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
75 A.i = 64 -
D.i -
B.i -
C.i;
78 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
79 "pshufh %[A], %[A], %[ftmp0] \n\t"
80 "pshufh %[B], %[B], %[ftmp0] \n\t"
81 "mtc1 %[tmp0], %[ftmp9] \n\t"
82 "pshufh %[C], %[C], %[ftmp0] \n\t"
83 "pshufh %[D], %[D], %[ftmp0] \n\t"
86 MMI_ULDC1(%[ftmp1], %[
src], 0x00)
87 MMI_ULDC1(%[ftmp2], %[
src], 0x01)
88 PTR_ADDU "%[src], %[src], %[stride] \n\t"
89 MMI_ULDC1(%[ftmp3], %[
src], 0x00)
90 MMI_ULDC1(%[ftmp4], %[
src], 0x01)
91 PTR_ADDU "%[src], %[src], %[stride] \n\t"
92 MMI_ULDC1(%[ftmp10], %[
src], 0x00)
93 MMI_ULDC1(%[ftmp11], %[
src], 0x01)
94 "addi %[h], %[h], -0x02 \n\t"
96 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t"
97 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t"
98 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t"
99 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t"
100 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t"
101 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t"
102 "paddh %[ftmp1], %[ftmp5], %[ftmp7] \n\t"
103 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t"
104 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t"
105 "paddh %[ftmp2], %[ftmp6], %[ftmp8] \n\t"
106 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t"
107 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t"
108 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t"
109 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t"
110 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t"
111 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t"
112 "paddh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
113 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t"
114 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t"
115 "paddh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
116 "paddh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
117 "paddh %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
118 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t"
119 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t"
120 "psrlh %[ftmp1], %[ftmp1], %[ftmp9] \n\t"
121 "psrlh %[ftmp2], %[ftmp2], %[ftmp9] \n\t"
122 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
124 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t"
125 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t"
126 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t"
127 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t"
128 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t"
129 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t"
130 "paddh %[ftmp3], %[ftmp5], %[ftmp7] \n\t"
131 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t"
132 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t"
133 "paddh %[ftmp4], %[ftmp6], %[ftmp8] \n\t"
134 "punpcklbh %[ftmp5], %[ftmp10], %[ftmp0] \n\t"
135 "punpckhbh %[ftmp6], %[ftmp10], %[ftmp0] \n\t"
136 "punpcklbh %[ftmp7], %[ftmp11], %[ftmp0] \n\t"
137 "punpckhbh %[ftmp8], %[ftmp11], %[ftmp0] \n\t"
138 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t"
139 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t"
140 "paddh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
141 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t"
142 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t"
143 "paddh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
144 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
145 "paddh %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
146 "paddh %[ftmp3], %[ftmp3], %[ff_pw_32] \n\t"
147 "paddh %[ftmp4], %[ftmp4], %[ff_pw_32] \n\t"
148 "psrlh %[ftmp3], %[ftmp3], %[ftmp9] \n\t"
149 "psrlh %[ftmp4], %[ftmp4], %[ftmp9] \n\t"
150 "packushb %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
152 MMI_SDC1(%[ftmp1], %[dst], 0x00)
153 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
154 MMI_SDC1(%[ftmp3], %[dst], 0x00)
155 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
158 [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
159 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
160 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
161 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
162 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
163 [ftmp10]
"=&f"(ftmp[10]), [ftmp11]
"=&f"(ftmp[11]),
164 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
167 [
A]
"f"(
A.f), [
B]
"f"(
B.f),
168 [
C]
"f"(
C.f), [
D]
"f"(
D.f),
178 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
179 "pshufh %[A], %[A], %[ftmp0] \n\t"
180 "pshufh %[E], %[E], %[ftmp0] \n\t"
181 "mtc1 %[tmp0], %[ftmp7] \n\t"
184 MMI_ULDC1(%[ftmp1], %[
src], 0x00)
185 MMI_ULDC1(%[ftmp2], %[
src], 0x01)
186 "addi %[h], %[h], -0x01 \n\t"
187 PTR_ADDU "%[src], %[src], %[stride] \n\t"
189 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t"
190 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t"
191 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t"
192 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t"
193 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t"
194 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t"
195 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t"
196 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t"
197 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t"
198 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t"
200 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t"
201 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t"
202 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
203 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \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 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
217 [
A]
"f"(
A.f), [
E]
"f"(
E.f)
226 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
227 "pshufh %[A], %[A], %[ftmp0] \n\t"
228 "pshufh %[E], %[E], %[ftmp0] \n\t"
229 "mtc1 %[tmp0], %[ftmp7] \n\t"
232 MMI_ULDC1(%[ftmp1], %[
src], 0x00)
233 PTR_ADDU "%[src], %[src], %[stride] \n\t"
234 MMI_ULDC1(%[ftmp2], %[
src], 0x00)
235 PTR_ADDU "%[src], %[src], %[stride] \n\t"
236 MMI_ULDC1(%[ftmp8], %[
src], 0x00)
237 "addi %[h], %[h], -0x02 \n\t"
239 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t"
240 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t"
241 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t"
242 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t"
243 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t"
244 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t"
245 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
246 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t"
247 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t"
248 "paddh %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
249 "paddh %[ftmp3], %[ftmp3], %[ff_pw_32] \n\t"
250 "paddh %[ftmp4], %[ftmp4], %[ff_pw_32] \n\t"
251 "psrlh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
252 "psrlh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
253 "packushb %[ftmp1], %[ftmp3], %[ftmp4] \n\t"
255 "punpcklbh %[ftmp3], %[ftmp2], %[ftmp0] \n\t"
256 "punpckhbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t"
257 "punpcklbh %[ftmp5], %[ftmp8], %[ftmp0] \n\t"
258 "punpckhbh %[ftmp6], %[ftmp8], %[ftmp0] \n\t"
259 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t"
260 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t"
261 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
262 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t"
263 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t"
264 "paddh %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
265 "paddh %[ftmp3], %[ftmp3], %[ff_pw_32] \n\t"
266 "paddh %[ftmp4], %[ftmp4], %[ff_pw_32] \n\t"
267 "psrlh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
268 "psrlh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
269 "packushb %[ftmp2], %[ftmp3], %[ftmp4] \n\t"
271 MMI_SDC1(%[ftmp1], %[dst], 0x00)
272 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
273 MMI_SDC1(%[ftmp2], %[dst], 0x00)
274 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
277 [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
278 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
279 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
280 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
281 [ftmp8]
"=&f"(ftmp[8]),
282 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
286 [
E]
"f"(
E.f), [tmp0]
"r"(0x06)
305 MMI_ULDC1(%[ftmp0], %[
src], 0x00)
306 PTR_ADDU "%[src], %[src], %[stride] \n\t"
307 MMI_ULDC1(%[ftmp1], %[
src], 0x00)
308 PTR_ADDU "%[src], %[src], %[stride] \n\t"
309 MMI_LDC1(%[ftmp2], %[dst], 0x00)
310 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
311 MMI_LDC1(%[ftmp3], %[dst], 0x00)
312 PTR_SUBU "%[dst], %[dst], %[stride] \n\t"
313 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
314 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
315 MMI_SDC1(%[ftmp0], %[dst], 0x00)
316 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
317 MMI_SDC1(%[ftmp1], %[dst], 0x00)
318 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
319 "addi %[h], %[h], -0x02 \n\t"
322 [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
323 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
324 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
332 B.i = (x << 3) -
D.i;
333 C.i = (y << 3) -
D.i;
334 A.i = 64 -
D.i -
B.i -
C.i;
336 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
337 "pshufh %[A], %[A], %[ftmp0] \n\t"
338 "pshufh %[B], %[B], %[ftmp0] \n\t"
339 "mtc1 %[tmp0], %[ftmp9] \n\t"
340 "pshufh %[C], %[C], %[ftmp0] \n\t"
341 "pshufh %[D], %[D], %[ftmp0] \n\t"
344 MMI_ULDC1(%[ftmp1], %[
src], 0x00)
345 MMI_ULDC1(%[ftmp2], %[
src], 0x01)
346 PTR_ADDU "%[src], %[src], %[stride] \n\t"
347 MMI_ULDC1(%[ftmp3], %[
src], 0x00)
348 MMI_ULDC1(%[ftmp4], %[
src], 0x01)
349 "addi %[h], %[h], -0x01 \n\t"
351 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t"
352 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t"
353 "punpcklbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t"
354 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t"
355 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t"
356 "pmullh %[ftmp7], %[ftmp7], %[B] \n\t"
357 "paddh %[ftmp1], %[ftmp5], %[ftmp7] \n\t"
358 "pmullh %[ftmp6], %[ftmp6], %[A] \n\t"
359 "pmullh %[ftmp8], %[ftmp8], %[B] \n\t"
360 "paddh %[ftmp2], %[ftmp6], %[ftmp8] \n\t"
362 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t"
363 "punpckhbh %[ftmp6], %[ftmp3], %[ftmp0] \n\t"
364 "punpcklbh %[ftmp7], %[ftmp4], %[ftmp0] \n\t"
365 "punpckhbh %[ftmp8], %[ftmp4], %[ftmp0] \n\t"
366 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t"
367 "pmullh %[ftmp7], %[ftmp7], %[D] \n\t"
368 "paddh %[ftmp3], %[ftmp5], %[ftmp7] \n\t"
369 "pmullh %[ftmp6], %[ftmp6], %[C] \n\t"
370 "pmullh %[ftmp8], %[ftmp8], %[D] \n\t"
371 "paddh %[ftmp4], %[ftmp6], %[ftmp8] \n\t"
373 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
374 "paddh %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
375 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t"
376 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t"
377 "psrlh %[ftmp1], %[ftmp1], %[ftmp9] \n\t"
378 "psrlh %[ftmp2], %[ftmp2], %[ftmp9] \n\t"
379 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
380 MMI_LDC1(%[ftmp2], %[dst], 0x00)
381 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
382 MMI_SDC1(%[ftmp1], %[dst], 0x00)
383 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
386 [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
387 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
388 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
389 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
390 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
391 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
394 [
A]
"f"(
A.f), [
B]
"f"(
B.f),
395 [
C]
"f"(
C.f), [
D]
"f"(
D.f),
404 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
405 "pshufh %[A], %[A], %[ftmp0] \n\t"
406 "pshufh %[E], %[E], %[ftmp0] \n\t"
407 "mtc1 %[tmp0], %[ftmp7] \n\t"
410 MMI_ULDC1(%[ftmp1], %[
src], 0x00)
411 MMI_ULDC1(%[ftmp2], %[
src], 0x01)
412 PTR_ADDU "%[src], %[src], %[stride] \n\t"
413 "addi %[h], %[h], -0x01 \n\t"
415 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t"
416 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t"
417 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t"
418 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t"
419 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t"
420 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t"
421 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t"
422 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t"
423 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t"
424 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t"
426 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t"
427 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t"
428 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
429 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
430 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
431 MMI_LDC1(%[ftmp2], %[dst], 0x00)
432 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
433 MMI_SDC1(%[ftmp1], %[dst], 0x00)
434 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
437 [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
438 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
439 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
440 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
441 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
445 [
A]
"f"(
A.f), [
E]
"f"(
E.f)
453 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
454 "pshufh %[A], %[A], %[ftmp0] \n\t"
455 "pshufh %[E], %[E], %[ftmp0] \n\t"
456 "mtc1 %[tmp0], %[ftmp7] \n\t"
459 MMI_ULDC1(%[ftmp1], %[
src], 0x00)
460 PTR_ADDU "%[src], %[src], %[stride] \n\t"
461 MMI_ULDC1(%[ftmp2], %[
src], 0x00)
462 "addi %[h], %[h], -0x01 \n\t"
464 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t"
465 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t"
466 "punpcklbh %[ftmp5], %[ftmp2], %[ftmp0] \n\t"
467 "punpckhbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t"
468 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t"
469 "pmullh %[ftmp5], %[ftmp5], %[E] \n\t"
470 "paddh %[ftmp1], %[ftmp3], %[ftmp5] \n\t"
471 "pmullh %[ftmp4], %[ftmp4], %[A] \n\t"
472 "pmullh %[ftmp6], %[ftmp6], %[E] \n\t"
473 "paddh %[ftmp2], %[ftmp4], %[ftmp6] \n\t"
475 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t"
476 "paddh %[ftmp2], %[ftmp2], %[ff_pw_32] \n\t"
477 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
478 "psrlh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
479 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
480 MMI_LDC1(%[ftmp2], %[dst], 0x00)
481 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
482 MMI_SDC1(%[ftmp1], %[dst], 0x00)
483 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
486 [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
487 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
488 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
489 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
490 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
494 [
A]
"f"(
A.f), [
E]
"f"(
E.f)
507 A.i = (8 - x) * (8 - y);
515 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
516 "pshufh %[A], %[A], %[ftmp0] \n\t"
517 "pshufh %[B], %[B], %[ftmp0] \n\t"
518 "mtc1 %[tmp0], %[ftmp7] \n\t"
519 "pshufh %[C], %[C], %[ftmp0] \n\t"
520 "pshufh %[D], %[D], %[ftmp0] \n\t"
523 MMI_ULWC1(%[ftmp1], %[
src], 0x00)
524 MMI_ULWC1(%[ftmp2], %[
src], 0x01)
525 PTR_ADDU "%[src], %[src], %[stride] \n\t"
526 MMI_ULWC1(%[ftmp3], %[
src], 0x00)
527 MMI_ULWC1(%[ftmp4], %[
src], 0x01)
529 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t"
530 "punpcklbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t"
531 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t"
532 "pmullh %[ftmp6], %[ftmp6], %[B] \n\t"
533 "paddh %[ftmp1], %[ftmp5], %[ftmp6] \n\t"
534 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t"
535 "punpcklbh %[ftmp6], %[ftmp4], %[ftmp0] \n\t"
536 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t"
537 "pmullh %[ftmp6], %[ftmp6], %[D] \n\t"
538 "paddh %[ftmp2], %[ftmp5], %[ftmp6] \n\t"
539 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
540 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t"
541 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
542 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
544 "addi %[h], %[h], -0x01 \n\t"
545 MMI_SWC1(%[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),
556 [
A]
"f"(
A.f), [
B]
"f"(
B.f),
557 [
C]
"f"(
C.f), [
D]
"f"(
D.f),
564 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
565 "pshufh %[A], %[A], %[ftmp0] \n\t"
566 "pshufh %[E], %[E], %[ftmp0] \n\t"
567 "mtc1 %[tmp0], %[ftmp5] \n\t"
570 MMI_ULWC1(%[ftmp1], %[
src], 0x00)
571 PTR_ADDU "%[addr0], %[src], %[step] \n\t"
572 MMI_ULWC1(%[ftmp2], %[addr0], 0x00)
573 PTR_ADDU "%[src], %[src], %[stride] \n\t"
574 "addi %[h], %[h], -0x01 \n\t"
575 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t"
576 "punpcklbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t"
577 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t"
578 "pmullh %[ftmp4], %[ftmp4], %[E] \n\t"
579 "paddh %[ftmp1], %[ftmp3], %[ftmp4] \n\t"
580 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t"
581 "psrlh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
582 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
583 MMI_SWC1(%[ftmp1], %[dst], 0x00)
584 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
586 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
587 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
588 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
590 [addr0]
"=&r"(addr[0]),
591 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
595 [
A]
"f"(
A.f), [
E]
"f"(
E.f)
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),
628 A.i = (8 - x) *(8 - y);
636 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
637 "pshufh %[A], %[A], %[ftmp0] \n\t"
638 "pshufh %[B], %[B], %[ftmp0] \n\t"
639 "mtc1 %[tmp0], %[ftmp7] \n\t"
640 "pshufh %[C], %[C], %[ftmp0] \n\t"
641 "pshufh %[D], %[D], %[ftmp0] \n\t"
644 MMI_ULWC1(%[ftmp1], %[
src], 0x00)
645 MMI_ULWC1(%[ftmp2], %[
src], 0x01)
646 PTR_ADDU "%[src], %[src], %[stride] \n\t"
647 MMI_ULWC1(%[ftmp3], %[
src], 0x00)
648 MMI_ULWC1(%[ftmp4], %[
src], 0x01)
650 "punpcklbh %[ftmp5], %[ftmp1], %[ftmp0] \n\t"
651 "punpcklbh %[ftmp6], %[ftmp2], %[ftmp0] \n\t"
652 "pmullh %[ftmp5], %[ftmp5], %[A] \n\t"
653 "pmullh %[ftmp6], %[ftmp6], %[B] \n\t"
654 "paddh %[ftmp1], %[ftmp5], %[ftmp6] \n\t"
655 "punpcklbh %[ftmp5], %[ftmp3], %[ftmp0] \n\t"
656 "punpcklbh %[ftmp6], %[ftmp4], %[ftmp0] \n\t"
657 "pmullh %[ftmp5], %[ftmp5], %[C] \n\t"
658 "pmullh %[ftmp6], %[ftmp6], %[D] \n\t"
659 "paddh %[ftmp2], %[ftmp5], %[ftmp6] \n\t"
660 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
661 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t"
662 "psrlh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
663 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
664 MMI_LWC1(%[ftmp2], %[dst], 0x00)
665 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
667 "addi %[h], %[h], -0x01 \n\t"
668 MMI_SWC1(%[ftmp1], %[dst], 0x00)
669 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
671 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
672 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
673 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
674 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
676 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
679 [
A]
"f"(
A.f), [
B]
"f"(
B.f),
680 [
C]
"f"(
C.f), [
D]
"f"(
D.f),
687 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
688 "pshufh %[A], %[A], %[ftmp0] \n\t"
689 "pshufh %[E], %[E], %[ftmp0] \n\t"
690 "mtc1 %[tmp0], %[ftmp5] \n\t"
693 MMI_ULWC1(%[ftmp1], %[
src], 0x00)
694 PTR_ADDU "%[addr0], %[src], %[step] \n\t"
695 MMI_ULWC1(%[ftmp2], %[addr0], 0x00)
696 PTR_ADDU "%[src], %[src], %[stride] \n\t"
697 "addi %[h], %[h], -0x01 \n\t"
698 "punpcklbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t"
699 "punpcklbh %[ftmp4], %[ftmp2], %[ftmp0] \n\t"
700 "pmullh %[ftmp3], %[ftmp3], %[A] \n\t"
701 "pmullh %[ftmp4], %[ftmp4], %[E] \n\t"
702 "paddh %[ftmp1], %[ftmp3], %[ftmp4] \n\t"
703 "paddh %[ftmp1], %[ftmp1], %[ff_pw_32] \n\t"
704 "psrlh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
705 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
706 MMI_LWC1(%[ftmp2], %[dst], 0x00)
707 "pavgb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
708 MMI_SWC1(%[ftmp1], %[dst], 0x00)
709 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
711 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
712 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
713 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
715 [addr0]
"=&r"(addr[0]),
716 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
720 [
A]
"f"(
A.f), [
E]
"f"(
E.f)
726 MMI_ULWC1(%[ftmp0], %[
src], 0x00)
727 PTR_ADDU "%[src], %[src], %[stride] \n\t"
728 MMI_ULWC1(%[ftmp1], %[
src], 0x00)
729 PTR_ADDU "%[src], %[src], %[stride] \n\t"
730 "addi %[h], %[h], -0x02 \n\t"
731 MMI_LWC1(%[ftmp2], %[dst], 0x00)
732 "pavgb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
733 MMI_SWC1(%[ftmp0], %[dst], 0x00)
734 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
735 MMI_LWC1(%[ftmp3], %[dst], 0x00)
736 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
737 MMI_SWC1(%[ftmp1], %[dst], 0x00)
738 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
740 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
741 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
742 [dst]
"+&r"(dst), [
src]
"+&r"(
src),