36 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
37 MMI_LDC1(%[ftmp1], %[
src], 0x00)
38 MMI_LDC1(%[ftmp2], %[
src], 0x08)
39 MMI_LDC1(%[ftmp3], %[
src], 0x10)
40 MMI_LDC1(%[ftmp4], %[
src], 0x18)
42 "gssqc1 %[ftmp0], %[ftmp0], 0x00(%[src]) \n\t"
43 "gssqc1 %[ftmp0], %[ftmp0], 0x10(%[src]) \n\t"
44 MMI_ULWC1(%[ftmp5], %[dst0], 0x00)
45 MMI_ULWC1(%[ftmp6], %[dst1], 0x00)
46 MMI_ULWC1(%[ftmp7], %[dst2], 0x00)
47 MMI_ULWC1(%[ftmp8], %[dst3], 0x00)
48 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
49 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
50 "punpcklbh %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
51 "punpcklbh %[ftmp8], %[ftmp8], %[ftmp0] \n\t"
52 "paddh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
53 "paddh %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
54 "paddh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
55 "paddh %[ftmp4], %[ftmp4], %[ftmp8] \n\t"
56 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
57 "packushb %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
58 "packushb %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
59 "packushb %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
60 MMI_SWC1(%[ftmp1], %[dst0], 0x00)
61 MMI_SWC1(%[ftmp2], %[dst1], 0x00)
62 MMI_SWC1(%[ftmp3], %[dst2], 0x00)
63 MMI_SWC1(%[ftmp4], %[dst3], 0x00)
64 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
65 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
66 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
67 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
70 : [dst0]
"r"(dst), [dst1]
"r"(dst+
stride),
86 MMI_LDC1(%[ftmp0], %[
block], 0x00)
87 MMI_LDC1(%[ftmp1], %[
block], 0x08)
88 MMI_LDC1(%[ftmp2], %[
block], 0x10)
89 MMI_LDC1(%[ftmp3], %[
block], 0x18)
91 "xor %[ftmp4], %[ftmp4], %[ftmp4] \n\t"
92 "gssqc1 %[ftmp4], %[ftmp4], 0x00(%[block]) \n\t"
93 "gssqc1 %[ftmp4], %[ftmp4], 0x10(%[block]) \n\t"
94 "dli %[tmp0], 0x01 \n\t"
95 "mtc1 %[tmp0], %[ftmp8] \n\t"
96 "dli %[tmp0], 0x06 \n\t"
97 "mtc1 %[tmp0], %[ftmp9] \n\t"
98 "psrah %[ftmp4], %[ftmp1], %[ftmp8] \n\t"
99 "psrah %[ftmp5], %[ftmp3], %[ftmp8] \n\t"
100 "psubh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
101 "paddh %[ftmp5], %[ftmp5], %[ftmp1] \n\t"
102 "paddh %[ftmp10], %[ftmp2], %[ftmp0] \n\t"
103 "psubh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
104 "paddh %[ftmp11], %[ftmp5], %[ftmp10] \n\t"
105 "psubh %[ftmp2], %[ftmp10], %[ftmp5] \n\t"
106 "paddh %[ftmp10], %[ftmp4], %[ftmp0] \n\t"
107 "psubh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
108 "punpckhhw %[ftmp1], %[ftmp11], %[ftmp10] \n\t"
109 "punpcklhw %[ftmp5], %[ftmp11], %[ftmp10] \n\t"
110 "punpckhhw %[ftmp4], %[ftmp0], %[ftmp2] \n\t"
111 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
112 "punpckhwd %[ftmp2], %[ftmp5], %[ftmp0] \n\t"
113 "punpcklwd %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
114 "punpcklwd %[ftmp10], %[ftmp1], %[ftmp4] \n\t"
115 "punpckhwd %[ftmp0], %[ftmp1], %[ftmp4] \n\t"
116 "paddh %[ftmp5], %[ftmp5], %[ff_pw_32] \n\t"
117 "psrah %[ftmp4], %[ftmp2], %[ftmp8] \n\t"
118 "psrah %[ftmp3], %[ftmp0], %[ftmp8] \n\t"
119 "psubh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
120 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
121 "paddh %[ftmp1], %[ftmp10], %[ftmp5] \n\t"
122 "psubh %[ftmp5], %[ftmp5], %[ftmp10] \n\t"
123 "paddh %[ftmp10], %[ftmp3], %[ftmp1] \n\t"
124 "psubh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
125 "paddh %[ftmp11], %[ftmp4], %[ftmp5] \n\t"
126 "psubh %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
127 MMI_ULWC1(%[ftmp2], %[dst], 0x00)
128 MMI_LWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
129 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
130 "psrah %[ftmp3], %[ftmp10], %[ftmp9] \n\t"
131 "psrah %[ftmp4], %[ftmp11], %[ftmp9] \n\t"
132 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
133 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
134 "paddh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
135 "paddh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
136 "packushb %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
137 "packushb %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
138 MMI_SWC1(%[ftmp2], %[dst], 0x00)
139 MMI_SWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
140 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
141 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
142 MMI_ULWC1(%[ftmp2], %[dst], 0x00)
143 "psrah %[ftmp5], %[ftmp5], %[ftmp9] \n\t"
144 MMI_LWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
145 "psrah %[ftmp1], %[ftmp1], %[ftmp9] \n\t"
146 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
147 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
148 "paddh %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
149 "paddh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
150 "packushb %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
151 MMI_SWC1(%[ftmp2], %[dst], 0x00)
152 "packushb %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
153 MMI_SWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
154 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
155 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
156 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
157 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
158 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
159 [ftmp10]
"=&f"(ftmp[10]), [ftmp11]
"=&f"(ftmp[11]),
179 "lhu %[tmp0], 0x00(%[block]) \n\t"
182 MMI_LDC1(%[ftmp1], %[
block], 0x10)
183 "sh %[tmp0], 0x00(%[block]) \n\t"
184 MMI_LDC1(%[ftmp2], %[
block], 0x20)
185 "dli %[tmp0], 0x01 \n\t"
186 MMI_LDC1(%[ftmp3], %[
block], 0x30)
187 "mtc1 %[tmp0], %[ftmp8] \n\t"
188 MMI_LDC1(%[ftmp5], %[
block], 0x50)
189 MMI_LDC1(%[ftmp6], %[
block], 0x60)
190 MMI_LDC1(%[ftmp7], %[
block], 0x70)
191 "mov.d %[ftmp0], %[ftmp1] \n\t"
192 "psrah %[ftmp1], %[ftmp1], %[ftmp8] \n\t"
193 "psrah %[ftmp4], %[ftmp5], %[ftmp8] \n\t"
194 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
195 "paddh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
196 "paddh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
197 "paddh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
198 "paddh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
199 "psubh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
200 "psubh %[ftmp0], %[ftmp0], %[ftmp3] \n\t"
201 "psubh %[ftmp5], %[ftmp5], %[ftmp3] \n\t"
202 "psrah %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
203 "paddh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
204 "psubh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
205 "psrah %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
206 "psubh %[ftmp0], %[ftmp0], %[ftmp3] \n\t"
207 "dli %[tmp0], 0x02 \n\t"
208 "psubh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
209 "mtc1 %[tmp0], %[ftmp9] \n\t"
210 "mov.d %[ftmp7], %[ftmp1] \n\t"
211 "psrah %[ftmp1], %[ftmp1], %[ftmp9] \n\t"
212 "psrah %[ftmp3], %[ftmp4], %[ftmp9] \n\t"
213 "paddh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
214 "psrah %[ftmp0], %[ftmp0], %[ftmp9] \n\t"
215 "paddh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
216 "psrah %[ftmp5], %[ftmp5], %[ftmp9] \n\t"
217 "psubh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
218 "psubh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
219 "mov.d %[ftmp5], %[ftmp6] \n\t"
220 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
221 "psrah %[ftmp4], %[ftmp2], %[ftmp8] \n\t"
222 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
223 "psubh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
224 MMI_LDC1(%[ftmp2], %[
block], 0x00)
225 MMI_LDC1(%[ftmp5], %[
block], 0x40)
226 "paddh %[ftmp5], %[ftmp5], %[ftmp2] \n\t"
227 "paddh %[ftmp2], %[ftmp2], %[ftmp2] \n\t"
228 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
229 "psubh %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
230 "paddh %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
231 "paddh %[ftmp4], %[ftmp4], %[ftmp2] \n\t"
232 "psubh %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
233 "paddh %[ftmp2], %[ftmp2], %[ftmp2] \n\t"
234 "paddh %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
235 "psubh %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
236 "paddh %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
237 "paddh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
238 "psubh %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
239 "paddh %[ftmp4], %[ftmp4], %[ftmp4] \n\t"
240 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
241 "psubh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
242 "paddh %[ftmp2], %[ftmp2], %[ftmp2] \n\t"
243 "paddh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
244 "psubh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
245 "paddh %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
246 MMI_SDC1(%[ftmp6], %[
block], 0x00)
247 "psubh %[ftmp5], %[ftmp5], %[ftmp1] \n\t"
248 "punpckhhw %[ftmp6], %[ftmp7], %[ftmp0] \n\t"
249 "punpcklhw %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
250 "punpckhhw %[ftmp0], %[ftmp3], %[ftmp1] \n\t"
251 "punpcklhw %[ftmp3], %[ftmp3], %[ftmp1] \n\t"
252 "punpckhwd %[ftmp1], %[ftmp7], %[ftmp3] \n\t"
253 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
254 "punpckhwd %[ftmp3], %[ftmp6], %[ftmp0] \n\t"
255 "punpcklwd %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
256 MMI_LDC1(%[ftmp0], %[
block], 0x00)
257 MMI_SDC1(%[ftmp7], $29, 0x00)
258 MMI_SDC1(%[ftmp1], $29, 0x10)
259 "dmfc1 %[tmp1], %[ftmp6] \n\t"
260 "dmfc1 %[tmp3], %[ftmp3] \n\t"
261 "punpckhhw %[ftmp3], %[ftmp5], %[ftmp2] \n\t"
262 "punpcklhw %[ftmp5], %[ftmp5], %[ftmp2] \n\t"
263 "punpckhhw %[ftmp2], %[ftmp4], %[ftmp0] \n\t"
264 "punpcklhw %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
265 "punpckhwd %[ftmp0], %[ftmp5], %[ftmp4] \n\t"
266 "punpcklwd %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
267 "punpckhwd %[ftmp4], %[ftmp3], %[ftmp2] \n\t"
268 "punpcklwd %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
269 MMI_SDC1(%[ftmp5], $29, 0x08)
270 MMI_SDC1(%[ftmp0], $29, 0x18)
271 "dmfc1 %[tmp2], %[ftmp3] \n\t"
272 "dmfc1 %[tmp4], %[ftmp4] \n\t"
273 MMI_LDC1(%[ftmp1], %[
block], 0x18)
274 MMI_LDC1(%[ftmp6], %[
block], 0x28)
275 MMI_LDC1(%[ftmp2], %[
block], 0x38)
276 MMI_LDC1(%[ftmp0], %[
block], 0x58)
277 MMI_LDC1(%[ftmp3], %[
block], 0x68)
278 MMI_LDC1(%[ftmp4], %[
block], 0x78)
279 "mov.d %[ftmp7], %[ftmp1] \n\t"
280 "psrah %[ftmp5], %[ftmp0], %[ftmp8] \n\t"
281 "psrah %[ftmp1], %[ftmp1], %[ftmp8] \n\t"
282 "paddh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
283 "paddh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
284 "paddh %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
285 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
286 "psubh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
287 "paddh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
288 "psubh %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
289 "psubh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
290 "psrah %[ftmp2], %[ftmp2], %[ftmp8] \n\t"
291 "paddh %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
292 "psubh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
293 "psrah %[ftmp4], %[ftmp4], %[ftmp8] \n\t"
294 "psubh %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
295 "psubh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
296 "mov.d %[ftmp4], %[ftmp1] \n\t"
297 "psrah %[ftmp2], %[ftmp5], %[ftmp9] \n\t"
298 "psrah %[ftmp1], %[ftmp1], %[ftmp9] \n\t"
299 "paddh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
300 "psrah %[ftmp7], %[ftmp7], %[ftmp9] \n\t"
301 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
302 "psrah %[ftmp0], %[ftmp0], %[ftmp9] \n\t"
303 "psubh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
304 "psubh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
305 "mov.d %[ftmp0], %[ftmp3] \n\t"
306 "psrah %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
307 "psrah %[ftmp5], %[ftmp6], %[ftmp8] \n\t"
308 "paddh %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
309 "psubh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
310 MMI_LDC1(%[ftmp6], %[
block], 0x08)
311 MMI_LDC1(%[ftmp0], %[
block], 0x48)
312 "paddh %[ftmp0], %[ftmp0], %[ftmp6] \n\t"
313 "paddh %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
314 "paddh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
315 "psubh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
316 "paddh %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
317 "paddh %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
318 "psubh %[ftmp0], %[ftmp0], %[ftmp3] \n\t"
319 "paddh %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
320 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
321 "psubh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
322 "paddh %[ftmp3], %[ftmp3], %[ftmp3] \n\t"
323 "paddh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
324 "psubh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
325 "paddh %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
326 "paddh %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
327 "psubh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
328 "paddh %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
329 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
330 "psubh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
331 "paddh %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
332 MMI_SDC1(%[ftmp3], %[
block], 0x08)
333 "psubh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
334 "punpckhhw %[ftmp3], %[ftmp4], %[ftmp7] \n\t"
335 "punpcklhw %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
336 "punpckhhw %[ftmp7], %[ftmp2], %[ftmp1] \n\t"
337 "punpcklhw %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
338 "punpckhwd %[ftmp1], %[ftmp4], %[ftmp2] \n\t"
339 "punpcklwd %[ftmp4], %[ftmp4], %[ftmp2] \n\t"
340 "punpckhwd %[ftmp2], %[ftmp3], %[ftmp7] \n\t"
341 "punpcklwd %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
342 MMI_LDC1(%[ftmp7], %[
block], 0x08)
343 "dmfc1 %[tmp5], %[ftmp4] \n\t"
344 "mov.d %[ftmp10], %[ftmp1] \n\t"
345 "mov.d %[ftmp12], %[ftmp3] \n\t"
346 "mov.d %[ftmp14], %[ftmp2] \n\t"
347 "punpckhhw %[ftmp2], %[ftmp0], %[ftmp6] \n\t"
348 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp6] \n\t"
349 "punpckhhw %[ftmp6], %[ftmp5], %[ftmp7] \n\t"
350 "punpcklhw %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
351 "punpckhwd %[ftmp7], %[ftmp0], %[ftmp5] \n\t"
352 "punpcklwd %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
353 "punpckhwd %[ftmp5], %[ftmp2], %[ftmp6] \n\t"
354 "punpcklwd %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
355 "dmfc1 %[tmp6], %[ftmp0] \n\t"
356 "mov.d %[ftmp11], %[ftmp7] \n\t"
357 "mov.d %[ftmp13], %[ftmp2] \n\t"
358 "mov.d %[ftmp15], %[ftmp5] \n\t"
360 "mov.d %[ftmp7], %[ftmp10] \n\t"
361 "dmtc1 %[tmp3], %[ftmp6] \n\t"
362 MMI_LDC1(%[ftmp1], $29, 0x10)
363 "dmtc1 %[tmp1], %[ftmp3] \n\t"
364 "mov.d %[ftmp4], %[ftmp1] \n\t"
365 "psrah %[ftmp1], %[ftmp1], %[ftmp8] \n\t"
366 "psrah %[ftmp0], %[ftmp7], %[ftmp8] \n\t"
367 "paddh %[ftmp1], %[ftmp1], %[ftmp4] \n\t"
368 "paddh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
369 "paddh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
370 "paddh %[ftmp0], %[ftmp0], %[ftmp14] \n\t"
371 "paddh %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
372 "psubh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
373 "psubh %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
374 "psubh %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
375 "psrah %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
376 "paddh %[ftmp4], %[ftmp4], %[ftmp14] \n\t"
377 "psubh %[ftmp7], %[ftmp7], %[ftmp14] \n\t"
378 "psrah %[ftmp5], %[ftmp14], %[ftmp8] \n\t"
379 "psubh %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
380 "psubh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
381 "mov.d %[ftmp5], %[ftmp1] \n\t"
382 "psrah %[ftmp1], %[ftmp1], %[ftmp9] \n\t"
383 "psrah %[ftmp6], %[ftmp0], %[ftmp9] \n\t"
384 "paddh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
385 "paddh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
386 "psrah %[ftmp4], %[ftmp4], %[ftmp9] \n\t"
387 "psrah %[ftmp7], %[ftmp7], %[ftmp9] \n\t"
388 "psubh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
389 "psubh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
390 "mov.d %[ftmp7], %[ftmp12] \n\t"
391 "psrah %[ftmp2], %[ftmp12], %[ftmp8] \n\t"
392 "psrah %[ftmp0], %[ftmp3], %[ftmp8] \n\t"
393 "paddh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
394 "psubh %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
395 MMI_LDC1(%[ftmp3], $29, 0x00)
396 "dmtc1 %[tmp5], %[ftmp7] \n\t"
397 "paddh %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
398 "paddh %[ftmp3], %[ftmp3], %[ftmp3] \n\t"
399 "paddh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
400 "psubh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
401 "paddh %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
402 "paddh %[ftmp0], %[ftmp0], %[ftmp3] \n\t"
403 "psubh %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
404 "paddh %[ftmp3], %[ftmp3], %[ftmp3] \n\t"
405 "paddh %[ftmp5], %[ftmp5], %[ftmp2] \n\t"
406 "psubh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
407 "paddh %[ftmp2], %[ftmp2], %[ftmp2] \n\t"
408 "paddh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
409 "psubh %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
410 "paddh %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
411 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
412 "psubh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
413 "paddh %[ftmp3], %[ftmp3], %[ftmp3] \n\t"
414 "paddh %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
415 "psubh %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
416 "paddh %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
417 MMI_SDC1(%[ftmp3], $29, 0x00)
418 "psubh %[ftmp7], %[ftmp7], %[ftmp1] \n\t"
419 MMI_SDC1(%[ftmp0], $29, 0x10)
420 "dmfc1 %[tmp1], %[ftmp2] \n\t"
421 "xor %[ftmp2], %[ftmp2], %[ftmp2] \n\t"
422 MMI_SDC1(%[ftmp2], %[
block], 0x00)
423 MMI_SDC1(%[ftmp2], %[
block], 0x08)
424 MMI_SDC1(%[ftmp2], %[
block], 0x10)
425 MMI_SDC1(%[ftmp2], %[
block], 0x18)
426 MMI_SDC1(%[ftmp2], %[
block], 0x20)
427 MMI_SDC1(%[ftmp2], %[
block], 0x28)
428 MMI_SDC1(%[ftmp2], %[
block], 0x30)
429 MMI_SDC1(%[ftmp2], %[
block], 0x38)
430 MMI_SDC1(%[ftmp2], %[
block], 0x40)
431 MMI_SDC1(%[ftmp2], %[
block], 0x48)
432 MMI_SDC1(%[ftmp2], %[
block], 0x50)
433 MMI_SDC1(%[ftmp2], %[
block], 0x58)
434 MMI_SDC1(%[ftmp2], %[
block], 0x60)
435 MMI_SDC1(%[ftmp2], %[
block], 0x68)
436 MMI_SDC1(%[ftmp2], %[
block], 0x70)
437 MMI_SDC1(%[ftmp2], %[
block], 0x78)
438 "dli %[tmp3], 0x06 \n\t"
439 "mtc1 %[tmp3], %[ftmp10] \n\t"
440 MMI_ULWC1(%[ftmp3], %[dst], 0x00)
441 MMI_LWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
442 "psrah %[ftmp5], %[ftmp5], %[ftmp10] \n\t"
443 "psrah %[ftmp4], %[ftmp4], %[ftmp10] \n\t"
444 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
445 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
446 "paddh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
447 "paddh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
448 "packushb %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
449 "packushb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
450 MMI_SWC1(%[ftmp3], %[dst], 0x00)
451 MMI_SWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
452 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
453 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
454 MMI_ULWC1(%[ftmp3], %[dst], 0x00)
455 MMI_LWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
456 "psrah %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
457 "psrah %[ftmp1], %[ftmp1], %[ftmp10] \n\t"
458 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
459 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
460 "paddh %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
461 "paddh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
462 "packushb %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
463 "packushb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
464 MMI_SWC1(%[ftmp3], %[dst], 0x00)
465 MMI_SWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
466 MMI_LDC1(%[ftmp5], $29, 0x00)
467 MMI_LDC1(%[ftmp4], $29, 0x10)
468 "dmtc1 %[tmp1], %[ftmp6] \n\t"
469 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
470 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
471 MMI_ULWC1(%[ftmp3], %[dst], 0x00)
472 MMI_LWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
473 "psrah %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
474 "psrah %[ftmp5], %[ftmp5], %[ftmp10] \n\t"
475 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
476 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
477 "paddh %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
478 "paddh %[ftmp0], %[ftmp0], %[ftmp5] \n\t"
479 "packushb %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
480 "packushb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
481 MMI_SWC1(%[ftmp3], %[dst], 0x00)
482 MMI_SWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
483 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
484 PTR_ADDU "%[dst], %[dst], %[stride] \n\t"
485 MMI_ULWC1(%[ftmp3], %[dst], 0x00)
486 MMI_LWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
487 "psrah %[ftmp4], %[ftmp4], %[ftmp10] \n\t"
488 "psrah %[ftmp6], %[ftmp6], %[ftmp10] \n\t"
489 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
490 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
491 "paddh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
492 "paddh %[ftmp0], %[ftmp0], %[ftmp6] \n\t"
493 "packushb %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
494 "packushb %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
495 MMI_SWC1(%[ftmp3], %[dst], 0x00)
496 MMI_SWXC1(%[ftmp0], %[dst], %[
stride], 0x00)
497 "dmtc1 %[tmp4], %[ftmp1] \n\t"
498 "dmtc1 %[tmp2], %[ftmp6] \n\t"
499 MMI_LDC1(%[ftmp4], $29, 0x18)
500 "mov.d %[ftmp5], %[ftmp4] \n\t"
501 "psrah %[ftmp4], %[ftmp4], %[ftmp8] \n\t"
502 "psrah %[ftmp7], %[ftmp11], %[ftmp8] \n\t"
503 "paddh %[ftmp7], %[ftmp7], %[ftmp11] \n\t"
504 "paddh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
505 "paddh %[ftmp7], %[ftmp7], %[ftmp15] \n\t"
506 "paddh %[ftmp4], %[ftmp4], %[ftmp11] \n\t"
507 "psubh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
508 "paddh %[ftmp4], %[ftmp4], %[ftmp1] \n\t"
509 "psubh %[ftmp5], %[ftmp5], %[ftmp1] \n\t"
510 "psubh %[ftmp3], %[ftmp11], %[ftmp1] \n\t"
511 "psrah %[ftmp1], %[ftmp1], %[ftmp8] \n\t"
512 "paddh %[ftmp5], %[ftmp5], %[ftmp15] \n\t"
513 "psubh %[ftmp3], %[ftmp3], %[ftmp15] \n\t"
514 "psrah %[ftmp2], %[ftmp15], %[ftmp8] \n\t"
515 "psubh %[ftmp5], %[ftmp5], %[ftmp1] \n\t"
516 "psubh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
517 "mov.d %[ftmp2], %[ftmp4] \n\t"
518 "psrah %[ftmp4], %[ftmp4], %[ftmp9] \n\t"
519 "psrah %[ftmp1], %[ftmp7], %[ftmp9] \n\t"
520 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
521 "paddh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
522 "psrah %[ftmp5], %[ftmp5], %[ftmp9] \n\t"
523 "psrah %[ftmp3], %[ftmp3], %[ftmp9] \n\t"
524 "psubh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
525 "psubh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
526 "mov.d %[ftmp3], %[ftmp13] \n\t"
527 "psrah %[ftmp0], %[ftmp13], %[ftmp8] \n\t"
528 "psrah %[ftmp7], %[ftmp6], %[ftmp8] \n\t"
529 "paddh %[ftmp0], %[ftmp0], %[ftmp6] \n\t"
530 "psubh %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
531 MMI_LDC1(%[ftmp6], $29, 0x08)
532 "dmtc1 %[tmp6], %[ftmp3] \n\t"
533 "paddh %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
534 "paddh %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
535 "paddh %[ftmp0], %[ftmp0], %[ftmp3] \n\t"
536 "psubh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
537 "paddh %[ftmp3], %[ftmp3], %[ftmp3] \n\t"
538 "paddh %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
539 "psubh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
540 "paddh %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
541 "paddh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
542 "psubh %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
543 "paddh %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
544 "paddh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
545 "psubh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
546 "paddh %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
547 "paddh %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
548 "psubh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
549 "paddh %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
550 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
551 "psubh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
552 "paddh %[ftmp3], %[ftmp3], %[ftmp3] \n\t"
553 MMI_SDC1(%[ftmp6], $29, 0x08)
554 "psubh %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
555 MMI_SDC1(%[ftmp7], $29, 0x18)
556 "dmfc1 %[tmp2], %[ftmp0] \n\t"
557 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
558 MMI_ULWC1(%[ftmp6], %[addr0], 0x00)
559 MMI_LWXC1(%[ftmp7], %[addr0], %[
stride], 0x00)
560 "psrah %[ftmp2], %[ftmp2], %[ftmp10] \n\t"
561 "psrah %[ftmp5], %[ftmp5], %[ftmp10] \n\t"
562 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
563 "punpcklbh %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
564 "paddh %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
565 "paddh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
566 "packushb %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
567 "packushb %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
568 MMI_SWC1(%[ftmp6], %[addr0], 0x00)
569 MMI_SWXC1(%[ftmp7], %[addr0], %[
stride], 0x00)
570 PTR_ADDU "%[addr0], %[addr0], %[stride] \n\t"
571 PTR_ADDU "%[addr0], %[addr0], %[stride] \n\t"
572 MMI_ULWC1(%[ftmp6], %[addr0], 0x00)
573 MMI_LWXC1(%[ftmp7], %[addr0], %[
stride], 0x00)
574 "psrah %[ftmp1], %[ftmp1], %[ftmp10] \n\t"
575 "psrah %[ftmp4], %[ftmp4], %[ftmp10] \n\t"
576 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
577 "punpcklbh %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
578 "paddh %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
579 "paddh %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
580 "packushb %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
581 "packushb %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
582 MMI_SWC1(%[ftmp6], %[addr0], 0x00)
583 MMI_SWXC1(%[ftmp7], %[addr0], %[
stride], 0x00)
584 MMI_LDC1(%[ftmp2], $29, 0x08)
585 MMI_LDC1(%[ftmp5], $29, 0x18)
586 PTR_ADDU "%[addr0], %[addr0], %[stride] \n\t"
587 "dmtc1 %[tmp2], %[ftmp1] \n\t"
588 PTR_ADDU "%[addr0], %[addr0], %[stride] \n\t"
589 MMI_ULWC1(%[ftmp6], %[addr0], 0x00)
590 MMI_LWXC1(%[ftmp7], %[addr0], %[
stride], 0x00)
591 "psrah %[ftmp3], %[ftmp3], %[ftmp10] \n\t"
592 "psrah %[ftmp2], %[ftmp2], %[ftmp10] \n\t"
593 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
594 "punpcklbh %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
595 "paddh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
596 "paddh %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
597 "packushb %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
598 "packushb %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
599 MMI_SWC1(%[ftmp6], %[addr0], 0x00)
600 MMI_SWXC1(%[ftmp7], %[addr0], %[
stride], 0x00)
601 PTR_ADDU "%[addr0], %[addr0], %[stride] \n\t"
602 PTR_ADDU "%[addr0], %[addr0], %[stride] \n\t"
603 MMI_ULWC1(%[ftmp6], %[addr0], 0x00)
604 MMI_LWXC1(%[ftmp7], %[addr0], %[
stride], 0x00)
605 "psrah %[ftmp5], %[ftmp5], %[ftmp10] \n\t"
606 "psrah %[ftmp1], %[ftmp1], %[ftmp10] \n\t"
607 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
608 "punpcklbh %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
609 "paddh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
610 "paddh %[ftmp7], %[ftmp7], %[ftmp1] \n\t"
611 "packushb %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
612 "packushb %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
613 MMI_SWC1(%[ftmp6], %[addr0], 0x00)
614 MMI_SWXC1(%[ftmp7], %[addr0], %[
stride], 0x00)
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]),
620 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
621 [ftmp10]
"=&f"(ftmp[10]), [ftmp11]
"=&f"(ftmp[11]),
622 [ftmp12]
"=&f"(ftmp[12]), [ftmp13]
"=&f"(ftmp[13]),
623 [ftmp14]
"=&f"(ftmp[14]), [ftmp15]
"=&f"(ftmp[15]),
624 [tmp0]
"=&r"(
tmp[0]), [tmp1]
"=&r"(
tmp[1]),
625 [tmp2]
"=&r"(
tmp[2]), [tmp3]
"=&r"(
tmp[3]),
626 [tmp4]
"=&r"(
tmp[4]), [tmp5]
"=&r"(
tmp[5]),
630 [addr0]
"=&r"(addr[0])
647 "mtc1 %[dc], %[ftmp5] \n\t"
648 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
649 "pshufh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
650 MMI_ULWC1(%[ftmp1], %[dst0], 0x00)
651 MMI_ULWC1(%[ftmp2], %[dst1], 0x00)
652 MMI_ULWC1(%[ftmp3], %[dst2], 0x00)
653 MMI_ULWC1(%[ftmp4], %[dst3], 0x00)
654 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
655 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
656 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
657 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
658 "paddsh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
659 "paddsh %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
660 "paddsh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
661 "paddsh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
662 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
663 "packushb %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
664 "packushb %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
665 "packushb %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
666 MMI_SWC1(%[ftmp1], %[dst0], 0x00)
667 MMI_SWC1(%[ftmp2], %[dst1], 0x00)
668 MMI_SWC1(%[ftmp3], %[dst2], 0x00)
669 MMI_SWC1(%[ftmp4], %[dst3], 0x00)
670 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
671 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
672 [ftmp4]
"=&f"(ftmp[4]),
674 [ftmp5]
"=&f"(ftmp[5])
675 : [dst0]
"r"(dst), [dst1]
"r"(dst+
stride),
691 "mtc1 %[dc], %[ftmp5] \n\t"
692 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
693 "pshufh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
694 MMI_LDC1(%[ftmp1], %[dst0], 0x00)
695 MMI_LDC1(%[ftmp2], %[dst1], 0x00)
696 MMI_LDC1(%[ftmp3], %[dst2], 0x00)
697 MMI_LDC1(%[ftmp4], %[dst3], 0x00)
698 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t"
699 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
700 "punpckhbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t"
701 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
702 "punpckhbh %[ftmp8], %[ftmp3], %[ftmp0] \n\t"
703 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
704 "punpckhbh %[ftmp9], %[ftmp4], %[ftmp0] \n\t"
705 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
706 "paddsh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
707 "paddsh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
708 "paddsh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
709 "paddsh %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
710 "paddsh %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
711 "paddsh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
712 "paddsh %[ftmp9], %[ftmp9], %[ftmp5] \n\t"
713 "paddsh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
714 "packushb %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
715 "packushb %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
716 "packushb %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
717 "packushb %[ftmp4], %[ftmp4], %[ftmp9] \n\t"
718 MMI_SDC1(%[ftmp1], %[dst0], 0x00)
719 MMI_SDC1(%[ftmp2], %[dst1], 0x00)
720 MMI_SDC1(%[ftmp3], %[dst2], 0x00)
721 MMI_SDC1(%[ftmp4], %[dst3], 0x00)
723 MMI_LDC1(%[ftmp1], %[dst4], 0x00)
724 MMI_LDC1(%[ftmp2], %[dst5], 0x00)
725 MMI_LDC1(%[ftmp3], %[dst6], 0x00)
726 MMI_LDC1(%[ftmp4], %[dst7], 0x00)
727 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t"
728 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
729 "punpckhbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t"
730 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
731 "punpckhbh %[ftmp8], %[ftmp3], %[ftmp0] \n\t"
732 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
733 "punpckhbh %[ftmp9], %[ftmp4], %[ftmp0] \n\t"
734 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
735 "paddsh %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
736 "paddsh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
737 "paddsh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
738 "paddsh %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
739 "paddsh %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
740 "paddsh %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
741 "paddsh %[ftmp9], %[ftmp9], %[ftmp5] \n\t"
742 "paddsh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
743 "packushb %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
744 "packushb %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
745 "packushb %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
746 "packushb %[ftmp4], %[ftmp4], %[ftmp9] \n\t"
747 MMI_SDC1(%[ftmp1], %[dst4], 0x00)
748 MMI_SDC1(%[ftmp2], %[dst5], 0x00)
749 MMI_SDC1(%[ftmp3], %[dst6], 0x00)
750 MMI_SDC1(%[ftmp4], %[dst7], 0x00)
751 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
752 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
753 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
754 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
755 [ftmp8]
"=&f"(ftmp[8]),
757 [ftmp9]
"=&f"(ftmp[9])
758 : [dst0]
"r"(dst), [dst1]
"r"(dst+
stride),
772 int nnz = nnzc[
scan8[
i] ];
774 if(nnz==1 && ((int16_t*)
block)[
i*16])
791 else if(((int16_t*)
block)[
i*16])
801 for(
i=0;
i<16;
i+=4){
802 int nnz = nnzc[
scan8[
i] ];
804 if(nnz==1 && ((int16_t*)
block)[
i*16])
819 for(
i=j*16;
i<j*16+4;
i++){
823 else if(((int16_t*)
block)[
i*16])
836 for(
i=j*16;
i<j*16+4;
i++){
840 else if(((int16_t*)
block)[
i*16])
847 for(
i=j*16+4;
i<j*16+8;
i++){
851 else if(((int16_t*)
block)[
i*16])
866 ".set noreorder \n\t"
867 "dli %[tmp0], 0x08 \n\t"
868 MMI_LDC1(%[ftmp3], %[
input], 0x18)
869 "mtc1 %[tmp0], %[ftmp8] \n\t"
870 MMI_LDC1(%[ftmp2], %[
input], 0x10)
871 "dli %[tmp0], 0x20 \n\t"
872 MMI_LDC1(%[ftmp1], %[
input], 0x08)
873 "mtc1 %[tmp0], %[ftmp9] \n\t"
874 MMI_LDC1(%[ftmp0], %[
input], 0x00)
875 "mov.d %[ftmp4], %[ftmp3] \n\t"
876 "paddh %[ftmp3], %[ftmp3], %[ftmp2] \n\t"
877 "psubh %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
878 "mov.d %[ftmp4], %[ftmp1] \n\t"
879 "paddh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
880 "psubh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
881 "mov.d %[ftmp4], %[ftmp3] \n\t"
882 "paddh %[ftmp3], %[ftmp3], %[ftmp1] \n\t"
883 "psubh %[ftmp1], %[ftmp1], %[ftmp4] \n\t"
884 "mov.d %[ftmp4], %[ftmp2] \n\t"
885 "paddh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
886 "psubh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
887 "mov.d %[ftmp4], %[ftmp3] \n\t"
888 "punpcklhw %[ftmp3], %[ftmp3], %[ftmp1] \n\t"
889 "punpckhhw %[ftmp4], %[ftmp4], %[ftmp1] \n\t"
890 "punpckhhw %[ftmp1], %[ftmp0], %[ftmp2] \n\t"
891 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
892 "punpckhwd %[ftmp2], %[ftmp3], %[ftmp0] \n\t"
893 "punpcklwd %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
894 "mov.d %[ftmp0], %[ftmp4] \n\t"
895 "punpcklwd %[ftmp4], %[ftmp4], %[ftmp1] \n\t"
896 "punpckhwd %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
897 "mov.d %[ftmp1], %[ftmp0] \n\t"
898 "paddh %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
899 "psubh %[ftmp4], %[ftmp4], %[ftmp1] \n\t"
900 "mov.d %[ftmp1], %[ftmp2] \n\t"
901 "paddh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
902 "psubh %[ftmp3], %[ftmp3], %[ftmp1] \n\t"
903 "mov.d %[ftmp1], %[ftmp0] \n\t"
904 "paddh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
905 "psubh %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
906 "mov.d %[ftmp1], %[ftmp4] \n\t"
907 "daddi %[tmp0], %[qmul], -0x7fff \n\t"
908 "paddh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
909 "bgtz %[tmp0], 1f \n\t"
910 "psubh %[ftmp3], %[ftmp3], %[ftmp1] \n\t"
911 "ori %[tmp0], $0, 0x80 \n\t"
912 "dsll %[tmp0], %[tmp0], 0x10 \n\t"
913 "punpckhhw %[ftmp1], %[ftmp0], %[ff_pw_1] \n\t"
914 "daddu %[qmul], %[qmul], %[tmp0] \n\t"
915 "punpcklhw %[ftmp0], %[ftmp0], %[ff_pw_1] \n\t"
916 "punpckhhw %[ftmp5], %[ftmp2], %[ff_pw_1] \n\t"
917 "punpcklhw %[ftmp2], %[ftmp2], %[ff_pw_1] \n\t"
918 "mtc1 %[qmul], %[ftmp7] \n\t"
919 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
920 "pmaddhw %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
921 "pmaddhw %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
922 "pmaddhw %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
923 "pmaddhw %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
924 "psraw %[ftmp0], %[ftmp0], %[ftmp8] \n\t"
925 "psraw %[ftmp2], %[ftmp2], %[ftmp8] \n\t"
926 "psraw %[ftmp1], %[ftmp1], %[ftmp8] \n\t"
927 "psraw %[ftmp5], %[ftmp5], %[ftmp8] \n\t"
928 "packsswh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
929 "packsswh %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
930 "dmfc1 %[tmp1], %[ftmp0] \n\t"
931 "dsrl %[ftmp0], %[ftmp0], %[ftmp9] \n\t"
932 "mfc1 %[input], %[ftmp0] \n\t"
933 "sh %[tmp1], 0x00(%[output]) \n\t"
934 "sh %[input], 0x80(%[output]) \n\t"
935 "dsrl %[tmp1], %[tmp1], 0x10 \n\t"
936 PTR_SRL "%[input], %[input], 0x10 \n\t"
937 "sh %[tmp1], 0x20(%[output]) \n\t"
938 "sh %[input], 0xa0(%[output]) \n\t"
939 "dmfc1 %[tmp1], %[ftmp2] \n\t"
940 "dsrl %[ftmp2], %[ftmp2], %[ftmp9] \n\t"
941 "mfc1 %[input], %[ftmp2] \n\t"
942 "sh %[tmp1], 0x40(%[output]) \n\t"
943 "sh %[input], 0xc0(%[output]) \n\t"
944 "dsrl %[tmp1], %[tmp1], 0x10 \n\t"
945 PTR_SRL "%[input], %[input], 0x10 \n\t"
946 "sh %[tmp1], 0x60(%[output]) \n\t"
947 "sh %[input], 0xe0(%[output]) \n\t"
948 "punpckhhw %[ftmp1], %[ftmp3], %[ff_pw_1] \n\t"
949 "punpcklhw %[ftmp3], %[ftmp3], %[ff_pw_1] \n\t"
950 "punpckhhw %[ftmp5], %[ftmp4], %[ff_pw_1] \n\t"
951 "punpcklhw %[ftmp4], %[ftmp4], %[ff_pw_1] \n\t"
952 "mtc1 %[qmul], %[ftmp7] \n\t"
953 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
954 "pmaddhw %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
955 "pmaddhw %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
956 "pmaddhw %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
957 "pmaddhw %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
958 "psraw %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
959 "psraw %[ftmp4], %[ftmp4], %[ftmp8] \n\t"
960 "psraw %[ftmp1], %[ftmp1], %[ftmp8] \n\t"
961 "psraw %[ftmp5], %[ftmp5], %[ftmp8] \n\t"
962 "packsswh %[ftmp3], %[ftmp3], %[ftmp1] \n\t"
963 "packsswh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
964 "dmfc1 %[tmp1], %[ftmp3] \n\t"
965 "dsrl %[ftmp3], %[ftmp3], %[ftmp9] \n\t"
966 "mfc1 %[input], %[ftmp3] \n\t"
967 "sh %[tmp1], 0x100(%[output]) \n\t"
968 "sh %[input], 0x180(%[output]) \n\t"
969 "dsrl %[tmp1], %[tmp1], 0x10 \n\t"
970 PTR_SRL "%[input], %[input], 0x10 \n\t"
971 "sh %[tmp1], 0x120(%[output]) \n\t"
972 "sh %[input], 0x1a0(%[output]) \n\t"
973 "dmfc1 %[tmp1], %[ftmp4] \n\t"
974 "dsrl %[ftmp4], %[ftmp4], %[ftmp9] \n\t"
975 "mfc1 %[input], %[ftmp4] \n\t"
976 "sh %[tmp1], 0x140(%[output]) \n\t"
977 "sh %[input], 0x1c0(%[output]) \n\t"
978 "dsrl %[tmp1], %[tmp1], 0x10 \n\t"
979 PTR_SRL "%[input], %[input], 0x10 \n\t"
980 "sh %[tmp1], 0x160(%[output]) \n\t"
982 "sh %[input], 0x1e0(%[output]) \n\t"
984 "ori %[tmp0], $0, 0x1f \n\t"
986 "clz %[tmp1], %[qmul] \n\t"
989 "ori %[input], $0, 0x07 \n\t"
990 "dsubu %[tmp1], %[tmp0], %[tmp1] \n\t"
991 "ori %[tmp0], $0, 0x80 \n\t"
992 "dsll %[tmp0], %[tmp0], 0x10 \n\t"
993 "daddu %[qmul], %[qmul], %[tmp0] \n\t"
994 "dsubu %[tmp0], %[tmp1], %[input] \n\t"
995 "movn %[tmp1], %[input], %[tmp0] \n\t"
996 PTR_ADDIU "%[input], %[input], 0x01 \n\t"
997 "andi %[tmp0], %[tmp1], 0xff \n\t"
998 "srlv %[qmul], %[qmul], %[tmp0] \n\t"
999 PTR_SUBU "%[input], %[input], %[tmp1] \n\t"
1000 "mtc1 %[input], %[ftmp6] \n\t"
1001 "punpckhhw %[ftmp1], %[ftmp0], %[ff_pw_1] \n\t"
1002 "punpcklhw %[ftmp0], %[ftmp0], %[ff_pw_1] \n\t"
1003 "punpckhhw %[ftmp5], %[ftmp2], %[ff_pw_1] \n\t"
1004 "punpcklhw %[ftmp2], %[ftmp2], %[ff_pw_1] \n\t"
1005 "mtc1 %[qmul], %[ftmp7] \n\t"
1006 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
1007 "pmaddhw %[ftmp0], %[ftmp0], %[ftmp7] \n\t"
1008 "pmaddhw %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1009 "pmaddhw %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1010 "pmaddhw %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1011 "psraw %[ftmp0], %[ftmp0], %[ftmp6] \n\t"
1012 "psraw %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
1013 "psraw %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
1014 "psraw %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1015 "packsswh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
1016 "packsswh %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
1017 "dmfc1 %[tmp1], %[ftmp0] \n\t"
1018 "dsrl %[ftmp0], %[ftmp0], %[ftmp9] \n\t"
1019 "sh %[tmp1], 0x00(%[output]) \n\t"
1020 "mfc1 %[input], %[ftmp0] \n\t"
1021 "dsrl %[tmp1], %[tmp1], 0x10 \n\t"
1022 "sh %[input], 0x80(%[output]) \n\t"
1023 "sh %[tmp1], 0x20(%[output]) \n\t"
1024 PTR_SRL "%[input], %[input], 0x10 \n\t"
1025 "dmfc1 %[tmp1], %[ftmp2] \n\t"
1026 "sh %[input], 0xa0(%[output]) \n\t"
1027 "dsrl %[ftmp2], %[ftmp2], %[ftmp9] \n\t"
1028 "sh %[tmp1], 0x40(%[output]) \n\t"
1029 "mfc1 %[input], %[ftmp2] \n\t"
1030 "dsrl %[tmp1], %[tmp1], 0x10 \n\t"
1031 "sh %[input], 0xc0(%[output]) \n\t"
1032 "sh %[tmp1], 0x60(%[output]) \n\t"
1033 PTR_SRL "%[input], %[input], 0x10 \n\t"
1034 "sh %[input], 0xe0(%[output]) \n\t"
1035 "punpckhhw %[ftmp1], %[ftmp3], %[ff_pw_1] \n\t"
1036 "punpcklhw %[ftmp3], %[ftmp3], %[ff_pw_1] \n\t"
1037 "punpckhhw %[ftmp5], %[ftmp4], %[ff_pw_1] \n\t"
1038 "punpcklhw %[ftmp4], %[ftmp4], %[ff_pw_1] \n\t"
1039 "mtc1 %[qmul], %[ftmp7] \n\t"
1040 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
1041 "pmaddhw %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
1042 "pmaddhw %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
1043 "pmaddhw %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1044 "pmaddhw %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1045 "psraw %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
1046 "psraw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
1047 "psraw %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
1048 "psraw %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1049 "packsswh %[ftmp3], %[ftmp3], %[ftmp1] \n\t"
1050 "packsswh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
1051 "dmfc1 %[tmp1], %[ftmp3] \n\t"
1052 "dsrl %[ftmp3], %[ftmp3], %[ftmp9] \n\t"
1053 "mfc1 %[input], %[ftmp3] \n\t"
1054 "sh %[tmp1], 0x100(%[output]) \n\t"
1055 "sh %[input], 0x180(%[output]) \n\t"
1056 "dsrl %[tmp1], %[tmp1], 0x10 \n\t"
1057 PTR_SRL "%[input], %[input], 0x10 \n\t"
1058 "sh %[tmp1], 0x120(%[output]) \n\t"
1059 "sh %[input], 0x1a0(%[output]) \n\t"
1060 "dmfc1 %[tmp1], %[ftmp4] \n\t"
1061 "dsrl %[ftmp4], %[ftmp4], %[ftmp9] \n\t"
1062 "mfc1 %[input], %[ftmp4] \n\t"
1063 "sh %[tmp1], 0x140(%[output]) \n\t"
1064 "sh %[input], 0x1c0(%[output]) \n\t"
1065 "dsrl %[tmp1], %[tmp1], 0x10 \n\t"
1066 PTR_SRL "%[input], %[input], 0x10 \n\t"
1067 "sh %[tmp1], 0x160(%[output]) \n\t"
1068 "sh %[input], 0x1e0(%[output]) \n\t"
1071 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1072 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1073 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1074 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1075 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1076 [tmp0]
"=&r"(
tmp[0]), [tmp1]
"=&r"(
tmp[1]),
1108 block[ 0]= (t[0]*qmul + 128) >> 8;
1109 block[ 32]= (t[1]*qmul + 128) >> 8;
1110 block[ 64]= (t[2]*qmul + 128) >> 8;
1111 block[ 96]= (t[3]*qmul + 128) >> 8;
1112 block[ 16]= (t[4]*qmul + 128) >> 8;
1113 block[ 48]= (t[5]*qmul + 128) >> 8;
1114 block[ 80]= (t[6]*qmul + 128) >> 8;
1115 block[112]= (t[7]*qmul + 128) >> 8;
1127 block[16]= ((d+
b)*qmul) >> 7;
1129 block[48]= ((d-
b)*qmul) >> 7;
1142 offset += 1 << (log2_denom - 1);
1146 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1147 MMI_LDC1(%[ftmp1], %[block0], 0x00)
1148 MMI_LDC1(%[ftmp2], %[
block1], 0x00)
1149 "mtc1 %[weight], %[ftmp3] \n\t"
1150 "mtc1 %[offset], %[ftmp4] \n\t"
1151 "mtc1 %[log2_denom], %[ftmp5] \n\t"
1152 "pshufh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1153 "pshufh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
1154 "punpckhbh %[ftmp6], %[ftmp1], %[ftmp0] \n\t"
1155 "punpckhbh %[ftmp7], %[ftmp2], %[ftmp0] \n\t"
1156 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1157 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
1158 "pmullh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1159 "pmullh %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
1160 "pmullh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1161 "pmullh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
1162 "paddsh %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1163 "paddsh %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
1164 "paddsh %[ftmp1], %[ftmp1], %[ftmp4] \n\t"
1165 "paddsh %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
1166 "psrah %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1167 "psrah %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
1168 "psrah %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
1169 "psrah %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
1170 "packushb %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
1171 "packushb %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1172 MMI_SDC1(%[ftmp1], %[block0], 0x00)
1173 MMI_SDC1(%[ftmp2], %[
block1], 0x00)
1174 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1175 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1176 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1177 [ftmp6]
"=&f"(ftmp[6]),
1179 [ftmp7]
"=&f"(ftmp[7])
1182 [log2_denom]
"r"(log2_denom)
1189 ptrdiff_t
stride,
int height,
int log2_denom,
int weightd,
int weights,
1200 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1201 MMI_LDC1(%[ftmp1], %[
src0], 0x00)
1202 MMI_LDC1(%[ftmp2], %[dst0], 0x00)
1203 "mtc1 %[weights], %[ftmp3] \n\t"
1204 "mtc1 %[weightd], %[ftmp4] \n\t"
1205 "mtc1 %[offset], %[ftmp5] \n\t"
1206 "mtc1 %[log2_denom], %[ftmp6] \n\t"
1207 "pshufh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1208 "pshufh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
1209 "pshufh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1210 "punpckhbh %[ftmp7], %[ftmp1], %[ftmp0] \n\t"
1211 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t"
1212 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1213 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
1214 "pmullh %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
1215 "pmullh %[ftmp8], %[ftmp8], %[ftmp4] \n\t"
1216 "pmullh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1217 "pmullh %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
1218 "paddsh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
1219 "paddsh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
1220 "paddsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1221 "paddsh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
1222 "psrah %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
1223 "psrah %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
1224 "packushb %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1225 MMI_SDC1(%[ftmp1], %[dst0], 0x00)
1226 MMI_LDC1(%[ftmp1], %[
src1], 0x00)
1227 MMI_LDC1(%[ftmp2], %[dst1], 0x00)
1228 "punpckhbh %[ftmp7], %[ftmp1], %[ftmp0] \n\t"
1229 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t"
1230 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1231 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
1232 "pmullh %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
1233 "pmullh %[ftmp8], %[ftmp8], %[ftmp4] \n\t"
1234 "pmullh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1235 "pmullh %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
1236 "paddsh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
1237 "paddsh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
1238 "paddsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1239 "paddsh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
1240 "psrah %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
1241 "psrah %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
1242 "packushb %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1243 MMI_SDC1(%[ftmp1], %[dst1], 0x00)
1244 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1245 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1246 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1247 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1249 [ftmp8]
"=&f"(ftmp[8])
1250 : [dst0]
"r"(dst), [dst1]
"r"(dst+8),
1252 [weights]
"r"(weights), [weightd]
"r"(weightd),
1269 offset += 1 << (log2_denom - 1);
1273 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1274 MMI_LDC1(%[ftmp1], %[
block], 0x00)
1275 "mtc1 %[weight], %[ftmp2] \n\t"
1276 "mtc1 %[offset], %[ftmp3] \n\t"
1277 "mtc1 %[log2_denom], %[ftmp5] \n\t"
1278 "pshufh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
1279 "pshufh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1280 "punpckhbh %[ftmp4], %[ftmp1], %[ftmp0] \n\t"
1281 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1282 "pmullh %[ftmp4], %[ftmp4], %[ftmp2] \n\t"
1283 "pmullh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
1284 "paddsh %[ftmp4], %[ftmp4], %[ftmp3] \n\t"
1285 "paddsh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1286 "psrah %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
1287 "psrah %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
1288 "packushb %[ftmp1], %[ftmp1], %[ftmp4] \n\t"
1289 MMI_SDC1(%[ftmp1], %[
block], 0x00)
1290 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1291 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1292 [ftmp4]
"=&f"(ftmp[4]),
1294 [ftmp5]
"=&f"(ftmp[5])
1303 ptrdiff_t
stride,
int height,
int log2_denom,
int weightd,
int weights,
1314 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1315 MMI_LDC1(%[ftmp1], %[
src], 0x00)
1316 MMI_LDC1(%[ftmp2], %[dst], 0x00)
1317 "mtc1 %[weights], %[ftmp3] \n\t"
1318 "mtc1 %[weightd], %[ftmp4] \n\t"
1319 "mtc1 %[offset], %[ftmp5] \n\t"
1320 "mtc1 %[log2_denom], %[ftmp6] \n\t"
1321 "pshufh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1322 "pshufh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
1323 "pshufh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1324 "punpckhbh %[ftmp7], %[ftmp1], %[ftmp0] \n\t"
1325 "punpckhbh %[ftmp8], %[ftmp2], %[ftmp0] \n\t"
1326 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1327 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
1328 "pmullh %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
1329 "pmullh %[ftmp8], %[ftmp8], %[ftmp4] \n\t"
1330 "pmullh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1331 "pmullh %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
1332 "paddsh %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
1333 "paddsh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
1334 "paddsh %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1335 "paddsh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
1336 "psrah %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
1337 "psrah %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
1338 "packushb %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
1339 MMI_SDC1(%[ftmp1], %[dst], 0x00)
1340 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1341 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1342 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1343 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1345 [ftmp8]
"=&f"(ftmp[8])
1346 : [dst]
"r"(dst), [
src]
"r"(
src),
1347 [weights]
"r"(weights), [weightd]
"r"(weightd),
1364 offset += 1 << (log2_denom - 1);
1368 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1369 MMI_ULWC1(%[ftmp1], %[
block], 0x00)
1370 "mtc1 %[weight], %[ftmp2] \n\t"
1371 "mtc1 %[offset], %[ftmp3] \n\t"
1372 "mtc1 %[log2_denom], %[ftmp4] \n\t"
1373 "pshufh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
1374 "pshufh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1375 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1376 "pmullh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
1377 "paddsh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1378 "psrah %[ftmp1], %[ftmp1], %[ftmp4] \n\t"
1379 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1380 MMI_SWC1(%[ftmp1], %[
block], 0x00)
1381 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1382 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1384 [ftmp4]
"=&f"(ftmp[4])
1393 ptrdiff_t
stride,
int height,
int log2_denom,
int weightd,
int weights,
1404 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1405 MMI_ULWC1(%[ftmp1], %[
src], 0x00)
1406 MMI_ULWC1(%[ftmp2], %[dst], 0x00)
1407 "mtc1 %[weight], %[ftmp3] \n\t"
1408 "mtc1 %[weightd], %[ftmp4] \n\t"
1409 "mtc1 %[offset], %[ftmp5] \n\t"
1410 "mtc1 %[log2_denom], %[ftmp6] \n\t"
1411 "pshufh %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
1412 "pshufh %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
1413 "pshufh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1414 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1415 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
1416 "pmullh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1417 "pmullh %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
1418 "paddsh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
1419 "paddsh %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
1420 "psrah %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
1421 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
1422 MMI_SWC1(%[ftmp1], %[dst], 0x00)
1423 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1424 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1425 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1427 [ftmp6]
"=&f"(ftmp[6])
1428 : [dst]
"r"(dst), [
src]
"r"(
src),
1429 [
weight]
"r"(weights), [weightd]
"r"(weightd),
1446 PTR_ADDU "%[addr0], %[stride], %[stride] \n\t"
1447 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1448 PTR_ADDU "%[addr1], %[stride], %[addr0] \n\t"
1449 "addi %[alpha], %[alpha], -0x01 \n\t"
1450 PTR_SUBU "%[addr1], $0, %[addr1] \n\t"
1451 "addi %[beta], %[beta], -0x01 \n\t"
1452 PTR_ADDU "%[addr1], %[addr1], %[pix] \n\t"
1453 MMI_LDC1(%[ftmp3], %[pix], 0x00)
1454 MMI_LDXC1(%[ftmp1], %[addr1], %[
stride], 0x00)
1455 MMI_LDXC1(%[ftmp2], %[addr1], %[addr0], 0x00)
1456 MMI_LDXC1(%[ftmp4], %[pix], %[
stride], 0x00)
1457 "mtc1 %[alpha], %[ftmp5] \n\t"
1458 "mtc1 %[beta], %[ftmp6] \n\t"
1459 "pshufh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1460 "pshufh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1461 "packushb %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
1462 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1463 "psubusb %[ftmp7], %[ftmp3], %[ftmp2] \n\t"
1464 "psubusb %[ftmp8], %[ftmp2], %[ftmp3] \n\t"
1465 "or %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1466 "psubusb %[ftmp7], %[ftmp2], %[ftmp1] \n\t"
1467 "psubusb %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1468 "psubusb %[ftmp5], %[ftmp1], %[ftmp2] \n\t"
1469 "or %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1470 "psubusb %[ftmp7], %[ftmp3], %[ftmp4] \n\t"
1471 "psubusb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1472 "or %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1473 "psubusb %[ftmp5], %[ftmp4], %[ftmp3] \n\t"
1474 "or %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1475 "psubusb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1476 "or %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1477 "pcmpeqb %[ftmp8], %[ftmp8], %[ftmp0] \n\t"
1478 "pcmpeqb %[ftmp4], %[ftmp4], %[ftmp4] \n\t"
1479 MMI_ULWC1(%[ftmp5], %[tc0], 0x00)
1480 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
1481 "punpcklbh %[ftmp9], %[ftmp5], %[ftmp5] \n\t"
1482 "pcmpgtb %[ftmp5], %[ftmp9], %[ftmp4] \n\t"
1483 MMI_LDC1(%[ftmp4], %[addr1], 0x00)
1484 "and %[ftmp10], %[ftmp5], %[ftmp8] \n\t"
1485 "psubusb %[ftmp8], %[ftmp4], %[ftmp2] \n\t"
1486 "psubusb %[ftmp7], %[ftmp2], %[ftmp4] \n\t"
1487 "psubusb %[ftmp8], %[ftmp8], %[ftmp6] \n\t"
1488 "psubusb %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
1489 "pcmpeqb %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1490 "and %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
1491 "and %[ftmp5], %[ftmp10], %[ftmp9] \n\t"
1492 "psubb %[ftmp8], %[ftmp5], %[ftmp7] \n\t"
1493 "and %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
1494 "pavgb %[ftmp5], %[ftmp2], %[ftmp3] \n\t"
1495 MMI_LDC1(%[ftmp11], %[addr1], 0x00)
1496 "pavgb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
1497 "xor %[ftmp5], %[ftmp5], %[ftmp11] \n\t"
1498 "and %[ftmp5], %[ftmp5], %[ff_pb_1] \n\t"
1499 "psubusb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
1500 "psubusb %[ftmp5], %[ftmp1], %[ftmp7] \n\t"
1501 "paddusb %[ftmp7], %[ftmp7], %[ftmp1] \n\t"
1502 "pmaxub %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
1503 "pminub %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
1504 MMI_SDXC1(%[ftmp4], %[addr1], %[
stride], 0x00)
1505 MMI_LDXC1(%[ftmp5], %[pix], %[addr0], 0x00)
1506 "psubusb %[ftmp4], %[ftmp5], %[ftmp3] \n\t"
1507 "psubusb %[ftmp7], %[ftmp3], %[ftmp5] \n\t"
1508 "psubusb %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
1509 "psubusb %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
1510 "pcmpeqb %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
1511 "and %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
1512 "psubb %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1513 "and %[ftmp6], %[ftmp9], %[ftmp7] \n\t"
1514 MMI_LDXC1(%[ftmp4], %[pix], %[
stride], 0x00)
1515 "pavgb %[ftmp7], %[ftmp2], %[ftmp3] \n\t"
1516 MMI_LDXC1(%[ftmp11], %[pix], %[addr0], 0x00)
1517 "pavgb %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1518 "xor %[ftmp7], %[ftmp7], %[ftmp11] \n\t"
1519 "and %[ftmp7], %[ftmp7], %[ff_pb_1] \n\t"
1520 "psubusb %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1521 "psubusb %[ftmp7], %[ftmp4], %[ftmp6] \n\t"
1522 "paddusb %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1523 "pmaxub %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1524 "pminub %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1525 MMI_SDXC1(%[ftmp5], %[pix], %[
stride], 0x00)
1526 "xor %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
1527 "pcmpeqb %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
1528 "and %[ftmp6], %[ftmp6], %[ff_pb_1] \n\t"
1529 "xor %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
1530 "xor %[ftmp5], %[ftmp5], %[ftmp2] \n\t"
1531 "pavgb %[ftmp4], %[ftmp4], %[ftmp1] \n\t"
1532 "pavgb %[ftmp4], %[ftmp4], %[ff_pb_3] \n\t"
1533 "pavgb %[ftmp5], %[ftmp5], %[ftmp3] \n\t"
1534 "pavgb %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
1535 "paddusb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
1536 "psubusb %[ftmp7], %[ff_pb_A1], %[ftmp4] \n\t"
1537 "psubusb %[ftmp4], %[ftmp4], %[ff_pb_A1] \n\t"
1538 "pminub %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1539 "pminub %[ftmp4], %[ftmp4], %[ftmp8] \n\t"
1540 "psubusb %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1541 "psubusb %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
1542 "paddusb %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
1543 "paddusb %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
1544 MMI_SDXC1(%[ftmp2], %[addr1], %[addr0], 0x00)
1545 MMI_SDC1(%[ftmp3], %[pix], 0x00)
1546 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1547 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1548 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1549 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1550 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1551 [ftmp10]
"=&f"(ftmp[10]), [ftmp11]
"=&f"(ftmp[11]),
1555 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1])
1575 "ori %[tmp0], $0, 0x01 \n\t"
1576 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1577 "mtc1 %[tmp0], %[ftmp9] \n\t"
1578 PTR_SLL "%[addr0], %[stride], 0x02 \n\t"
1579 PTR_ADDU "%[addr2], %[stride], %[stride] \n\t"
1580 PTR_ADDIU "%[alpha], %[alpha], -0x01 \n\t"
1581 PTR_SLL "%[ftmp11], %[ftmp9], %[ftmp9] \n\t"
1582 "bltz %[alpha], 1f \n\t"
1583 PTR_ADDU "%[addr1], %[addr2], %[stride] \n\t"
1584 PTR_ADDIU "%[beta], %[beta], -0x01 \n\t"
1585 "bltz %[beta], 1f \n\t"
1586 PTR_SUBU "%[addr0], $0, %[addr0] \n\t"
1587 PTR_ADDU "%[addr0], %[addr0], %[pix] \n\t"
1588 MMI_LDC1(%[ftmp3], %[pix], 0x00)
1589 MMI_LDXC1(%[ftmp1], %[addr0], %[addr2], 0x00)
1590 MMI_LDXC1(%[ftmp2], %[addr0], %[addr1], 0x00)
1591 MMI_LDXC1(%[ftmp4], %[pix], %[
stride], 0x00)
1592 "mtc1 %[alpha], %[ftmp5] \n\t"
1593 "mtc1 %[beta], %[ftmp6] \n\t"
1594 "pshufh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1595 "pshufh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1596 "packushb %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
1597 "psubusb %[ftmp7], %[ftmp3], %[ftmp2] \n\t"
1598 "psubusb %[ftmp8], %[ftmp2], %[ftmp3] \n\t"
1599 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1600 "or %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1601 MMI_SDC1(%[ftmp5], %[stack], 0x10)
1602 "psubusb %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1603 "psubusb %[ftmp7], %[ftmp2], %[ftmp1] \n\t"
1604 "psubusb %[ftmp5], %[ftmp1], %[ftmp2] \n\t"
1605 "or %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1606 "psubusb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1607 "or %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1608 "psubusb %[ftmp7], %[ftmp3], %[ftmp4] \n\t"
1609 "psubusb %[ftmp5], %[ftmp4], %[ftmp3] \n\t"
1610 "or %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1611 "psubusb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1612 "or %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1613 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
1614 MMI_LDC1(%[ftmp5], %[stack], 0x10)
1615 "pcmpeqb %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1616 "ldc1 %[ftmp10], %[ff_pb_1] \n\t"
1617 MMI_SDC1(%[ftmp8], %[stack], 0x20)
1618 "pavgb %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1619 "psubusb %[ftmp8], %[ftmp3], %[ftmp2] \n\t"
1620 "pavgb %[ftmp5], %[ftmp5], %[ftmp10] \n\t"
1621 "psubusb %[ftmp7], %[ftmp2], %[ftmp3] \n\t"
1622 "psubusb %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1623 "psubusb %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
1624 MMI_LDC1(%[ftmp15], %[stack], 0x20)
1625 "pcmpeqb %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1626 "and %[ftmp7], %[ftmp7], %[ftmp15] \n\t"
1627 MMI_LDXC1(%[ftmp15], %[addr0], %[
stride], 0x00)
1628 "psubusb %[ftmp8], %[ftmp15], %[ftmp2] \n\t"
1629 "psubusb %[ftmp5], %[ftmp2], %[ftmp15] \n\t"
1630 "psubusb %[ftmp8], %[ftmp8], %[ftmp6] \n\t"
1631 "psubusb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1632 "pcmpeqb %[ftmp5], %[ftmp5], %[ftmp8] \n\t"
1633 "and %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1634 MMI_LDXC1(%[ftmp14], %[pix], %[addr2], 0x00)
1635 MMI_SDC1(%[ftmp5], %[stack], 0x30)
1636 "psubusb %[ftmp8], %[ftmp14], %[ftmp3] \n\t"
1637 "psubusb %[ftmp5], %[ftmp3], %[ftmp14] \n\t"
1638 "psubusb %[ftmp8], %[ftmp8], %[ftmp6] \n\t"
1639 "psubusb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1640 "pcmpeqb %[ftmp5], %[ftmp5], %[ftmp8] \n\t"
1641 "and %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1642 MMI_SDC1(%[ftmp5], %[stack], 0x40)
1643 "pavgb %[ftmp5], %[ftmp15], %[ftmp1] \n\t"
1644 "pavgb %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
1645 "pavgb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1646 MMI_SDC1(%[ftmp6], %[stack], 0x10)
1647 "paddb %[ftmp7], %[ftmp15], %[ftmp1] \n\t"
1648 "paddb %[ftmp8], %[ftmp2], %[ftmp3] \n\t"
1649 "paddb %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1650 "mov.d %[ftmp8], %[ftmp7] \n\t"
1651 MMI_SDC1(%[ftmp7], %[stack], 0x00)
1652 "psrlh %[ftmp7], %[ftmp7], %[ftmp9] \n\t"
1653 "pavgb %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
1654 "xor %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
1655 "and %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
1656 "psubb %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1657 "pavgb %[ftmp6], %[ftmp15], %[ftmp4] \n\t"
1658 "psubb %[ftmp7], %[ftmp15], %[ftmp4] \n\t"
1659 "paddb %[ftmp8], %[ftmp8], %[ftmp8] \n\t"
1660 "psubb %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1661 "and %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
1662 "psubb %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
1663 MMI_LDC1(%[ftmp13], %[stack], 0x10)
1664 "pavgb %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
1665 "psrlh %[ftmp8], %[ftmp8], %[ftmp11] \n\t"
1666 "pavgb %[ftmp6], %[ftmp6], %[ftmp13] \n\t"
1667 "pavgb %[ftmp8], %[ftmp8], %[ftmp0] \n\t"
1668 "xor %[ftmp8], %[ftmp8], %[ftmp6] \n\t"
1669 "and %[ftmp8], %[ftmp8], %[ftmp10] \n\t"
1670 "psubb %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1671 "xor %[ftmp8], %[ftmp2], %[ftmp4] \n\t"
1672 "pavgb %[ftmp7], %[ftmp2], %[ftmp4] \n\t"
1673 "and %[ftmp8], %[ftmp8], %[ftmp10] \n\t"
1674 "psubb %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1675 MMI_LDC1(%[ftmp13], %[stack], 0x30)
1676 "pavgb %[ftmp7], %[ftmp7], %[ftmp1] \n\t"
1677 MMI_LDC1(%[ftmp12], %[stack], 0x20)
1678 "xor %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
1679 "xor %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
1680 "and %[ftmp6], %[ftmp6], %[ftmp13] \n\t"
1681 "and %[ftmp7], %[ftmp7], %[ftmp12] \n\t"
1682 "xor %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
1683 "xor %[ftmp6], %[ftmp6], %[ftmp2] \n\t"
1684 MMI_SDXC1(%[ftmp6], %[addr0], %[addr1], 0x00)
1685 MMI_LDC1(%[ftmp6], %[addr0], 0x00)
1686 "paddb %[ftmp7], %[ftmp15], %[ftmp6] \n\t"
1687 "pavgb %[ftmp6], %[ftmp6], %[ftmp15] \n\t"
1688 MMI_LDC1(%[ftmp12], %[stack], 0x00)
1689 "pavgb %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1690 "paddb %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
1691 "paddb %[ftmp7], %[ftmp7], %[ftmp12] \n\t"
1692 "psrlh %[ftmp7], %[ftmp7], %[ftmp11] \n\t"
1693 "pavgb %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
1694 "xor %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
1695 "and %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
1696 MMI_LDC1(%[ftmp12], %[stack], 0x30)
1697 "psubb %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
1698 "xor %[ftmp5], %[ftmp5], %[ftmp1] \n\t"
1699 "xor %[ftmp6], %[ftmp6], %[ftmp15] \n\t"
1700 "and %[ftmp5], %[ftmp5], %[ftmp12] \n\t"
1701 "and %[ftmp6], %[ftmp6], %[ftmp12] \n\t"
1702 "xor %[ftmp5], %[ftmp5], %[ftmp1] \n\t"
1703 "xor %[ftmp6], %[ftmp6], %[ftmp15] \n\t"
1704 MMI_SDXC1(%[ftmp5], %[addr0], %[addr2], 0x00)
1705 MMI_SDXC1(%[ftmp6], %[addr0], %[
stride], 0x00)
1706 "pavgb %[ftmp5], %[ftmp14], %[ftmp4] \n\t"
1707 "pavgb %[ftmp6], %[ftmp3], %[ftmp2] \n\t"
1708 "pavgb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1709 MMI_SDC1(%[ftmp6], %[stack], 0x10)
1710 "paddb %[ftmp7], %[ftmp14], %[ftmp4] \n\t"
1711 "paddb %[ftmp8], %[ftmp3], %[ftmp2] \n\t"
1712 "paddb %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1713 "mov.d %[ftmp8], %[ftmp7] \n\t"
1714 MMI_SDC1(%[ftmp7], %[stack], 0x00)
1715 "psrlh %[ftmp7], %[ftmp7], %[ftmp9] \n\t"
1716 "pavgb %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
1717 "xor %[ftmp7], %[ftmp7], %[ftmp5] \n\t"
1718 "and %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
1719 "psubb %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1720 "pavgb %[ftmp6], %[ftmp14], %[ftmp1] \n\t"
1721 "paddb %[ftmp8], %[ftmp8], %[ftmp8] \n\t"
1722 "psubb %[ftmp7], %[ftmp14], %[ftmp1] \n\t"
1723 "psubb %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1724 "and %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
1725 "psubb %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
1726 MMI_LDC1(%[ftmp12], %[stack], 0x10)
1727 "pavgb %[ftmp6], %[ftmp6], %[ftmp4] \n\t"
1728 "pavgb %[ftmp6], %[ftmp6], %[ftmp12] \n\t"
1729 "psrlh %[ftmp8], %[ftmp8], %[ftmp11] \n\t"
1730 "pavgb %[ftmp8], %[ftmp8], %[ftmp0] \n\t"
1731 "xor %[ftmp8], %[ftmp8], %[ftmp6] \n\t"
1732 "and %[ftmp8], %[ftmp8], %[ftmp10] \n\t"
1733 "psubb %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
1734 "xor %[ftmp8], %[ftmp3], %[ftmp1] \n\t"
1735 "pavgb %[ftmp7], %[ftmp3], %[ftmp1] \n\t"
1736 "and %[ftmp8], %[ftmp8], %[ftmp10] \n\t"
1737 MMI_LDC1(%[ftmp12], %[stack], 0x40)
1738 "psubb %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1739 MMI_LDC1(%[ftmp13], %[stack], 0x20)
1740 "pavgb %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
1741 "xor %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
1742 "xor %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
1743 "and %[ftmp6], %[ftmp6], %[ftmp12] \n\t"
1744 "and %[ftmp7], %[ftmp7], %[ftmp13] \n\t"
1745 "xor %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
1746 "xor %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
1747 MMI_SDC1(%[ftmp6], %[pix], 0x00)
1748 MMI_LDXC1(%[ftmp6], %[pix], %[addr1], 0x00)
1749 "paddb %[ftmp7], %[ftmp14], %[ftmp6] \n\t"
1750 "pavgb %[ftmp6], %[ftmp6], %[ftmp14] \n\t"
1751 MMI_LDC1(%[ftmp12], %[stack], 0x00)
1752 "pavgb %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1753 "paddb %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
1754 "paddb %[ftmp7], %[ftmp7], %[ftmp12] \n\t"
1755 "psrlh %[ftmp7], %[ftmp7], %[ftmp11] \n\t"
1756 "pavgb %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
1757 "xor %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
1758 "and %[ftmp7], %[ftmp7], %[ftmp10] \n\t"
1759 MMI_LDC1(%[ftmp12], %[stack], 0x40)
1760 "psubb %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
1761 "xor %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
1762 "xor %[ftmp6], %[ftmp6], %[ftmp14] \n\t"
1763 "and %[ftmp5], %[ftmp5], %[ftmp12] \n\t"
1764 "and %[ftmp6], %[ftmp6], %[ftmp12] \n\t"
1765 "xor %[ftmp5], %[ftmp5], %[ftmp4] \n\t"
1766 "xor %[ftmp6], %[ftmp6], %[ftmp14] \n\t"
1767 MMI_SDXC1(%[ftmp5], %[pix], %[
stride], 0x00)
1768 MMI_SDXC1(%[ftmp6], %[pix], %[addr2], 0x00)
1770 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1771 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1772 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1773 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1774 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
1775 [ftmp10]
"=&f"(ftmp[10]), [ftmp11]
"=&f"(ftmp[11]),
1776 [ftmp12]
"=&f"(ftmp[12]), [ftmp13]
"=&f"(ftmp[13]),
1777 [ftmp14]
"=&f"(ftmp[14]), [ftmp15]
"=&f"(ftmp[15]),
1778 [tmp0]
"=&r"(
tmp[0]),
1781 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
1782 [addr2]
"=&r"(addr[2]),
1791 int beta, int8_t *tc0)
1800 "addi %[alpha], %[alpha], -0x01 \n\t"
1801 "addi %[beta], %[beta], -0x01 \n\t"
1802 "or %[addr0], $0, %[pix] \n\t"
1803 PTR_SUBU "%[addr0], %[addr0], %[stride] \n\t"
1804 PTR_SUBU "%[addr0], %[addr0], %[stride] \n\t"
1805 MMI_LDC1(%[ftmp1], %[addr0], 0x00)
1806 MMI_LDXC1(%[ftmp2], %[addr0], %[
stride], 0x00)
1807 MMI_LDC1(%[ftmp3], %[pix], 0x00)
1808 MMI_LDXC1(%[ftmp4], %[pix], %[
stride], 0x00)
1810 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1811 "mtc1 %[alpha], %[ftmp5] \n\t"
1812 "mtc1 %[beta], %[ftmp6] \n\t"
1813 "pshufh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1814 "pshufh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1815 "packushb %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
1816 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1817 "psubusb %[ftmp7], %[ftmp3], %[ftmp2] \n\t"
1818 "psubusb %[ftmp8], %[ftmp2], %[ftmp3] \n\t"
1819 "or %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1820 "psubusb %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1821 "psubusb %[ftmp7], %[ftmp2], %[ftmp1] \n\t"
1822 "psubusb %[ftmp5], %[ftmp1], %[ftmp2] \n\t"
1823 "or %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1824 "psubusb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1825 "or %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1826 "psubusb %[ftmp7], %[ftmp3], %[ftmp4] \n\t"
1827 "psubusb %[ftmp5], %[ftmp4], %[ftmp3] \n\t"
1828 "or %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1829 "psubusb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1830 "or %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1831 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
1832 "pcmpeqb %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1833 MMI_ULWC1(%[ftmp7], %[tc0], 0x00)
1834 "punpcklbh %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
1835 "and %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1836 "pcmpeqb %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
1837 "xor %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
1838 "xor %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
1839 "and %[ftmp6], %[ftmp6], %[ff_pb_1] \n\t"
1840 "pavgb %[ftmp4], %[ftmp4], %[ftmp1] \n\t"
1841 "xor %[ftmp5], %[ftmp5], %[ftmp2] \n\t"
1842 "pavgb %[ftmp4], %[ftmp4], %[ff_pb_3] \n\t"
1843 "pavgb %[ftmp5], %[ftmp5], %[ftmp3] \n\t"
1844 "pavgb %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
1845 "paddusb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
1846 "psubusb %[ftmp7], %[ff_pb_A1], %[ftmp4] \n\t"
1847 "psubusb %[ftmp4], %[ftmp4], %[ff_pb_A1] \n\t"
1848 "pminub %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
1849 "pminub %[ftmp4], %[ftmp4], %[ftmp8] \n\t"
1850 "psubusb %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
1851 "psubusb %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
1852 "paddusb %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
1853 "paddusb %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
1855 MMI_SDXC1(%[ftmp2], %[addr0], %[
stride], 0x00)
1856 MMI_SDC1(%[ftmp3], %[pix], 0x00)
1857 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1858 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1859 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1860 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1861 [ftmp8]
"=&f"(ftmp[8]),
1865 [addr0]
"=&r"(addr[0])
1883 "addi %[alpha], %[alpha], -0x01 \n\t"
1884 "addi %[beta], %[beta], -0x01 \n\t"
1885 "or %[addr0], $0, %[pix] \n\t"
1886 PTR_SUBU "%[addr0], %[addr0], %[stride] \n\t"
1887 PTR_SUBU "%[addr0], %[addr0], %[stride] \n\t"
1888 MMI_LDC1(%[ftmp1], %[addr0], 0x00)
1889 MMI_LDXC1(%[ftmp2], %[addr0], %[
stride], 0x00)
1890 MMI_LDC1(%[ftmp3], %[pix], 0x00)
1891 MMI_LDXC1(%[ftmp4], %[pix], %[
stride], 0x00)
1893 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
1894 "mtc1 %[alpha], %[ftmp5] \n\t"
1895 "mtc1 %[beta], %[ftmp6] \n\t"
1896 "pshufh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
1897 "pshufh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
1898 "packushb %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
1899 "packushb %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
1900 "psubusb %[ftmp7], %[ftmp3], %[ftmp2] \n\t"
1901 "psubusb %[ftmp8], %[ftmp2], %[ftmp3] \n\t"
1902 "or %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1903 "psubusb %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1904 "psubusb %[ftmp7], %[ftmp2], %[ftmp1] \n\t"
1905 "psubusb %[ftmp5], %[ftmp1], %[ftmp2] \n\t"
1906 "or %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1907 "psubusb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1908 "or %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1909 "psubusb %[ftmp7], %[ftmp3], %[ftmp4] \n\t"
1910 "psubusb %[ftmp5], %[ftmp4], %[ftmp3] \n\t"
1911 "or %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1912 "psubusb %[ftmp5], %[ftmp5], %[ftmp6] \n\t"
1913 "or %[ftmp8], %[ftmp8], %[ftmp5] \n\t"
1914 "xor %[ftmp7], %[ftmp7], %[ftmp7] \n\t"
1915 "pcmpeqb %[ftmp8], %[ftmp8], %[ftmp7] \n\t"
1916 "mov.d %[ftmp6], %[ftmp2] \n\t"
1917 "mov.d %[ftmp7], %[ftmp3] \n\t"
1918 "xor %[ftmp5], %[ftmp2], %[ftmp4] \n\t"
1919 "and %[ftmp5], %[ftmp5], %[ff_pb_1] \n\t"
1920 "pavgb %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
1921 "psubusb %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
1922 "pavgb %[ftmp2], %[ftmp2], %[ftmp1] \n\t"
1923 "xor %[ftmp5], %[ftmp3], %[ftmp1] \n\t"
1924 "and %[ftmp5], %[ftmp5], %[ff_pb_1] \n\t"
1925 "pavgb %[ftmp3], %[ftmp3], %[ftmp1] \n\t"
1926 "psubusb %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
1927 "pavgb %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
1928 "psubb %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
1929 "psubb %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
1930 "and %[ftmp2], %[ftmp2], %[ftmp8] \n\t"
1931 "and %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
1932 "paddb %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
1933 "paddb %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
1935 MMI_SDXC1(%[ftmp2], %[addr0], %[
stride], 0x00)
1936 MMI_SDC1(%[ftmp3], %[pix], 0x00)
1937 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1938 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1939 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1940 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1941 [ftmp8]
"=&f"(ftmp[8]),
1944 [addr0]
"=&r"(addr[0])
1960 "addi %[alpha], %[alpha], -0x01 \n\t"
1961 "addi %[beta], %[beta], -0x01 \n\t"
1962 PTR_ADDU "%[addr0], %[stride], %[stride] \n\t"
1963 PTR_ADDI "%[pix], %[pix], -0x02 \n\t"
1964 PTR_ADDU "%[addr1], %[addr0], %[stride] \n\t"
1965 PTR_ADDU "%[addr2], %[addr0], %[addr0] \n\t"
1966 "or %[addr5], $0, %[pix] \n\t"
1967 PTR_ADDU "%[pix], %[pix], %[addr1] \n\t"
1968 MMI_ULWC1(%[ftmp0], %[addr5], 0x00)
1969 PTR_ADDU "%[addr3], %[addr5], %[stride] \n\t"
1970 MMI_ULWC1(%[ftmp2], %[addr3], 0x00)
1971 PTR_ADDU "%[addr4], %[addr5], %[addr0] \n\t"
1972 MMI_ULWC1(%[ftmp1], %[addr4], 0x00)
1973 MMI_ULWC1(%[ftmp3], %[pix], 0x00)
1974 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
1975 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
1976 PTR_ADDU "%[addr3], %[pix], %[stride] \n\t"
1977 "punpckhhw %[ftmp2], %[ftmp0], %[ftmp1] \n\t"
1978 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
1979 MMI_ULWC1(%[ftmp4], %[addr3], 0x00)
1980 PTR_ADDU "%[addr4], %[pix], %[addr0] \n\t"
1981 MMI_ULWC1(%[ftmp6], %[addr4], 0x00)
1982 PTR_ADDU "%[addr3], %[pix], %[addr1] \n\t"
1983 MMI_ULWC1(%[ftmp5], %[addr3], 0x00)
1984 PTR_ADDU "%[addr4], %[pix], %[addr2] \n\t"
1985 MMI_ULWC1(%[ftmp7], %[addr4], 0x00)
1986 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
1987 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
1988 "mov.d %[ftmp6], %[ftmp4] \n\t"
1989 "punpcklhw %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
1990 "punpckhhw %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
1991 "punpckhwd %[ftmp1], %[ftmp0], %[ftmp4] \n\t"
1992 "punpckhwd %[ftmp3], %[ftmp2], %[ftmp6] \n\t"
1993 "punpcklwd %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
1994 "punpcklwd %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
1995 "mov.d %[ftmp9], %[ftmp0] \n\t"
1996 "mov.d %[ftmp10], %[ftmp3] \n\t"
1998 "xor %[ftmp8], %[ftmp8], %[ftmp8] \n\t"
1999 "mtc1 %[alpha], %[ftmp4] \n\t"
2000 "mtc1 %[beta], %[ftmp5] \n\t"
2001 "pshufh %[ftmp4], %[ftmp4], %[ftmp8] \n\t"
2002 "pshufh %[ftmp5], %[ftmp5], %[ftmp8] \n\t"
2003 "packushb %[ftmp4], %[ftmp4], %[ftmp4] \n\t"
2004 "packushb %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
2005 "psubusb %[ftmp6], %[ftmp2], %[ftmp1] \n\t"
2006 "psubusb %[ftmp7], %[ftmp1], %[ftmp2] \n\t"
2007 "or %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
2008 "psubusb %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
2009 "psubusb %[ftmp6], %[ftmp1], %[ftmp0] \n\t"
2010 "psubusb %[ftmp4], %[ftmp0], %[ftmp1] \n\t"
2011 "or %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2012 "psubusb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2013 "or %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
2014 "psubusb %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
2015 "psubusb %[ftmp4], %[ftmp3], %[ftmp2] \n\t"
2016 "or %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2017 "psubusb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2018 "or %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
2019 "xor %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
2020 "pcmpeqb %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
2021 MMI_ULWC1(%[ftmp6], %[tc0], 0x00)
2022 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
2023 "and %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
2024 "pcmpeqb %[ftmp4], %[ftmp4], %[ftmp4] \n\t"
2025 "xor %[ftmp5], %[ftmp1], %[ftmp2] \n\t"
2026 "xor %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
2027 "and %[ftmp5], %[ftmp5], %[ff_pb_1] \n\t"
2028 "pavgb %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
2029 "xor %[ftmp4], %[ftmp4], %[ftmp1] \n\t"
2030 "pavgb %[ftmp3], %[ftmp3], %[ff_pb_3] \n\t"
2031 "pavgb %[ftmp4], %[ftmp4], %[ftmp2] \n\t"
2032 "pavgb %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
2033 "paddusb %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
2034 "psubusb %[ftmp6], %[ff_pb_A1], %[ftmp3] \n\t"
2035 "psubusb %[ftmp3], %[ftmp3], %[ff_pb_A1] \n\t"
2036 "pminub %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
2037 "pminub %[ftmp3], %[ftmp3], %[ftmp7] \n\t"
2038 "psubusb %[ftmp1], %[ftmp1], %[ftmp6] \n\t"
2039 "psubusb %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2040 "paddusb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
2041 "paddusb %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
2043 "punpckhwd %[ftmp4], %[ftmp9], %[ftmp9] \n\t"
2044 "punpckhwd %[ftmp5], %[ftmp1], %[ftmp1] \n\t"
2045 "punpckhwd %[ftmp6], %[ftmp2], %[ftmp2] \n\t"
2046 "punpcklbh %[ftmp0], %[ftmp9], %[ftmp1] \n\t"
2047 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp10] \n\t"
2048 "punpcklhw %[ftmp1], %[ftmp0], %[ftmp2] \n\t"
2049 "punpckhhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2050 MMI_USWC1(%[ftmp1], %[addr5], 0x00)
2051 PTR_ADDU "%[addr3], %[addr5], %[stride] \n\t"
2052 "punpckhwd %[ftmp1], %[ftmp1], %[ftmp1] \n\t"
2053 MMI_USWC1(%[ftmp1], %[addr3], 0x00)
2054 PTR_ADDU "%[addr4], %[addr5], %[addr0] \n\t"
2055 MMI_USWC1(%[ftmp0], %[addr4], 0x00)
2056 "punpckhwd %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
2057 "punpckhwd %[ftmp3], %[ftmp10], %[ftmp10] \n\t"
2058 MMI_USWC1(%[ftmp0], %[pix], 0x00)
2059 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2060 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
2061 PTR_ADDU "%[addr3], %[pix], %[stride] \n\t"
2062 "punpcklhw %[ftmp5], %[ftmp4], %[ftmp6] \n\t"
2063 "punpckhhw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2064 MMI_USWC1(%[ftmp5], %[addr3], 0x00)
2065 "punpckhwd %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
2066 PTR_ADDU "%[addr3], %[pix], %[addr0] \n\t"
2067 PTR_ADDU "%[addr4], %[pix], %[addr1] \n\t"
2068 MMI_USWC1(%[ftmp5], %[addr3], 0x00)
2069 MMI_USWC1(%[ftmp4], %[addr4], 0x00)
2070 PTR_ADDU "%[addr3], %[pix], %[addr2] \n\t"
2071 "punpckhwd %[ftmp9], %[ftmp4], %[ftmp4] \n\t"
2072 MMI_USWC1(%[ftmp9], %[addr3], 0x00)
2073 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2074 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2075 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2076 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2077 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
2078 [ftmp10]
"=&f"(ftmp[10]),
2080 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
2081 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
2082 [addr4]
"=&r"(addr[4]), [addr5]
"=&r"(addr[5]),
2100 "addi %[alpha], %[alpha], -0x01 \n\t"
2101 "addi %[beta], %[beta], -0x01 \n\t"
2102 PTR_ADDU "%[addr0], %[stride], %[stride] \n\t"
2103 PTR_ADDI "%[pix], %[pix], -0x02 \n\t"
2104 PTR_ADDU "%[addr1], %[addr0], %[stride] \n\t"
2105 PTR_ADDU "%[addr2], %[addr0], %[addr0] \n\t"
2106 "or %[addr5], $0, %[pix] \n\t"
2107 PTR_ADDU "%[pix], %[pix], %[addr1] \n\t"
2108 MMI_ULWC1(%[ftmp0], %[addr5], 0x00)
2109 PTR_ADDU "%[addr3], %[addr5], %[stride] \n\t"
2110 MMI_ULWC1(%[ftmp2], %[addr3], 0x00)
2111 PTR_ADDU "%[addr4], %[addr5], %[addr0] \n\t"
2112 MMI_ULWC1(%[ftmp1], %[addr4], 0x00)
2113 MMI_ULWC1(%[ftmp3], %[pix], 0x00)
2114 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2115 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
2116 PTR_ADDU "%[addr3], %[pix], %[stride] \n\t"
2117 "punpckhhw %[ftmp2], %[ftmp0], %[ftmp1] \n\t"
2118 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2119 MMI_ULWC1(%[ftmp4], %[addr3], 0x00)
2120 PTR_ADDU "%[addr4], %[pix], %[addr0] \n\t"
2121 MMI_ULWC1(%[ftmp6], %[addr4], 0x00)
2122 PTR_ADDU "%[addr3], %[pix], %[addr1] \n\t"
2123 MMI_ULWC1(%[ftmp5], %[addr3], 0x00)
2124 PTR_ADDU "%[addr4], %[pix], %[addr2] \n\t"
2125 MMI_ULWC1(%[ftmp7], %[addr4], 0x00)
2126 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2127 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp7] \n\t"
2128 "mov.d %[ftmp6], %[ftmp4] \n\t"
2129 "punpcklhw %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2130 "punpckhhw %[ftmp6], %[ftmp6], %[ftmp5] \n\t"
2131 "punpckhwd %[ftmp1], %[ftmp0], %[ftmp4] \n\t"
2132 "punpckhwd %[ftmp3], %[ftmp2], %[ftmp6] \n\t"
2133 "punpcklwd %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
2134 "punpcklwd %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
2136 "xor %[ftmp8], %[ftmp8], %[ftmp8] \n\t"
2137 "mtc1 %[alpha], %[ftmp4] \n\t"
2138 "mtc1 %[beta], %[ftmp5] \n\t"
2139 "pshufh %[ftmp4], %[ftmp4], %[ftmp8] \n\t"
2140 "pshufh %[ftmp5], %[ftmp5], %[ftmp8] \n\t"
2141 "packushb %[ftmp4], %[ftmp4], %[ftmp4] \n\t"
2142 "packushb %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
2143 "psubusb %[ftmp6], %[ftmp2], %[ftmp1] \n\t"
2144 "psubusb %[ftmp7], %[ftmp1], %[ftmp2] \n\t"
2145 "or %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
2146 "psubusb %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
2147 "psubusb %[ftmp6], %[ftmp1], %[ftmp0] \n\t"
2148 "psubusb %[ftmp4], %[ftmp0], %[ftmp1] \n\t"
2149 "or %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2150 "psubusb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2151 "or %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
2152 "psubusb %[ftmp6], %[ftmp2], %[ftmp3] \n\t"
2153 "psubusb %[ftmp4], %[ftmp3], %[ftmp2] \n\t"
2154 "or %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2155 "psubusb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2156 "or %[ftmp7], %[ftmp7], %[ftmp4] \n\t"
2157 "xor %[ftmp6], %[ftmp6], %[ftmp6] \n\t"
2158 "pcmpeqb %[ftmp7], %[ftmp7], %[ftmp6] \n\t"
2159 "mov.d %[ftmp5], %[ftmp1] \n\t"
2160 "mov.d %[ftmp6], %[ftmp2] \n\t"
2161 "xor %[ftmp4], %[ftmp1], %[ftmp3] \n\t"
2162 "and %[ftmp4], %[ftmp4], %[ff_pb_1] \n\t"
2163 "pavgb %[ftmp1], %[ftmp1], %[ftmp3] \n\t"
2164 "psubusb %[ftmp1], %[ftmp1], %[ftmp4] \n\t"
2165 "pavgb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
2166 "xor %[ftmp4], %[ftmp2], %[ftmp0] \n\t"
2167 "and %[ftmp4], %[ftmp4], %[ff_pb_1] \n\t"
2168 "pavgb %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
2169 "psubusb %[ftmp2], %[ftmp2], %[ftmp4] \n\t"
2170 "pavgb %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2171 "psubb %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
2172 "psubb %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
2173 "and %[ftmp1], %[ftmp1], %[ftmp7] \n\t"
2174 "and %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
2175 "paddb %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
2176 "paddb %[ftmp2], %[ftmp2], %[ftmp6] \n\t"
2178 "punpckhwd %[ftmp4], %[ftmp0], %[ftmp0] \n\t"
2179 "punpckhwd %[ftmp5], %[ftmp1], %[ftmp1] \n\t"
2180 "punpckhwd %[ftmp6], %[ftmp2], %[ftmp2] \n\t"
2181 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2182 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2183 "punpcklhw %[ftmp1], %[ftmp0], %[ftmp2] \n\t"
2184 "punpckhhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2185 MMI_USWC1(%[ftmp1], %[addr5], 0x00)
2186 PTR_ADDU "%[addr3], %[addr5], %[stride] \n\t"
2187 "punpckhwd %[ftmp1], %[ftmp1], %[ftmp1] \n\t"
2188 PTR_ADDU "%[addr4], %[addr5], %[addr0] \n\t"
2189 MMI_USWC1(%[ftmp1], %[addr3], 0x00)
2190 MMI_USWC1(%[ftmp0], %[addr4], 0x00)
2191 "punpckhwd %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
2192 "punpckhwd %[ftmp3], %[ftmp3], %[ftmp3] \n\t"
2193 MMI_USWC1(%[ftmp0], %[pix], 0x00)
2194 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2195 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
2196 PTR_ADDU "%[addr3], %[pix], %[stride] \n\t"
2197 "punpcklhw %[ftmp5], %[ftmp4], %[ftmp6] \n\t"
2198 "punpckhhw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2199 MMI_USWC1(%[ftmp5], %[addr3], 0x00)
2200 "punpckhwd %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
2201 PTR_ADDU "%[addr3], %[pix], %[addr0] \n\t"
2202 PTR_ADDU "%[addr4], %[pix], %[addr1] \n\t"
2203 MMI_USWC1(%[ftmp5], %[addr3], 0x00)
2204 PTR_ADDU "%[addr3], %[pix], %[addr2] \n\t"
2205 MMI_USWC1(%[ftmp4], %[addr4], 0x00)
2206 "punpckhwd %[ftmp9], %[ftmp4], %[ftmp4] \n\t"
2207 MMI_USWC1(%[ftmp9], %[addr3], 0x00)
2208 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2209 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2210 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2211 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2212 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
2213 [ftmp10]
"=&f"(ftmp[10]),
2215 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
2216 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
2217 [addr4]
"=&r"(addr[4]), [addr5]
"=&r"(addr[5]),
2228 if ((tc0[0] & tc0[1]) >= 0)
2230 if ((tc0[2] & tc0[3]) >= 0)
2251 PTR_ADDU "%[addr0], %[stride], %[stride] \n\t"
2252 PTR_ADDI "%[addr1], %[pix], -0x4 \n\t"
2253 PTR_ADDU "%[addr2], %[stride], %[addr0] \n\t"
2254 MMI_ULDC1(%[ftmp0], %[addr1], 0x00)
2255 PTR_ADDU "%[addr3], %[addr1], %[stride] \n\t"
2256 PTR_ADDU "%[addr4], %[addr1], %[addr2] \n\t"
2257 MMI_ULDC1(%[ftmp1], %[addr3], 0x00)
2258 PTR_ADDU "%[addr5], %[addr1], %[addr0] \n\t"
2259 MMI_ULDC1(%[ftmp2], %[addr5], 0x00)
2260 MMI_ULDC1(%[ftmp3], %[addr4], 0x00)
2261 PTR_ADDU "%[addr3], %[addr4], %[stride] \n\t"
2262 MMI_ULDC1(%[ftmp4], %[addr3], 0x00)
2263 PTR_ADDU "%[addr5], %[addr4], %[addr0] \n\t"
2264 MMI_ULDC1(%[ftmp5], %[addr5], 0x00)
2265 PTR_ADDU "%[addr3], %[addr4], %[addr2] \n\t"
2266 MMI_ULDC1(%[ftmp6], %[addr3], 0x00)
2267 PTR_ADDU "%[addr6], %[addr0], %[addr0] \n\t"
2268 "punpckhbh %[ftmp7], %[ftmp0], %[ftmp1] \n\t"
2269 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2270 "punpckhbh %[ftmp1], %[ftmp2], %[ftmp3] \n\t"
2271 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2272 "punpckhbh %[ftmp3], %[ftmp4], %[ftmp5] \n\t"
2273 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2274 PTR_ADDU "%[addr3], %[addr4], %[addr6] \n\t"
2275 MMI_SDC1(%[ftmp1], %[stack], 0x10)
2276 MMI_ULDC1(%[ftmp8], %[addr3], 0x00)
2277 PTR_ADDU "%[addr7], %[addr6], %[addr6] \n\t"
2278 "punpckhbh %[ftmp5], %[ftmp6], %[ftmp8] \n\t"
2279 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
2280 "punpckhhw %[ftmp1], %[ftmp0], %[ftmp2] \n\t"
2281 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2282 "punpckhhw %[ftmp2], %[ftmp4], %[ftmp6] \n\t"
2283 "punpcklhw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2284 MMI_LDC1(%[ftmp8], %[stack], 0x10)
2285 "punpckhwd %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
2286 MMI_SDC1(%[ftmp0], %[stack], 0x00)
2287 "punpckhhw %[ftmp6], %[ftmp7], %[ftmp8] \n\t"
2288 "punpcklhw %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
2289 "punpckhhw %[ftmp0], %[ftmp3], %[ftmp5] \n\t"
2290 "punpcklhw %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
2291 "punpcklwd %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
2292 "punpckhwd %[ftmp5], %[ftmp7], %[ftmp3] \n\t"
2293 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
2294 "punpckhwd %[ftmp3], %[ftmp1], %[ftmp2] \n\t"
2295 "punpcklwd %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
2296 MMI_SDC1(%[ftmp1], %[stack], 0x10)
2297 MMI_SDC1(%[ftmp3], %[stack], 0x20)
2298 MMI_SDC1(%[ftmp7], %[stack], 0x30)
2299 MMI_SDC1(%[ftmp5], %[stack], 0x40)
2300 MMI_SDC1(%[ftmp6], %[stack], 0x50)
2301 PTR_ADDU "%[addr1], %[addr1], %[addr7] \n\t"
2302 PTR_ADDU "%[addr4], %[addr4], %[addr7] \n\t"
2303 MMI_ULDC1(%[ftmp0], %[addr1], 0x00)
2304 PTR_ADDU "%[addr3], %[addr1], %[stride] \n\t"
2305 MMI_ULDC1(%[ftmp1], %[addr3], 0x00)
2306 PTR_ADDU "%[addr5], %[addr1], %[addr0] \n\t"
2307 MMI_ULDC1(%[ftmp2], %[addr5], 0x00)
2308 MMI_ULDC1(%[ftmp3], %[addr4], 0x00)
2309 PTR_ADDU "%[addr3], %[addr4], %[stride] \n\t"
2310 MMI_ULDC1(%[ftmp4], %[addr3], 0x00)
2311 PTR_ADDU "%[addr5], %[addr4], %[addr0] \n\t"
2312 MMI_ULDC1(%[ftmp5], %[addr5], 0x00)
2313 PTR_ADDU "%[addr3], %[addr4], %[addr2] \n\t"
2314 MMI_ULDC1(%[ftmp6], %[addr3], 0x00)
2315 "punpckhbh %[ftmp7], %[ftmp0], %[ftmp1] \n\t"
2316 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2317 "punpckhbh %[ftmp1], %[ftmp2], %[ftmp3] \n\t"
2318 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2319 "punpckhbh %[ftmp3], %[ftmp4], %[ftmp5] \n\t"
2320 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2321 PTR_ADDU "%[addr3], %[addr4], %[addr6] \n\t"
2322 MMI_SDC1(%[ftmp1], %[stack], 0x18)
2323 MMI_ULDC1(%[ftmp8], %[addr3], 0x00)
2324 "punpckhhw %[ftmp1], %[ftmp0], %[ftmp2] \n\t"
2325 "punpckhbh %[ftmp5], %[ftmp6], %[ftmp8] \n\t"
2326 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
2327 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2328 "punpckhhw %[ftmp2], %[ftmp4], %[ftmp6] \n\t"
2329 "punpcklhw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2330 "punpckhwd %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
2331 MMI_LDC1(%[ftmp8], %[stack], 0x18)
2332 MMI_SDC1(%[ftmp0], %[stack], 0x08)
2333 "punpckhhw %[ftmp6], %[ftmp7], %[ftmp8] \n\t"
2334 "punpcklhw %[ftmp7], %[ftmp7], %[ftmp8] \n\t"
2335 "punpckhhw %[ftmp0], %[ftmp3], %[ftmp5] \n\t"
2336 "punpcklhw %[ftmp3], %[ftmp3], %[ftmp5] \n\t"
2337 "punpckhwd %[ftmp5], %[ftmp7], %[ftmp3] \n\t"
2338 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp3] \n\t"
2339 "punpckhwd %[ftmp3], %[ftmp1], %[ftmp2] \n\t"
2340 "punpcklwd %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
2341 "punpcklwd %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
2342 MMI_SDC1(%[ftmp1], %[stack], 0x18)
2343 MMI_SDC1(%[ftmp3], %[stack], 0x28)
2344 MMI_SDC1(%[ftmp7], %[stack], 0x38)
2345 MMI_SDC1(%[ftmp5], %[stack], 0x48)
2346 MMI_SDC1(%[ftmp6], %[stack], 0x58)
2347 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2348 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2349 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2350 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2351 [ftmp8]
"=&f"(ftmp[8]),
2353 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
2354 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
2355 [addr4]
"=&r"(addr[4]), [addr5]
"=&r"(addr[5]),
2356 [addr6]
"=&r"(addr[6]), [addr7]
"=&r"(addr[7])
2365 PTR_ADDU "%[addr0], %[stride], %[stride] \n\t"
2366 PTR_ADDI "%[addr1], %[pix], -0x02 \n\t"
2367 PTR_ADDU "%[addr6], %[addr0], %[addr0] \n\t"
2368 PTR_ADDU "%[addr2], %[addr0], %[stride] \n\t"
2369 PTR_ADDU "%[addr7], %[addr6], %[addr6] \n\t"
2370 PTR_ADDU "%[addr4], %[addr1], %[addr2] \n\t"
2371 MMI_LDC1(%[ftmp0], %[stack], 0x10)
2372 MMI_LDC1(%[ftmp1], %[stack], 0x20)
2373 MMI_LDC1(%[ftmp2], %[stack], 0x30)
2374 MMI_LDC1(%[ftmp3], %[stack], 0x40)
2375 "punpckhwd %[ftmp4], %[ftmp0], %[ftmp0] \n\t"
2376 "punpckhwd %[ftmp5], %[ftmp1], %[ftmp1] \n\t"
2377 "punpckhwd %[ftmp6], %[ftmp2], %[ftmp2] \n\t"
2378 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2379 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2380 "punpcklhw %[ftmp1], %[ftmp0], %[ftmp2] \n\t"
2381 "punpckhhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2382 MMI_USWC1(%[ftmp1], %[addr1], 0x00)
2383 PTR_ADDU "%[addr3], %[addr1], %[stride] \n\t"
2384 "punpckhwd %[ftmp1], %[ftmp1], %[ftmp1] \n\t"
2385 PTR_ADDU "%[addr5], %[addr1], %[addr0] \n\t"
2386 MMI_USWC1(%[ftmp1], %[addr3], 0x00)
2387 MMI_USWC1(%[ftmp0], %[addr5], 0x00)
2388 "punpckhwd %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
2389 "punpckhwd %[ftmp3], %[ftmp3], %[ftmp3] \n\t"
2390 MMI_USWC1(%[ftmp0], %[addr4], 0x00)
2391 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2392 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
2393 "punpcklhw %[ftmp5], %[ftmp4], %[ftmp6] \n\t"
2394 PTR_ADDU "%[addr3], %[addr4], %[stride] \n\t"
2395 "punpckhhw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2396 MMI_USWC1(%[ftmp5], %[addr3], 0x00)
2397 PTR_ADDU "%[addr3], %[addr4], %[addr0] \n\t"
2398 "punpckhwd %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
2399 PTR_ADDU "%[addr5], %[addr4], %[addr2] \n\t"
2400 MMI_USWC1(%[ftmp5], %[addr3], 0x00)
2401 MMI_USWC1(%[ftmp4], %[addr5], 0x00)
2402 PTR_ADDU "%[addr3], %[addr4], %[addr6] \n\t"
2403 "punpckhwd %[ftmp4], %[ftmp4], %[ftmp4] \n\t"
2404 PTR_ADDU "%[addr1], %[addr1], %[addr7] \n\t"
2405 MMI_USWC1(%[ftmp4], %[addr3], 0x00)
2406 PTR_ADDU "%[addr4], %[addr4], %[addr7] \n\t"
2407 MMI_LDC1(%[ftmp0], %[stack], 0x18)
2408 MMI_LDC1(%[ftmp1], %[stack], 0x28)
2409 MMI_LDC1(%[ftmp2], %[stack], 0x38)
2410 MMI_LDC1(%[ftmp3], %[stack], 0x48)
2411 PTR_ADDU "%[addr0], %[stride], %[stride] \n\t"
2412 "punpckhwd %[ftmp4], %[ftmp0], %[ftmp0] \n\t"
2413 PTR_ADDU "%[addr6], %[addr0], %[addr0] \n\t"
2414 "punpckhwd %[ftmp5], %[ftmp1], %[ftmp1] \n\t"
2415 "punpckhwd %[ftmp6], %[ftmp2], %[ftmp2] \n\t"
2416 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2417 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2418 PTR_ADDU "%[addr3], %[addr1], %[stride] \n\t"
2419 "punpcklhw %[ftmp1], %[ftmp0], %[ftmp2] \n\t"
2420 "punpckhhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2421 MMI_USWC1(%[ftmp1], %[addr1], 0x00)
2422 "punpckhwd %[ftmp1], %[ftmp1], %[ftmp1] \n\t"
2423 PTR_ADDU "%[addr5], %[addr1], %[addr0] \n\t"
2424 MMI_USWC1(%[ftmp1], %[addr3], 0x00)
2425 MMI_USWC1(%[ftmp0], %[addr5], 0x00)
2426 "punpckhwd %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
2427 "punpckhwd %[ftmp3], %[ftmp3], %[ftmp3] \n\t"
2428 MMI_USWC1(%[ftmp0], %[addr4], 0x00)
2429 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2430 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp3] \n\t"
2431 PTR_ADDU "%[addr3], %[addr4], %[stride] \n\t"
2432 "punpcklhw %[ftmp5], %[ftmp4], %[ftmp6] \n\t"
2433 "punpckhhw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2434 MMI_USWC1(%[ftmp5], %[addr3], 0x00)
2435 PTR_ADDU "%[addr3], %[addr4], %[addr0] \n\t"
2436 "punpckhwd %[ftmp5], %[ftmp5], %[ftmp5] \n\t"
2437 PTR_ADDU "%[addr5], %[addr4], %[addr2] \n\t"
2438 MMI_USWC1(%[ftmp5], %[addr3], 0x00)
2439 MMI_USWC1(%[ftmp4], %[addr5], 0x00)
2440 PTR_ADDU "%[addr3], %[addr4], %[addr6] \n\t"
2441 "punpckhwd %[ftmp4], %[ftmp4], %[ftmp4] \n\t"
2442 MMI_USWC1(%[ftmp4], %[addr3], 0x00)
2443 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2444 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2445 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2446 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2447 [ftmp8]
"=&f"(ftmp[8]),
2450 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
2451 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
2452 [addr4]
"=&r"(addr[4]), [addr5]
"=&r"(addr[5]),
2453 [addr6]
"=&r"(addr[6]), [addr7]
"=&r"(addr[7])
2470 PTR_ADDU "%[addr0], %[stride], %[stride] \n\t"
2471 PTR_ADDI "%[addr1], %[pix], -0x04 \n\t"
2472 PTR_ADDU "%[addr2], %[addr0], %[stride] \n\t"
2473 PTR_ADDU "%[addr3], %[addr0], %[addr0] \n\t"
2474 PTR_ADDU "%[addr4], %[addr1], %[addr2] \n\t"
2475 PTR_ADDU "%[addr5], %[addr1], %[stride] \n\t"
2476 MMI_ULDC1(%[ftmp0], %[addr1], 0x00)
2477 PTR_ADDU "%[addr6], %[addr1], %[addr0] \n\t"
2478 MMI_ULDC1(%[ftmp1], %[addr5], 0x00)
2479 MMI_ULDC1(%[ftmp2], %[addr6], 0x00)
2480 PTR_ADDU "%[addr5], %[addr4], %[stride] \n\t"
2481 MMI_ULDC1(%[ftmp3], %[addr4], 0x00)
2482 PTR_ADDU "%[addr6], %[addr4], %[addr0] \n\t"
2483 MMI_ULDC1(%[ftmp4], %[addr5], 0x00)
2484 PTR_ADDU "%[addr5], %[addr4], %[addr2] \n\t"
2485 MMI_ULDC1(%[ftmp5], %[addr6], 0x00)
2486 MMI_ULDC1(%[ftmp6], %[addr5], 0x00)
2487 PTR_ADDU "%[addr5], %[addr4], %[addr3] \n\t"
2488 "punpckhbh %[ftmp7], %[ftmp0], %[ftmp1] \n\t"
2489 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2490 "punpckhbh %[ftmp1], %[ftmp2], %[ftmp3] \n\t"
2491 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2492 "punpckhbh %[ftmp3], %[ftmp4], %[ftmp5] \n\t"
2493 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2494 MMI_ULDC1(%[ftmp8], %[addr5], 0x00)
2495 "punpckhbh %[ftmp5], %[ftmp6], %[ftmp8] \n\t"
2496 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
2497 MMI_SDC1(%[ftmp3], %[ptmp], 0x00)
2498 "punpckhhw %[ftmp3], %[ftmp0], %[ftmp2] \n\t"
2499 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2500 "punpckhhw %[ftmp2], %[ftmp4], %[ftmp6] \n\t"
2501 "punpcklhw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2502 "punpckhhw %[ftmp6], %[ftmp7], %[ftmp1] \n\t"
2503 "punpcklhw %[ftmp7], %[ftmp7], %[ftmp1] \n\t"
2504 MMI_SDC1(%[ftmp2], %[ptmp], 0x20)
2505 MMI_LDC1(%[ftmp2], %[ptmp], 0x00)
2506 "punpckhhw %[ftmp1], %[ftmp2], %[ftmp5] \n\t"
2507 "punpcklhw %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
2508 "punpckhwd %[ftmp5], %[ftmp0], %[ftmp4] \n\t"
2509 "punpcklwd %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
2510 "punpckhwd %[ftmp4], %[ftmp7], %[ftmp2] \n\t"
2511 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
2512 MMI_SDC1(%[ftmp0], %[ptmp], 0x00)
2513 MMI_SDC1(%[ftmp5], %[ptmp], 0x10)
2514 MMI_SDC1(%[ftmp7], %[ptmp], 0x40)
2515 MMI_SDC1(%[ftmp4], %[ptmp], 0x50)
2516 MMI_LDC1(%[ftmp8], %[ptmp], 0x20)
2517 "punpckhwd %[ftmp0], %[ftmp3], %[ftmp8] \n\t"
2518 "punpcklwd %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
2519 "punpckhwd %[ftmp5], %[ftmp6], %[ftmp1] \n\t"
2520 "punpcklwd %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
2521 PTR_ADDU "%[addr5], %[addr3], %[addr3] \n\t"
2522 MMI_SDC1(%[ftmp3], %[ptmp], 0x20)
2523 MMI_SDC1(%[ftmp0], %[ptmp], 0x30)
2524 MMI_SDC1(%[ftmp6], %[ptmp], 0x60)
2525 MMI_SDC1(%[ftmp5], %[ptmp], 0x70)
2526 PTR_ADDU "%[addr1], %[addr1], %[addr5] \n\t"
2527 PTR_ADDU "%[addr4], %[addr4], %[addr5] \n\t"
2528 PTR_ADDU "%[addr5], %[addr1], %[stride] \n\t"
2529 MMI_ULDC1(%[ftmp0], %[addr1], 0x00)
2530 PTR_ADDU "%[addr6], %[addr1], %[addr0] \n\t"
2531 MMI_ULDC1(%[ftmp1], %[addr5], 0x00)
2532 MMI_ULDC1(%[ftmp2], %[addr6], 0x00)
2533 PTR_ADDU "%[addr5], %[addr4], %[stride] \n\t"
2534 MMI_ULDC1(%[ftmp3], %[addr4], 0x00)
2535 PTR_ADDU "%[addr6], %[addr4], %[addr0] \n\t"
2536 MMI_ULDC1(%[ftmp4], %[addr5], 0x00)
2537 PTR_ADDU "%[addr5], %[addr4], %[addr2] \n\t"
2538 MMI_ULDC1(%[ftmp5], %[addr6], 0x00)
2539 MMI_ULDC1(%[ftmp6], %[addr5], 0x00)
2540 PTR_ADDU "%[addr5], %[addr4], %[addr3] \n\t"
2541 "punpckhbh %[ftmp7], %[ftmp0], %[ftmp1] \n\t"
2542 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2543 "punpckhbh %[ftmp1], %[ftmp2], %[ftmp3] \n\t"
2544 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2545 "punpckhbh %[ftmp3], %[ftmp4], %[ftmp5] \n\t"
2546 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2547 MMI_ULDC1(%[ftmp8], %[addr5], 0x00)
2548 "punpckhbh %[ftmp5], %[ftmp6], %[ftmp8] \n\t"
2549 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
2550 MMI_SDC1(%[ftmp3], %[ptmp], 0x08)
2551 "punpckhhw %[ftmp3], %[ftmp0], %[ftmp2] \n\t"
2552 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2553 "punpckhhw %[ftmp2], %[ftmp4], %[ftmp6] \n\t"
2554 "punpcklhw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2555 "punpckhhw %[ftmp6], %[ftmp7], %[ftmp1] \n\t"
2556 "punpcklhw %[ftmp7], %[ftmp7], %[ftmp1] \n\t"
2557 MMI_SDC1(%[ftmp2], %[ptmp], 0x28)
2558 MMI_LDC1(%[ftmp2], %[ptmp], 0x08)
2559 "punpckhhw %[ftmp1], %[ftmp2], %[ftmp5] \n\t"
2560 "punpcklhw %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
2561 "punpckhwd %[ftmp5], %[ftmp0], %[ftmp4] \n\t"
2562 "punpcklwd %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
2563 "punpckhwd %[ftmp4], %[ftmp7], %[ftmp2] \n\t"
2564 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
2565 MMI_SDC1(%[ftmp0], %[ptmp], 0x08)
2566 MMI_SDC1(%[ftmp5], %[ptmp], 0x18)
2567 MMI_SDC1(%[ftmp7], %[ptmp], 0x48)
2568 MMI_SDC1(%[ftmp4], %[ptmp], 0x58)
2569 MMI_LDC1(%[ftmp8], %[ptmp], 0x28)
2570 "punpckhwd %[ftmp0], %[ftmp3], %[ftmp8] \n\t"
2571 "punpcklwd %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
2572 "punpckhwd %[ftmp5], %[ftmp6], %[ftmp1] \n\t"
2573 "punpcklwd %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
2574 MMI_SDC1(%[ftmp3], %[ptmp], 0x28)
2575 MMI_SDC1(%[ftmp0], %[ptmp], 0x38)
2576 MMI_SDC1(%[ftmp6], %[ptmp], 0x68)
2577 MMI_SDC1(%[ftmp5], %[ptmp], 0x78)
2578 PTR_S "%[addr1], 0x00(%[pdat]) \n\t"
2579 PTR_S "%[addr2], 0x08(%[pdat]) \n\t"
2580 PTR_S "%[addr0], 0x10(%[pdat]) \n\t"
2581 PTR_S "%[addr3], 0x18(%[pdat]) \n\t"
2582 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2583 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2584 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2585 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2586 [ftmp8]
"=&f"(ftmp[8]),
2588 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
2589 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
2590 [addr4]
"=&r"(addr[4]), [addr5]
"=&r"(addr[5]),
2591 [addr6]
"=&r"(addr[6])
2593 [ptmp]
"r"(ptmp), [pdat]
"r"(pdat)
2600 PTR_L "%[addr1], 0x00(%[pdat]) \n\t"
2601 PTR_L "%[addr2], 0x08(%[pdat]) \n\t"
2602 PTR_L "%[addr0], 0x10(%[pdat]) \n\t"
2603 PTR_L "%[addr3], 0x18(%[pdat]) \n\t"
2604 PTR_ADDU "%[addr4], %[addr1], %[addr2] \n\t"
2605 MMI_LDC1(%[ftmp0], %[ptmp], 0x08)
2606 MMI_LDC1(%[ftmp1], %[ptmp], 0x18)
2607 MMI_LDC1(%[ftmp2], %[ptmp], 0x28)
2608 MMI_LDC1(%[ftmp3], %[ptmp], 0x38)
2609 MMI_LDC1(%[ftmp4], %[ptmp], 0x48)
2610 MMI_LDC1(%[ftmp5], %[ptmp], 0x58)
2611 MMI_LDC1(%[ftmp6], %[ptmp], 0x68)
2612 "punpckhbh %[ftmp7], %[ftmp0], %[ftmp1] \n\t"
2613 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2614 "punpckhbh %[ftmp1], %[ftmp2], %[ftmp3] \n\t"
2615 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2616 "punpckhbh %[ftmp3], %[ftmp4], %[ftmp5] \n\t"
2617 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2618 MMI_LDC1(%[ftmp8], %[ptmp], 0x78)
2619 "punpckhbh %[ftmp5], %[ftmp6], %[ftmp8] \n\t"
2620 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
2621 MMI_USDC1(%[ftmp3], %[addr1], 0x00)
2622 PTR_ADDU "%[addr5], %[addr1], %[addr0] \n\t"
2623 "punpckhhw %[ftmp3], %[ftmp0], %[ftmp2] \n\t"
2624 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2625 "punpckhhw %[ftmp2], %[ftmp4], %[ftmp6] \n\t"
2626 "punpcklhw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2627 "punpckhhw %[ftmp6], %[ftmp7], %[ftmp1] \n\t"
2628 "punpcklhw %[ftmp7], %[ftmp7], %[ftmp1] \n\t"
2629 MMI_USDC1(%[ftmp2], %[addr5], 0x00)
2630 MMI_ULDC1(%[ftmp2], %[addr1], 0x00)
2631 "punpckhhw %[ftmp1], %[ftmp2], %[ftmp5] \n\t"
2632 "punpcklhw %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
2633 "punpckhwd %[ftmp5], %[ftmp0], %[ftmp4] \n\t"
2634 "punpcklwd %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
2635 "punpckhwd %[ftmp4], %[ftmp7], %[ftmp2] \n\t"
2636 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
2637 PTR_ADDU "%[addr5], %[addr1], %[stride] \n\t"
2638 MMI_USDC1(%[ftmp0], %[addr1], 0x00)
2639 PTR_ADDU "%[addr6], %[addr4], %[stride] \n\t"
2640 MMI_USDC1(%[ftmp5], %[addr5], 0x00)
2641 PTR_ADDU "%[addr5], %[addr4], %[addr0] \n\t"
2642 MMI_USDC1(%[ftmp7], %[addr6], 0x00)
2643 PTR_ADDU "%[addr6], %[addr1], %[addr0] \n\t"
2644 MMI_USDC1(%[ftmp4], %[addr5], 0x00)
2645 MMI_ULDC1(%[ftmp8], %[addr6], 0x00)
2646 PTR_ADDU "%[addr5], %[addr1], %[addr0] \n\t"
2647 "punpckhwd %[ftmp0], %[ftmp3], %[ftmp8] \n\t"
2648 "punpcklwd %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
2649 "punpckhwd %[ftmp5], %[ftmp6], %[ftmp1] \n\t"
2650 "punpcklwd %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
2651 MMI_USDC1(%[ftmp3], %[addr5], 0x00)
2652 PTR_ADDU "%[addr5], %[addr4], %[addr2] \n\t"
2653 MMI_USDC1(%[ftmp0], %[addr4], 0x00)
2654 PTR_ADDU "%[addr6], %[addr4], %[addr3] \n\t"
2655 MMI_USDC1(%[ftmp6], %[addr5], 0x00)
2656 PTR_ADDU "%[addr5], %[addr3], %[addr3] \n\t"
2657 MMI_USDC1(%[ftmp5], %[addr6], 0x00)
2658 PTR_SUBU "%[addr1], %[addr1], %[addr5] \n\t"
2659 PTR_SUBU "%[addr4], %[addr4], %[addr5] \n\t"
2660 MMI_LDC1(%[ftmp0], %[ptmp], 0x00)
2661 MMI_LDC1(%[ftmp1], %[ptmp], 0x10)
2662 MMI_LDC1(%[ftmp2], %[ptmp], 0x20)
2663 MMI_LDC1(%[ftmp3], %[ptmp], 0x30)
2664 MMI_LDC1(%[ftmp4], %[ptmp], 0x40)
2665 MMI_LDC1(%[ftmp5], %[ptmp], 0x50)
2666 MMI_LDC1(%[ftmp6], %[ptmp], 0x60)
2667 "punpckhbh %[ftmp7], %[ftmp0], %[ftmp1] \n\t"
2668 "punpcklbh %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
2669 "punpckhbh %[ftmp1], %[ftmp2], %[ftmp3] \n\t"
2670 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
2671 "punpckhbh %[ftmp3], %[ftmp4], %[ftmp5] \n\t"
2672 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
2673 MMI_LDC1(%[ftmp8], %[ptmp], 0x70)
2674 "punpckhbh %[ftmp5], %[ftmp6], %[ftmp8] \n\t"
2675 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp8] \n\t"
2676 MMI_USDC1(%[ftmp3], %[addr1], 0x00)
2677 PTR_ADDU "%[addr5], %[addr1], %[addr0] \n\t"
2678 "punpckhhw %[ftmp3], %[ftmp0], %[ftmp2] \n\t"
2679 "punpcklhw %[ftmp0], %[ftmp0], %[ftmp2] \n\t"
2680 "punpckhhw %[ftmp2], %[ftmp4], %[ftmp6] \n\t"
2681 "punpcklhw %[ftmp4], %[ftmp4], %[ftmp6] \n\t"
2682 "punpckhhw %[ftmp6], %[ftmp7], %[ftmp1] \n\t"
2683 "punpcklhw %[ftmp7], %[ftmp7], %[ftmp1] \n\t"
2684 MMI_USDC1(%[ftmp2], %[addr5], 0x00)
2685 MMI_ULDC1(%[ftmp2], %[addr1], 0x00)
2686 "punpckhhw %[ftmp1], %[ftmp2], %[ftmp5] \n\t"
2687 "punpcklhw %[ftmp2], %[ftmp2], %[ftmp5] \n\t"
2688 "punpckhwd %[ftmp5], %[ftmp0], %[ftmp4] \n\t"
2689 "punpcklwd %[ftmp0], %[ftmp0], %[ftmp4] \n\t"
2690 "punpckhwd %[ftmp4], %[ftmp7], %[ftmp2] \n\t"
2691 "punpcklwd %[ftmp7], %[ftmp7], %[ftmp2] \n\t"
2692 PTR_ADDU "%[addr5], %[addr1], %[stride] \n\t"
2693 MMI_USDC1(%[ftmp0], %[addr1], 0x00)
2694 PTR_ADDU "%[addr6], %[addr4], %[stride] \n\t"
2695 MMI_USDC1(%[ftmp5], %[addr5], 0x00)
2696 PTR_ADDU "%[addr5], %[addr4], %[addr0] \n\t"
2697 MMI_USDC1(%[ftmp7], %[addr6], 0x00)
2698 PTR_ADDU "%[addr6], %[addr1], %[addr0] \n\t"
2699 MMI_USDC1(%[ftmp4], %[addr5], 0x00)
2700 MMI_ULDC1(%[ftmp8], %[addr6], 0x00)
2701 PTR_ADDU "%[addr5], %[addr1], %[addr0] \n\t"
2702 "punpckhwd %[ftmp0], %[ftmp3], %[ftmp8] \n\t"
2703 "punpcklwd %[ftmp3], %[ftmp3], %[ftmp8] \n\t"
2704 "punpckhwd %[ftmp5], %[ftmp6], %[ftmp1] \n\t"
2705 "punpcklwd %[ftmp6], %[ftmp6], %[ftmp1] \n\t"
2706 MMI_USDC1(%[ftmp3], %[addr5], 0x00)
2707 PTR_ADDU "%[addr5], %[addr4], %[addr2] \n\t"
2708 MMI_USDC1(%[ftmp0], %[addr4], 0x00)
2709 PTR_ADDU "%[addr6], %[addr4], %[addr3] \n\t"
2710 MMI_USDC1(%[ftmp6], %[addr5], 0x00)
2711 MMI_USDC1(%[ftmp5], %[addr6], 0x00)
2712 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2713 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2714 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2715 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2716 [ftmp8]
"=&f"(ftmp[8]),
2718 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
2719 [addr2]
"=&r"(addr[2]), [addr3]
"=&r"(addr[3]),
2720 [addr4]
"=&r"(addr[4]), [addr5]
"=&r"(addr[5]),
2721 [addr6]
"=&r"(addr[6])
2723 [ptmp]
"r"(ptmp), [pdat]
"r"(pdat)