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),
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),
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),