00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #undef REAL_MOVNTQ
00025 #undef MOVNTQ
00026 #undef PAVGB
00027 #undef PREFETCH
00028 #undef PREFETCHW
00029 #undef EMMS
00030 #undef SFENCE
00031
00032 #if HAVE_AMD3DNOW
00033
00034 #define EMMS "femms"
00035 #else
00036 #define EMMS "emms"
00037 #endif
00038
00039 #if HAVE_AMD3DNOW
00040 #define PREFETCH "prefetch"
00041 #define PREFETCHW "prefetchw"
00042 #elif HAVE_MMX2
00043 #define PREFETCH "prefetchnta"
00044 #define PREFETCHW "prefetcht0"
00045 #else
00046 #define PREFETCH " # nop"
00047 #define PREFETCHW " # nop"
00048 #endif
00049
00050 #if HAVE_MMX2
00051 #define SFENCE "sfence"
00052 #else
00053 #define SFENCE " # nop"
00054 #endif
00055
00056 #if HAVE_MMX2
00057 #define PAVGB(a,b) "pavgb " #a ", " #b " \n\t"
00058 #elif HAVE_AMD3DNOW
00059 #define PAVGB(a,b) "pavgusb " #a ", " #b " \n\t"
00060 #endif
00061
00062 #if HAVE_MMX2
00063 #define REAL_MOVNTQ(a,b) "movntq " #a ", " #b " \n\t"
00064 #else
00065 #define REAL_MOVNTQ(a,b) "movq " #a ", " #b " \n\t"
00066 #endif
00067 #define MOVNTQ(a,b) REAL_MOVNTQ(a,b)
00068
00069 #if HAVE_ALTIVEC
00070 #include "swscale_altivec_template.c"
00071 #endif
00072
00073 #define YSCALEYUV2YV12X(x, offset, dest, width) \
00074 __asm__ volatile(\
00075 "xor %%"REG_a", %%"REG_a" \n\t"\
00076 "movq "VROUNDER_OFFSET"(%0), %%mm3 \n\t"\
00077 "movq %%mm3, %%mm4 \n\t"\
00078 "lea " offset "(%0), %%"REG_d" \n\t"\
00079 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00080 ASMALIGN(4) \
00081 "1: \n\t"\
00082 "movq 8(%%"REG_d"), %%mm0 \n\t" \
00083 "movq " x "(%%"REG_S", %%"REG_a", 2), %%mm2 \n\t" \
00084 "movq 8+" x "(%%"REG_S", %%"REG_a", 2), %%mm5 \n\t" \
00085 "add $16, %%"REG_d" \n\t"\
00086 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00087 "test %%"REG_S", %%"REG_S" \n\t"\
00088 "pmulhw %%mm0, %%mm2 \n\t"\
00089 "pmulhw %%mm0, %%mm5 \n\t"\
00090 "paddw %%mm2, %%mm3 \n\t"\
00091 "paddw %%mm5, %%mm4 \n\t"\
00092 " jnz 1b \n\t"\
00093 "psraw $3, %%mm3 \n\t"\
00094 "psraw $3, %%mm4 \n\t"\
00095 "packuswb %%mm4, %%mm3 \n\t"\
00096 MOVNTQ(%%mm3, (%1, %%REGa))\
00097 "add $8, %%"REG_a" \n\t"\
00098 "cmp %2, %%"REG_a" \n\t"\
00099 "movq "VROUNDER_OFFSET"(%0), %%mm3 \n\t"\
00100 "movq %%mm3, %%mm4 \n\t"\
00101 "lea " offset "(%0), %%"REG_d" \n\t"\
00102 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00103 "jb 1b \n\t"\
00104 :: "r" (&c->redDither),\
00105 "r" (dest), "g" (width)\
00106 : "%"REG_a, "%"REG_d, "%"REG_S\
00107 );
00108
00109 #define YSCALEYUV2YV12X_ACCURATE(x, offset, dest, width) \
00110 __asm__ volatile(\
00111 "lea " offset "(%0), %%"REG_d" \n\t"\
00112 "xor %%"REG_a", %%"REG_a" \n\t"\
00113 "pxor %%mm4, %%mm4 \n\t"\
00114 "pxor %%mm5, %%mm5 \n\t"\
00115 "pxor %%mm6, %%mm6 \n\t"\
00116 "pxor %%mm7, %%mm7 \n\t"\
00117 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00118 ASMALIGN(4) \
00119 "1: \n\t"\
00120 "movq " x "(%%"REG_S", %%"REG_a", 2), %%mm0 \n\t" \
00121 "movq 8+" x "(%%"REG_S", %%"REG_a", 2), %%mm2 \n\t" \
00122 "mov "STR(APCK_PTR2)"(%%"REG_d"), %%"REG_S" \n\t"\
00123 "movq " x "(%%"REG_S", %%"REG_a", 2), %%mm1 \n\t" \
00124 "movq %%mm0, %%mm3 \n\t"\
00125 "punpcklwd %%mm1, %%mm0 \n\t"\
00126 "punpckhwd %%mm1, %%mm3 \n\t"\
00127 "movq "STR(APCK_COEF)"(%%"REG_d"), %%mm1 \n\t" \
00128 "pmaddwd %%mm1, %%mm0 \n\t"\
00129 "pmaddwd %%mm1, %%mm3 \n\t"\
00130 "paddd %%mm0, %%mm4 \n\t"\
00131 "paddd %%mm3, %%mm5 \n\t"\
00132 "movq 8+" x "(%%"REG_S", %%"REG_a", 2), %%mm3 \n\t" \
00133 "mov "STR(APCK_SIZE)"(%%"REG_d"), %%"REG_S" \n\t"\
00134 "add $"STR(APCK_SIZE)", %%"REG_d" \n\t"\
00135 "test %%"REG_S", %%"REG_S" \n\t"\
00136 "movq %%mm2, %%mm0 \n\t"\
00137 "punpcklwd %%mm3, %%mm2 \n\t"\
00138 "punpckhwd %%mm3, %%mm0 \n\t"\
00139 "pmaddwd %%mm1, %%mm2 \n\t"\
00140 "pmaddwd %%mm1, %%mm0 \n\t"\
00141 "paddd %%mm2, %%mm6 \n\t"\
00142 "paddd %%mm0, %%mm7 \n\t"\
00143 " jnz 1b \n\t"\
00144 "psrad $16, %%mm4 \n\t"\
00145 "psrad $16, %%mm5 \n\t"\
00146 "psrad $16, %%mm6 \n\t"\
00147 "psrad $16, %%mm7 \n\t"\
00148 "movq "VROUNDER_OFFSET"(%0), %%mm0 \n\t"\
00149 "packssdw %%mm5, %%mm4 \n\t"\
00150 "packssdw %%mm7, %%mm6 \n\t"\
00151 "paddw %%mm0, %%mm4 \n\t"\
00152 "paddw %%mm0, %%mm6 \n\t"\
00153 "psraw $3, %%mm4 \n\t"\
00154 "psraw $3, %%mm6 \n\t"\
00155 "packuswb %%mm6, %%mm4 \n\t"\
00156 MOVNTQ(%%mm4, (%1, %%REGa))\
00157 "add $8, %%"REG_a" \n\t"\
00158 "cmp %2, %%"REG_a" \n\t"\
00159 "lea " offset "(%0), %%"REG_d" \n\t"\
00160 "pxor %%mm4, %%mm4 \n\t"\
00161 "pxor %%mm5, %%mm5 \n\t"\
00162 "pxor %%mm6, %%mm6 \n\t"\
00163 "pxor %%mm7, %%mm7 \n\t"\
00164 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00165 "jb 1b \n\t"\
00166 :: "r" (&c->redDither),\
00167 "r" (dest), "g" (width)\
00168 : "%"REG_a, "%"REG_d, "%"REG_S\
00169 );
00170
00171 #define YSCALEYUV2YV121 \
00172 "mov %2, %%"REG_a" \n\t"\
00173 ASMALIGN(4) \
00174 "1: \n\t"\
00175 "movq (%0, %%"REG_a", 2), %%mm0 \n\t"\
00176 "movq 8(%0, %%"REG_a", 2), %%mm1 \n\t"\
00177 "psraw $7, %%mm0 \n\t"\
00178 "psraw $7, %%mm1 \n\t"\
00179 "packuswb %%mm1, %%mm0 \n\t"\
00180 MOVNTQ(%%mm0, (%1, %%REGa))\
00181 "add $8, %%"REG_a" \n\t"\
00182 "jnc 1b \n\t"
00183
00184 #define YSCALEYUV2YV121_ACCURATE \
00185 "mov %2, %%"REG_a" \n\t"\
00186 "pcmpeqw %%mm7, %%mm7 \n\t"\
00187 "psrlw $15, %%mm7 \n\t"\
00188 "psllw $6, %%mm7 \n\t"\
00189 ASMALIGN(4) \
00190 "1: \n\t"\
00191 "movq (%0, %%"REG_a", 2), %%mm0 \n\t"\
00192 "movq 8(%0, %%"REG_a", 2), %%mm1 \n\t"\
00193 "paddsw %%mm7, %%mm0 \n\t"\
00194 "paddsw %%mm7, %%mm1 \n\t"\
00195 "psraw $7, %%mm0 \n\t"\
00196 "psraw $7, %%mm1 \n\t"\
00197 "packuswb %%mm1, %%mm0 \n\t"\
00198 MOVNTQ(%%mm0, (%1, %%REGa))\
00199 "add $8, %%"REG_a" \n\t"\
00200 "jnc 1b \n\t"
00201
00202
00203
00204
00205
00206
00207
00208
00209 #define YSCALEYUV2PACKEDX_UV \
00210 __asm__ volatile(\
00211 "xor %%"REG_a", %%"REG_a" \n\t"\
00212 ASMALIGN(4)\
00213 "nop \n\t"\
00214 "1: \n\t"\
00215 "lea "CHR_MMX_FILTER_OFFSET"(%0), %%"REG_d" \n\t"\
00216 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00217 "movq "VROUNDER_OFFSET"(%0), %%mm3 \n\t"\
00218 "movq %%mm3, %%mm4 \n\t"\
00219 ASMALIGN(4)\
00220 "2: \n\t"\
00221 "movq 8(%%"REG_d"), %%mm0 \n\t" \
00222 "movq (%%"REG_S", %%"REG_a"), %%mm2 \n\t" \
00223 "movq "AV_STRINGIFY(VOF)"(%%"REG_S", %%"REG_a"), %%mm5 \n\t" \
00224 "add $16, %%"REG_d" \n\t"\
00225 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00226 "pmulhw %%mm0, %%mm2 \n\t"\
00227 "pmulhw %%mm0, %%mm5 \n\t"\
00228 "paddw %%mm2, %%mm3 \n\t"\
00229 "paddw %%mm5, %%mm4 \n\t"\
00230 "test %%"REG_S", %%"REG_S" \n\t"\
00231 " jnz 2b \n\t"\
00232
00233 #define YSCALEYUV2PACKEDX_YA(offset) \
00234 "lea "offset"(%0), %%"REG_d" \n\t"\
00235 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00236 "movq "VROUNDER_OFFSET"(%0), %%mm1 \n\t"\
00237 "movq %%mm1, %%mm7 \n\t"\
00238 ASMALIGN(4)\
00239 "2: \n\t"\
00240 "movq 8(%%"REG_d"), %%mm0 \n\t" \
00241 "movq (%%"REG_S", %%"REG_a", 2), %%mm2 \n\t" \
00242 "movq 8(%%"REG_S", %%"REG_a", 2), %%mm5 \n\t" \
00243 "add $16, %%"REG_d" \n\t"\
00244 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00245 "pmulhw %%mm0, %%mm2 \n\t"\
00246 "pmulhw %%mm0, %%mm5 \n\t"\
00247 "paddw %%mm2, %%mm1 \n\t"\
00248 "paddw %%mm5, %%mm7 \n\t"\
00249 "test %%"REG_S", %%"REG_S" \n\t"\
00250 " jnz 2b \n\t"\
00251
00252 #define YSCALEYUV2PACKEDX \
00253 YSCALEYUV2PACKEDX_UV \
00254 YSCALEYUV2PACKEDX_YA(LUM_MMX_FILTER_OFFSET) \
00255
00256 #define YSCALEYUV2PACKEDX_END \
00257 :: "r" (&c->redDither), \
00258 "m" (dummy), "m" (dummy), "m" (dummy),\
00259 "r" (dest), "m" (dstW) \
00260 : "%"REG_a, "%"REG_d, "%"REG_S \
00261 );
00262
00263 #define YSCALEYUV2PACKEDX_ACCURATE_UV \
00264 __asm__ volatile(\
00265 "xor %%"REG_a", %%"REG_a" \n\t"\
00266 ASMALIGN(4)\
00267 "nop \n\t"\
00268 "1: \n\t"\
00269 "lea "CHR_MMX_FILTER_OFFSET"(%0), %%"REG_d" \n\t"\
00270 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00271 "pxor %%mm4, %%mm4 \n\t"\
00272 "pxor %%mm5, %%mm5 \n\t"\
00273 "pxor %%mm6, %%mm6 \n\t"\
00274 "pxor %%mm7, %%mm7 \n\t"\
00275 ASMALIGN(4)\
00276 "2: \n\t"\
00277 "movq (%%"REG_S", %%"REG_a"), %%mm0 \n\t" \
00278 "movq "AV_STRINGIFY(VOF)"(%%"REG_S", %%"REG_a"), %%mm2 \n\t" \
00279 "mov "STR(APCK_PTR2)"(%%"REG_d"), %%"REG_S" \n\t"\
00280 "movq (%%"REG_S", %%"REG_a"), %%mm1 \n\t" \
00281 "movq %%mm0, %%mm3 \n\t"\
00282 "punpcklwd %%mm1, %%mm0 \n\t"\
00283 "punpckhwd %%mm1, %%mm3 \n\t"\
00284 "movq "STR(APCK_COEF)"(%%"REG_d"),%%mm1 \n\t" \
00285 "pmaddwd %%mm1, %%mm0 \n\t"\
00286 "pmaddwd %%mm1, %%mm3 \n\t"\
00287 "paddd %%mm0, %%mm4 \n\t"\
00288 "paddd %%mm3, %%mm5 \n\t"\
00289 "movq "AV_STRINGIFY(VOF)"(%%"REG_S", %%"REG_a"), %%mm3 \n\t" \
00290 "mov "STR(APCK_SIZE)"(%%"REG_d"), %%"REG_S" \n\t"\
00291 "add $"STR(APCK_SIZE)", %%"REG_d" \n\t"\
00292 "test %%"REG_S", %%"REG_S" \n\t"\
00293 "movq %%mm2, %%mm0 \n\t"\
00294 "punpcklwd %%mm3, %%mm2 \n\t"\
00295 "punpckhwd %%mm3, %%mm0 \n\t"\
00296 "pmaddwd %%mm1, %%mm2 \n\t"\
00297 "pmaddwd %%mm1, %%mm0 \n\t"\
00298 "paddd %%mm2, %%mm6 \n\t"\
00299 "paddd %%mm0, %%mm7 \n\t"\
00300 " jnz 2b \n\t"\
00301 "psrad $16, %%mm4 \n\t"\
00302 "psrad $16, %%mm5 \n\t"\
00303 "psrad $16, %%mm6 \n\t"\
00304 "psrad $16, %%mm7 \n\t"\
00305 "movq "VROUNDER_OFFSET"(%0), %%mm0 \n\t"\
00306 "packssdw %%mm5, %%mm4 \n\t"\
00307 "packssdw %%mm7, %%mm6 \n\t"\
00308 "paddw %%mm0, %%mm4 \n\t"\
00309 "paddw %%mm0, %%mm6 \n\t"\
00310 "movq %%mm4, "U_TEMP"(%0) \n\t"\
00311 "movq %%mm6, "V_TEMP"(%0) \n\t"\
00312
00313 #define YSCALEYUV2PACKEDX_ACCURATE_YA(offset) \
00314 "lea "offset"(%0), %%"REG_d" \n\t"\
00315 "mov (%%"REG_d"), %%"REG_S" \n\t"\
00316 "pxor %%mm1, %%mm1 \n\t"\
00317 "pxor %%mm5, %%mm5 \n\t"\
00318 "pxor %%mm7, %%mm7 \n\t"\
00319 "pxor %%mm6, %%mm6 \n\t"\
00320 ASMALIGN(4)\
00321 "2: \n\t"\
00322 "movq (%%"REG_S", %%"REG_a", 2), %%mm0 \n\t" \
00323 "movq 8(%%"REG_S", %%"REG_a", 2), %%mm2 \n\t" \
00324 "mov "STR(APCK_PTR2)"(%%"REG_d"), %%"REG_S" \n\t"\
00325 "movq (%%"REG_S", %%"REG_a", 2), %%mm4 \n\t" \
00326 "movq %%mm0, %%mm3 \n\t"\
00327 "punpcklwd %%mm4, %%mm0 \n\t"\
00328 "punpckhwd %%mm4, %%mm3 \n\t"\
00329 "movq "STR(APCK_COEF)"(%%"REG_d"), %%mm4 \n\t" \
00330 "pmaddwd %%mm4, %%mm0 \n\t"\
00331 "pmaddwd %%mm4, %%mm3 \n\t"\
00332 "paddd %%mm0, %%mm1 \n\t"\
00333 "paddd %%mm3, %%mm5 \n\t"\
00334 "movq 8(%%"REG_S", %%"REG_a", 2), %%mm3 \n\t" \
00335 "mov "STR(APCK_SIZE)"(%%"REG_d"), %%"REG_S" \n\t"\
00336 "add $"STR(APCK_SIZE)", %%"REG_d" \n\t"\
00337 "test %%"REG_S", %%"REG_S" \n\t"\
00338 "movq %%mm2, %%mm0 \n\t"\
00339 "punpcklwd %%mm3, %%mm2 \n\t"\
00340 "punpckhwd %%mm3, %%mm0 \n\t"\
00341 "pmaddwd %%mm4, %%mm2 \n\t"\
00342 "pmaddwd %%mm4, %%mm0 \n\t"\
00343 "paddd %%mm2, %%mm7 \n\t"\
00344 "paddd %%mm0, %%mm6 \n\t"\
00345 " jnz 2b \n\t"\
00346 "psrad $16, %%mm1 \n\t"\
00347 "psrad $16, %%mm5 \n\t"\
00348 "psrad $16, %%mm7 \n\t"\
00349 "psrad $16, %%mm6 \n\t"\
00350 "movq "VROUNDER_OFFSET"(%0), %%mm0 \n\t"\
00351 "packssdw %%mm5, %%mm1 \n\t"\
00352 "packssdw %%mm6, %%mm7 \n\t"\
00353 "paddw %%mm0, %%mm1 \n\t"\
00354 "paddw %%mm0, %%mm7 \n\t"\
00355 "movq "U_TEMP"(%0), %%mm3 \n\t"\
00356 "movq "V_TEMP"(%0), %%mm4 \n\t"\
00357
00358 #define YSCALEYUV2PACKEDX_ACCURATE \
00359 YSCALEYUV2PACKEDX_ACCURATE_UV \
00360 YSCALEYUV2PACKEDX_ACCURATE_YA(LUM_MMX_FILTER_OFFSET)
00361
00362 #define YSCALEYUV2RGBX \
00363 "psubw "U_OFFSET"(%0), %%mm3 \n\t" \
00364 "psubw "V_OFFSET"(%0), %%mm4 \n\t" \
00365 "movq %%mm3, %%mm2 \n\t" \
00366 "movq %%mm4, %%mm5 \n\t" \
00367 "pmulhw "UG_COEFF"(%0), %%mm3 \n\t"\
00368 "pmulhw "VG_COEFF"(%0), %%mm4 \n\t"\
00369 \
00370 "pmulhw "UB_COEFF"(%0), %%mm2 \n\t"\
00371 "pmulhw "VR_COEFF"(%0), %%mm5 \n\t"\
00372 "psubw "Y_OFFSET"(%0), %%mm1 \n\t" \
00373 "psubw "Y_OFFSET"(%0), %%mm7 \n\t" \
00374 "pmulhw "Y_COEFF"(%0), %%mm1 \n\t"\
00375 "pmulhw "Y_COEFF"(%0), %%mm7 \n\t"\
00376 \
00377 "paddw %%mm3, %%mm4 \n\t"\
00378 "movq %%mm2, %%mm0 \n\t"\
00379 "movq %%mm5, %%mm6 \n\t"\
00380 "movq %%mm4, %%mm3 \n\t"\
00381 "punpcklwd %%mm2, %%mm2 \n\t"\
00382 "punpcklwd %%mm5, %%mm5 \n\t"\
00383 "punpcklwd %%mm4, %%mm4 \n\t"\
00384 "paddw %%mm1, %%mm2 \n\t"\
00385 "paddw %%mm1, %%mm5 \n\t"\
00386 "paddw %%mm1, %%mm4 \n\t"\
00387 "punpckhwd %%mm0, %%mm0 \n\t"\
00388 "punpckhwd %%mm6, %%mm6 \n\t"\
00389 "punpckhwd %%mm3, %%mm3 \n\t"\
00390 "paddw %%mm7, %%mm0 \n\t"\
00391 "paddw %%mm7, %%mm6 \n\t"\
00392 "paddw %%mm7, %%mm3 \n\t"\
00393 \
00394 "packuswb %%mm0, %%mm2 \n\t"\
00395 "packuswb %%mm6, %%mm5 \n\t"\
00396 "packuswb %%mm3, %%mm4 \n\t"\
00397
00398 #define REAL_YSCALEYUV2PACKED(index, c) \
00399 "movq "CHR_MMX_FILTER_OFFSET"+8("#c"), %%mm0 \n\t"\
00400 "movq "LUM_MMX_FILTER_OFFSET"+8("#c"), %%mm1 \n\t"\
00401 "psraw $3, %%mm0 \n\t"\
00402 "psraw $3, %%mm1 \n\t"\
00403 "movq %%mm0, "CHR_MMX_FILTER_OFFSET"+8("#c") \n\t"\
00404 "movq %%mm1, "LUM_MMX_FILTER_OFFSET"+8("#c") \n\t"\
00405 "xor "#index", "#index" \n\t"\
00406 ASMALIGN(4)\
00407 "1: \n\t"\
00408 "movq (%2, "#index"), %%mm2 \n\t" \
00409 "movq (%3, "#index"), %%mm3 \n\t" \
00410 "movq "AV_STRINGIFY(VOF)"(%2, "#index"), %%mm5 \n\t" \
00411 "movq "AV_STRINGIFY(VOF)"(%3, "#index"), %%mm4 \n\t" \
00412 "psubw %%mm3, %%mm2 \n\t" \
00413 "psubw %%mm4, %%mm5 \n\t" \
00414 "movq "CHR_MMX_FILTER_OFFSET"+8("#c"), %%mm0 \n\t"\
00415 "pmulhw %%mm0, %%mm2 \n\t" \
00416 "pmulhw %%mm0, %%mm5 \n\t" \
00417 "psraw $7, %%mm3 \n\t" \
00418 "psraw $7, %%mm4 \n\t" \
00419 "paddw %%mm2, %%mm3 \n\t" \
00420 "paddw %%mm5, %%mm4 \n\t" \
00421 "movq (%0, "#index", 2), %%mm0 \n\t" \
00422 "movq (%1, "#index", 2), %%mm1 \n\t" \
00423 "movq 8(%0, "#index", 2), %%mm6 \n\t" \
00424 "movq 8(%1, "#index", 2), %%mm7 \n\t" \
00425 "psubw %%mm1, %%mm0 \n\t" \
00426 "psubw %%mm7, %%mm6 \n\t" \
00427 "pmulhw "LUM_MMX_FILTER_OFFSET"+8("#c"), %%mm0 \n\t" \
00428 "pmulhw "LUM_MMX_FILTER_OFFSET"+8("#c"), %%mm6 \n\t" \
00429 "psraw $7, %%mm1 \n\t" \
00430 "psraw $7, %%mm7 \n\t" \
00431 "paddw %%mm0, %%mm1 \n\t" \
00432 "paddw %%mm6, %%mm7 \n\t" \
00433
00434 #define YSCALEYUV2PACKED(index, c) REAL_YSCALEYUV2PACKED(index, c)
00435
00436 #define REAL_YSCALEYUV2RGB_UV(index, c) \
00437 "xor "#index", "#index" \n\t"\
00438 ASMALIGN(4)\
00439 "1: \n\t"\
00440 "movq (%2, "#index"), %%mm2 \n\t" \
00441 "movq (%3, "#index"), %%mm3 \n\t" \
00442 "movq "AV_STRINGIFY(VOF)"(%2, "#index"), %%mm5 \n\t" \
00443 "movq "AV_STRINGIFY(VOF)"(%3, "#index"), %%mm4 \n\t" \
00444 "psubw %%mm3, %%mm2 \n\t" \
00445 "psubw %%mm4, %%mm5 \n\t" \
00446 "movq "CHR_MMX_FILTER_OFFSET"+8("#c"), %%mm0 \n\t"\
00447 "pmulhw %%mm0, %%mm2 \n\t" \
00448 "pmulhw %%mm0, %%mm5 \n\t" \
00449 "psraw $4, %%mm3 \n\t" \
00450 "psraw $4, %%mm4 \n\t" \
00451 "paddw %%mm2, %%mm3 \n\t" \
00452 "paddw %%mm5, %%mm4 \n\t" \
00453 "psubw "U_OFFSET"("#c"), %%mm3 \n\t" \
00454 "psubw "V_OFFSET"("#c"), %%mm4 \n\t" \
00455 "movq %%mm3, %%mm2 \n\t" \
00456 "movq %%mm4, %%mm5 \n\t" \
00457 "pmulhw "UG_COEFF"("#c"), %%mm3 \n\t"\
00458 "pmulhw "VG_COEFF"("#c"), %%mm4 \n\t"\
00459 \
00460
00461 #define REAL_YSCALEYUV2RGB_YA(index, c) \
00462 "movq (%0, "#index", 2), %%mm0 \n\t" \
00463 "movq (%1, "#index", 2), %%mm1 \n\t" \
00464 "movq 8(%0, "#index", 2), %%mm6 \n\t" \
00465 "movq 8(%1, "#index", 2), %%mm7 \n\t" \
00466 "psubw %%mm1, %%mm0 \n\t" \
00467 "psubw %%mm7, %%mm6 \n\t" \
00468 "pmulhw "LUM_MMX_FILTER_OFFSET"+8("#c"), %%mm0 \n\t" \
00469 "pmulhw "LUM_MMX_FILTER_OFFSET"+8("#c"), %%mm6 \n\t" \
00470 "psraw $4, %%mm1 \n\t" \
00471 "psraw $4, %%mm7 \n\t" \
00472 "paddw %%mm0, %%mm1 \n\t" \
00473 "paddw %%mm6, %%mm7 \n\t" \
00474
00475 #define REAL_YSCALEYUV2RGB_COEFF(c) \
00476 "pmulhw "UB_COEFF"("#c"), %%mm2 \n\t"\
00477 "pmulhw "VR_COEFF"("#c"), %%mm5 \n\t"\
00478 "psubw "Y_OFFSET"("#c"), %%mm1 \n\t" \
00479 "psubw "Y_OFFSET"("#c"), %%mm7 \n\t" \
00480 "pmulhw "Y_COEFF"("#c"), %%mm1 \n\t"\
00481 "pmulhw "Y_COEFF"("#c"), %%mm7 \n\t"\
00482 \
00483 "paddw %%mm3, %%mm4 \n\t"\
00484 "movq %%mm2, %%mm0 \n\t"\
00485 "movq %%mm5, %%mm6 \n\t"\
00486 "movq %%mm4, %%mm3 \n\t"\
00487 "punpcklwd %%mm2, %%mm2 \n\t"\
00488 "punpcklwd %%mm5, %%mm5 \n\t"\
00489 "punpcklwd %%mm4, %%mm4 \n\t"\
00490 "paddw %%mm1, %%mm2 \n\t"\
00491 "paddw %%mm1, %%mm5 \n\t"\
00492 "paddw %%mm1, %%mm4 \n\t"\
00493 "punpckhwd %%mm0, %%mm0 \n\t"\
00494 "punpckhwd %%mm6, %%mm6 \n\t"\
00495 "punpckhwd %%mm3, %%mm3 \n\t"\
00496 "paddw %%mm7, %%mm0 \n\t"\
00497 "paddw %%mm7, %%mm6 \n\t"\
00498 "paddw %%mm7, %%mm3 \n\t"\
00499 \
00500 "packuswb %%mm0, %%mm2 \n\t"\
00501 "packuswb %%mm6, %%mm5 \n\t"\
00502 "packuswb %%mm3, %%mm4 \n\t"\
00503
00504 #define YSCALEYUV2RGB_YA(index, c) REAL_YSCALEYUV2RGB_YA(index, c)
00505
00506 #define YSCALEYUV2RGB(index, c) \
00507 REAL_YSCALEYUV2RGB_UV(index, c) \
00508 REAL_YSCALEYUV2RGB_YA(index, c) \
00509 REAL_YSCALEYUV2RGB_COEFF(c)
00510
00511 #define REAL_YSCALEYUV2PACKED1(index, c) \
00512 "xor "#index", "#index" \n\t"\
00513 ASMALIGN(4)\
00514 "1: \n\t"\
00515 "movq (%2, "#index"), %%mm3 \n\t" \
00516 "movq "AV_STRINGIFY(VOF)"(%2, "#index"), %%mm4 \n\t" \
00517 "psraw $7, %%mm3 \n\t" \
00518 "psraw $7, %%mm4 \n\t" \
00519 "movq (%0, "#index", 2), %%mm1 \n\t" \
00520 "movq 8(%0, "#index", 2), %%mm7 \n\t" \
00521 "psraw $7, %%mm1 \n\t" \
00522 "psraw $7, %%mm7 \n\t" \
00523
00524 #define YSCALEYUV2PACKED1(index, c) REAL_YSCALEYUV2PACKED1(index, c)
00525
00526 #define REAL_YSCALEYUV2RGB1(index, c) \
00527 "xor "#index", "#index" \n\t"\
00528 ASMALIGN(4)\
00529 "1: \n\t"\
00530 "movq (%2, "#index"), %%mm3 \n\t" \
00531 "movq "AV_STRINGIFY(VOF)"(%2, "#index"), %%mm4 \n\t" \
00532 "psraw $4, %%mm3 \n\t" \
00533 "psraw $4, %%mm4 \n\t" \
00534 "psubw "U_OFFSET"("#c"), %%mm3 \n\t" \
00535 "psubw "V_OFFSET"("#c"), %%mm4 \n\t" \
00536 "movq %%mm3, %%mm2 \n\t" \
00537 "movq %%mm4, %%mm5 \n\t" \
00538 "pmulhw "UG_COEFF"("#c"), %%mm3 \n\t"\
00539 "pmulhw "VG_COEFF"("#c"), %%mm4 \n\t"\
00540 \
00541 "movq (%0, "#index", 2), %%mm1 \n\t" \
00542 "movq 8(%0, "#index", 2), %%mm7 \n\t" \
00543 "psraw $4, %%mm1 \n\t" \
00544 "psraw $4, %%mm7 \n\t" \
00545 "pmulhw "UB_COEFF"("#c"), %%mm2 \n\t"\
00546 "pmulhw "VR_COEFF"("#c"), %%mm5 \n\t"\
00547 "psubw "Y_OFFSET"("#c"), %%mm1 \n\t" \
00548 "psubw "Y_OFFSET"("#c"), %%mm7 \n\t" \
00549 "pmulhw "Y_COEFF"("#c"), %%mm1 \n\t"\
00550 "pmulhw "Y_COEFF"("#c"), %%mm7 \n\t"\
00551 \
00552 "paddw %%mm3, %%mm4 \n\t"\
00553 "movq %%mm2, %%mm0 \n\t"\
00554 "movq %%mm5, %%mm6 \n\t"\
00555 "movq %%mm4, %%mm3 \n\t"\
00556 "punpcklwd %%mm2, %%mm2 \n\t"\
00557 "punpcklwd %%mm5, %%mm5 \n\t"\
00558 "punpcklwd %%mm4, %%mm4 \n\t"\
00559 "paddw %%mm1, %%mm2 \n\t"\
00560 "paddw %%mm1, %%mm5 \n\t"\
00561 "paddw %%mm1, %%mm4 \n\t"\
00562 "punpckhwd %%mm0, %%mm0 \n\t"\
00563 "punpckhwd %%mm6, %%mm6 \n\t"\
00564 "punpckhwd %%mm3, %%mm3 \n\t"\
00565 "paddw %%mm7, %%mm0 \n\t"\
00566 "paddw %%mm7, %%mm6 \n\t"\
00567 "paddw %%mm7, %%mm3 \n\t"\
00568 \
00569 "packuswb %%mm0, %%mm2 \n\t"\
00570 "packuswb %%mm6, %%mm5 \n\t"\
00571 "packuswb %%mm3, %%mm4 \n\t"\
00572
00573 #define YSCALEYUV2RGB1(index, c) REAL_YSCALEYUV2RGB1(index, c)
00574
00575 #define REAL_YSCALEYUV2PACKED1b(index, c) \
00576 "xor "#index", "#index" \n\t"\
00577 ASMALIGN(4)\
00578 "1: \n\t"\
00579 "movq (%2, "#index"), %%mm2 \n\t" \
00580 "movq (%3, "#index"), %%mm3 \n\t" \
00581 "movq "AV_STRINGIFY(VOF)"(%2, "#index"), %%mm5 \n\t" \
00582 "movq "AV_STRINGIFY(VOF)"(%3, "#index"), %%mm4 \n\t" \
00583 "paddw %%mm2, %%mm3 \n\t" \
00584 "paddw %%mm5, %%mm4 \n\t" \
00585 "psrlw $8, %%mm3 \n\t" \
00586 "psrlw $8, %%mm4 \n\t" \
00587 "movq (%0, "#index", 2), %%mm1 \n\t" \
00588 "movq 8(%0, "#index", 2), %%mm7 \n\t" \
00589 "psraw $7, %%mm1 \n\t" \
00590 "psraw $7, %%mm7 \n\t"
00591 #define YSCALEYUV2PACKED1b(index, c) REAL_YSCALEYUV2PACKED1b(index, c)
00592
00593
00594 #define REAL_YSCALEYUV2RGB1b(index, c) \
00595 "xor "#index", "#index" \n\t"\
00596 ASMALIGN(4)\
00597 "1: \n\t"\
00598 "movq (%2, "#index"), %%mm2 \n\t" \
00599 "movq (%3, "#index"), %%mm3 \n\t" \
00600 "movq "AV_STRINGIFY(VOF)"(%2, "#index"), %%mm5 \n\t" \
00601 "movq "AV_STRINGIFY(VOF)"(%3, "#index"), %%mm4 \n\t" \
00602 "paddw %%mm2, %%mm3 \n\t" \
00603 "paddw %%mm5, %%mm4 \n\t" \
00604 "psrlw $5, %%mm3 \n\t" \
00605 "psrlw $5, %%mm4 \n\t" \
00606 "psubw "U_OFFSET"("#c"), %%mm3 \n\t" \
00607 "psubw "V_OFFSET"("#c"), %%mm4 \n\t" \
00608 "movq %%mm3, %%mm2 \n\t" \
00609 "movq %%mm4, %%mm5 \n\t" \
00610 "pmulhw "UG_COEFF"("#c"), %%mm3 \n\t"\
00611 "pmulhw "VG_COEFF"("#c"), %%mm4 \n\t"\
00612 \
00613 "movq (%0, "#index", 2), %%mm1 \n\t" \
00614 "movq 8(%0, "#index", 2), %%mm7 \n\t" \
00615 "psraw $4, %%mm1 \n\t" \
00616 "psraw $4, %%mm7 \n\t" \
00617 "pmulhw "UB_COEFF"("#c"), %%mm2 \n\t"\
00618 "pmulhw "VR_COEFF"("#c"), %%mm5 \n\t"\
00619 "psubw "Y_OFFSET"("#c"), %%mm1 \n\t" \
00620 "psubw "Y_OFFSET"("#c"), %%mm7 \n\t" \
00621 "pmulhw "Y_COEFF"("#c"), %%mm1 \n\t"\
00622 "pmulhw "Y_COEFF"("#c"), %%mm7 \n\t"\
00623 \
00624 "paddw %%mm3, %%mm4 \n\t"\
00625 "movq %%mm2, %%mm0 \n\t"\
00626 "movq %%mm5, %%mm6 \n\t"\
00627 "movq %%mm4, %%mm3 \n\t"\
00628 "punpcklwd %%mm2, %%mm2 \n\t"\
00629 "punpcklwd %%mm5, %%mm5 \n\t"\
00630 "punpcklwd %%mm4, %%mm4 \n\t"\
00631 "paddw %%mm1, %%mm2 \n\t"\
00632 "paddw %%mm1, %%mm5 \n\t"\
00633 "paddw %%mm1, %%mm4 \n\t"\
00634 "punpckhwd %%mm0, %%mm0 \n\t"\
00635 "punpckhwd %%mm6, %%mm6 \n\t"\
00636 "punpckhwd %%mm3, %%mm3 \n\t"\
00637 "paddw %%mm7, %%mm0 \n\t"\
00638 "paddw %%mm7, %%mm6 \n\t"\
00639 "paddw %%mm7, %%mm3 \n\t"\
00640 \
00641 "packuswb %%mm0, %%mm2 \n\t"\
00642 "packuswb %%mm6, %%mm5 \n\t"\
00643 "packuswb %%mm3, %%mm4 \n\t"\
00644
00645 #define YSCALEYUV2RGB1b(index, c) REAL_YSCALEYUV2RGB1b(index, c)
00646
00647 #define REAL_WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t) \
00648 "movq "#b", "#q2" \n\t" \
00649 "movq "#r", "#t" \n\t" \
00650 "punpcklbw "#g", "#b" \n\t" \
00651 "punpcklbw "#a", "#r" \n\t" \
00652 "punpckhbw "#g", "#q2" \n\t" \
00653 "punpckhbw "#a", "#t" \n\t" \
00654 "movq "#b", "#q0" \n\t" \
00655 "movq "#q2", "#q3" \n\t" \
00656 "punpcklwd "#r", "#q0" \n\t" \
00657 "punpckhwd "#r", "#b" \n\t" \
00658 "punpcklwd "#t", "#q2" \n\t" \
00659 "punpckhwd "#t", "#q3" \n\t" \
00660 \
00661 MOVNTQ( q0, (dst, index, 4))\
00662 MOVNTQ( b, 8(dst, index, 4))\
00663 MOVNTQ( q2, 16(dst, index, 4))\
00664 MOVNTQ( q3, 24(dst, index, 4))\
00665 \
00666 "add $8, "#index" \n\t"\
00667 "cmp "#dstw", "#index" \n\t"\
00668 " jb 1b \n\t"
00669 #define WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t) REAL_WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t)
00670
00671 #define REAL_WRITERGB16(dst, dstw, index) \
00672 "pand "MANGLE(bF8)", %%mm2 \n\t" \
00673 "pand "MANGLE(bFC)", %%mm4 \n\t" \
00674 "pand "MANGLE(bF8)", %%mm5 \n\t" \
00675 "psrlq $3, %%mm2 \n\t"\
00676 \
00677 "movq %%mm2, %%mm1 \n\t"\
00678 "movq %%mm4, %%mm3 \n\t"\
00679 \
00680 "punpcklbw %%mm7, %%mm3 \n\t"\
00681 "punpcklbw %%mm5, %%mm2 \n\t"\
00682 "punpckhbw %%mm7, %%mm4 \n\t"\
00683 "punpckhbw %%mm5, %%mm1 \n\t"\
00684 \
00685 "psllq $3, %%mm3 \n\t"\
00686 "psllq $3, %%mm4 \n\t"\
00687 \
00688 "por %%mm3, %%mm2 \n\t"\
00689 "por %%mm4, %%mm1 \n\t"\
00690 \
00691 MOVNTQ(%%mm2, (dst, index, 2))\
00692 MOVNTQ(%%mm1, 8(dst, index, 2))\
00693 \
00694 "add $8, "#index" \n\t"\
00695 "cmp "#dstw", "#index" \n\t"\
00696 " jb 1b \n\t"
00697 #define WRITERGB16(dst, dstw, index) REAL_WRITERGB16(dst, dstw, index)
00698
00699 #define REAL_WRITERGB15(dst, dstw, index) \
00700 "pand "MANGLE(bF8)", %%mm2 \n\t" \
00701 "pand "MANGLE(bF8)", %%mm4 \n\t" \
00702 "pand "MANGLE(bF8)", %%mm5 \n\t" \
00703 "psrlq $3, %%mm2 \n\t"\
00704 "psrlq $1, %%mm5 \n\t"\
00705 \
00706 "movq %%mm2, %%mm1 \n\t"\
00707 "movq %%mm4, %%mm3 \n\t"\
00708 \
00709 "punpcklbw %%mm7, %%mm3 \n\t"\
00710 "punpcklbw %%mm5, %%mm2 \n\t"\
00711 "punpckhbw %%mm7, %%mm4 \n\t"\
00712 "punpckhbw %%mm5, %%mm1 \n\t"\
00713 \
00714 "psllq $2, %%mm3 \n\t"\
00715 "psllq $2, %%mm4 \n\t"\
00716 \
00717 "por %%mm3, %%mm2 \n\t"\
00718 "por %%mm4, %%mm1 \n\t"\
00719 \
00720 MOVNTQ(%%mm2, (dst, index, 2))\
00721 MOVNTQ(%%mm1, 8(dst, index, 2))\
00722 \
00723 "add $8, "#index" \n\t"\
00724 "cmp "#dstw", "#index" \n\t"\
00725 " jb 1b \n\t"
00726 #define WRITERGB15(dst, dstw, index) REAL_WRITERGB15(dst, dstw, index)
00727
00728 #define WRITEBGR24OLD(dst, dstw, index) \
00729 \
00730 "movq %%mm2, %%mm1 \n\t" \
00731 "movq %%mm5, %%mm6 \n\t" \
00732 "punpcklbw %%mm4, %%mm2 \n\t" \
00733 "punpcklbw %%mm7, %%mm5 \n\t" \
00734 "punpckhbw %%mm4, %%mm1 \n\t" \
00735 "punpckhbw %%mm7, %%mm6 \n\t" \
00736 "movq %%mm2, %%mm0 \n\t" \
00737 "movq %%mm1, %%mm3 \n\t" \
00738 "punpcklwd %%mm5, %%mm0 \n\t" \
00739 "punpckhwd %%mm5, %%mm2 \n\t" \
00740 "punpcklwd %%mm6, %%mm1 \n\t" \
00741 "punpckhwd %%mm6, %%mm3 \n\t" \
00742 \
00743 "movq %%mm0, %%mm4 \n\t" \
00744 "psrlq $8, %%mm0 \n\t" \
00745 "pand "MANGLE(bm00000111)", %%mm4 \n\t" \
00746 "pand "MANGLE(bm11111000)", %%mm0 \n\t" \
00747 "por %%mm4, %%mm0 \n\t" \
00748 "movq %%mm2, %%mm4 \n\t" \
00749 "psllq $48, %%mm2 \n\t" \
00750 "por %%mm2, %%mm0 \n\t" \
00751 \
00752 "movq %%mm4, %%mm2 \n\t" \
00753 "psrld $16, %%mm4 \n\t" \
00754 "psrlq $24, %%mm2 \n\t" \
00755 "por %%mm4, %%mm2 \n\t" \
00756 "pand "MANGLE(bm00001111)", %%mm2 \n\t" \
00757 "movq %%mm1, %%mm4 \n\t" \
00758 "psrlq $8, %%mm1 \n\t" \
00759 "pand "MANGLE(bm00000111)", %%mm4 \n\t" \
00760 "pand "MANGLE(bm11111000)", %%mm1 \n\t" \
00761 "por %%mm4, %%mm1 \n\t" \
00762 "movq %%mm1, %%mm4 \n\t" \
00763 "psllq $32, %%mm1 \n\t" \
00764 "por %%mm1, %%mm2 \n\t" \
00765 \
00766 "psrlq $32, %%mm4 \n\t" \
00767 "movq %%mm3, %%mm5 \n\t" \
00768 "psrlq $8, %%mm3 \n\t" \
00769 "pand "MANGLE(bm00000111)", %%mm5 \n\t" \
00770 "pand "MANGLE(bm11111000)", %%mm3 \n\t" \
00771 "por %%mm5, %%mm3 \n\t" \
00772 "psllq $16, %%mm3 \n\t" \
00773 "por %%mm4, %%mm3 \n\t" \
00774 \
00775 MOVNTQ(%%mm0, (dst))\
00776 MOVNTQ(%%mm2, 8(dst))\
00777 MOVNTQ(%%mm3, 16(dst))\
00778 "add $24, "#dst" \n\t"\
00779 \
00780 "add $8, "#index" \n\t"\
00781 "cmp "#dstw", "#index" \n\t"\
00782 " jb 1b \n\t"
00783
00784 #define WRITEBGR24MMX(dst, dstw, index) \
00785 \
00786 "movq %%mm2, %%mm1 \n\t" \
00787 "movq %%mm5, %%mm6 \n\t" \
00788 "punpcklbw %%mm4, %%mm2 \n\t" \
00789 "punpcklbw %%mm7, %%mm5 \n\t" \
00790 "punpckhbw %%mm4, %%mm1 \n\t" \
00791 "punpckhbw %%mm7, %%mm6 \n\t" \
00792 "movq %%mm2, %%mm0 \n\t" \
00793 "movq %%mm1, %%mm3 \n\t" \
00794 "punpcklwd %%mm5, %%mm0 \n\t" \
00795 "punpckhwd %%mm5, %%mm2 \n\t" \
00796 "punpcklwd %%mm6, %%mm1 \n\t" \
00797 "punpckhwd %%mm6, %%mm3 \n\t" \
00798 \
00799 "movq %%mm0, %%mm4 \n\t" \
00800 "movq %%mm2, %%mm6 \n\t" \
00801 "movq %%mm1, %%mm5 \n\t" \
00802 "movq %%mm3, %%mm7 \n\t" \
00803 \
00804 "psllq $40, %%mm0 \n\t" \
00805 "psllq $40, %%mm2 \n\t" \
00806 "psllq $40, %%mm1 \n\t" \
00807 "psllq $40, %%mm3 \n\t" \
00808 \
00809 "punpckhdq %%mm4, %%mm0 \n\t" \
00810 "punpckhdq %%mm6, %%mm2 \n\t" \
00811 "punpckhdq %%mm5, %%mm1 \n\t" \
00812 "punpckhdq %%mm7, %%mm3 \n\t" \
00813 \
00814 "psrlq $8, %%mm0 \n\t" \
00815 "movq %%mm2, %%mm6 \n\t" \
00816 "psllq $40, %%mm2 \n\t" \
00817 "por %%mm2, %%mm0 \n\t" \
00818 MOVNTQ(%%mm0, (dst))\
00819 \
00820 "psrlq $24, %%mm6 \n\t" \
00821 "movq %%mm1, %%mm5 \n\t" \
00822 "psllq $24, %%mm1 \n\t" \
00823 "por %%mm1, %%mm6 \n\t" \
00824 MOVNTQ(%%mm6, 8(dst))\
00825 \
00826 "psrlq $40, %%mm5 \n\t" \
00827 "psllq $8, %%mm3 \n\t" \
00828 "por %%mm3, %%mm5 \n\t" \
00829 MOVNTQ(%%mm5, 16(dst))\
00830 \
00831 "add $24, "#dst" \n\t"\
00832 \
00833 "add $8, "#index" \n\t"\
00834 "cmp "#dstw", "#index" \n\t"\
00835 " jb 1b \n\t"
00836
00837 #define WRITEBGR24MMX2(dst, dstw, index) \
00838 \
00839 "movq "MANGLE(ff_M24A)", %%mm0 \n\t"\
00840 "movq "MANGLE(ff_M24C)", %%mm7 \n\t"\
00841 "pshufw $0x50, %%mm2, %%mm1 \n\t" \
00842 "pshufw $0x50, %%mm4, %%mm3 \n\t" \
00843 "pshufw $0x00, %%mm5, %%mm6 \n\t" \
00844 \
00845 "pand %%mm0, %%mm1 \n\t" \
00846 "pand %%mm0, %%mm3 \n\t" \
00847 "pand %%mm7, %%mm6 \n\t" \
00848 \
00849 "psllq $8, %%mm3 \n\t" \
00850 "por %%mm1, %%mm6 \n\t"\
00851 "por %%mm3, %%mm6 \n\t"\
00852 MOVNTQ(%%mm6, (dst))\
00853 \
00854 "psrlq $8, %%mm4 \n\t" \
00855 "pshufw $0xA5, %%mm2, %%mm1 \n\t" \
00856 "pshufw $0x55, %%mm4, %%mm3 \n\t" \
00857 "pshufw $0xA5, %%mm5, %%mm6 \n\t" \
00858 \
00859 "pand "MANGLE(ff_M24B)", %%mm1 \n\t" \
00860 "pand %%mm7, %%mm3 \n\t" \
00861 "pand %%mm0, %%mm6 \n\t" \
00862 \
00863 "por %%mm1, %%mm3 \n\t" \
00864 "por %%mm3, %%mm6 \n\t"\
00865 MOVNTQ(%%mm6, 8(dst))\
00866 \
00867 "pshufw $0xFF, %%mm2, %%mm1 \n\t" \
00868 "pshufw $0xFA, %%mm4, %%mm3 \n\t" \
00869 "pshufw $0xFA, %%mm5, %%mm6 \n\t" \
00870 \
00871 "pand %%mm7, %%mm1 \n\t" \
00872 "pand %%mm0, %%mm3 \n\t" \
00873 "pand "MANGLE(ff_M24B)", %%mm6 \n\t" \
00874 \
00875 "por %%mm1, %%mm3 \n\t"\
00876 "por %%mm3, %%mm6 \n\t"\
00877 MOVNTQ(%%mm6, 16(dst))\
00878 \
00879 "add $24, "#dst" \n\t"\
00880 \
00881 "add $8, "#index" \n\t"\
00882 "cmp "#dstw", "#index" \n\t"\
00883 " jb 1b \n\t"
00884
00885 #if HAVE_MMX2
00886 #undef WRITEBGR24
00887 #define WRITEBGR24(dst, dstw, index) WRITEBGR24MMX2(dst, dstw, index)
00888 #else
00889 #undef WRITEBGR24
00890 #define WRITEBGR24(dst, dstw, index) WRITEBGR24MMX(dst, dstw, index)
00891 #endif
00892
00893 #define REAL_WRITEYUY2(dst, dstw, index) \
00894 "packuswb %%mm3, %%mm3 \n\t"\
00895 "packuswb %%mm4, %%mm4 \n\t"\
00896 "packuswb %%mm7, %%mm1 \n\t"\
00897 "punpcklbw %%mm4, %%mm3 \n\t"\
00898 "movq %%mm1, %%mm7 \n\t"\
00899 "punpcklbw %%mm3, %%mm1 \n\t"\
00900 "punpckhbw %%mm3, %%mm7 \n\t"\
00901 \
00902 MOVNTQ(%%mm1, (dst, index, 2))\
00903 MOVNTQ(%%mm7, 8(dst, index, 2))\
00904 \
00905 "add $8, "#index" \n\t"\
00906 "cmp "#dstw", "#index" \n\t"\
00907 " jb 1b \n\t"
00908 #define WRITEYUY2(dst, dstw, index) REAL_WRITEYUY2(dst, dstw, index)
00909
00910
00911 static inline void RENAME(yuv2yuvX)(SwsContext *c, int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize,
00912 int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize,
00913 uint8_t *dest, uint8_t *uDest, uint8_t *vDest, long dstW, long chrDstW)
00914 {
00915 #if HAVE_MMX
00916 if(!(c->flags & SWS_BITEXACT)){
00917 if (c->flags & SWS_ACCURATE_RND){
00918 if (uDest){
00919 YSCALEYUV2YV12X_ACCURATE( "0", CHR_MMX_FILTER_OFFSET, uDest, chrDstW)
00920 YSCALEYUV2YV12X_ACCURATE(AV_STRINGIFY(VOF), CHR_MMX_FILTER_OFFSET, vDest, chrDstW)
00921 }
00922
00923 YSCALEYUV2YV12X_ACCURATE("0", LUM_MMX_FILTER_OFFSET, dest, dstW)
00924 }else{
00925 if (uDest){
00926 YSCALEYUV2YV12X( "0", CHR_MMX_FILTER_OFFSET, uDest, chrDstW)
00927 YSCALEYUV2YV12X(AV_STRINGIFY(VOF), CHR_MMX_FILTER_OFFSET, vDest, chrDstW)
00928 }
00929
00930 YSCALEYUV2YV12X("0", LUM_MMX_FILTER_OFFSET, dest, dstW)
00931 }
00932 return;
00933 }
00934 #endif
00935 #if HAVE_ALTIVEC
00936 yuv2yuvX_altivec_real(lumFilter, lumSrc, lumFilterSize,
00937 chrFilter, chrSrc, chrFilterSize,
00938 dest, uDest, vDest, dstW, chrDstW);
00939 #else //HAVE_ALTIVEC
00940 yuv2yuvXinC(lumFilter, lumSrc, lumFilterSize,
00941 chrFilter, chrSrc, chrFilterSize,
00942 dest, uDest, vDest, dstW, chrDstW);
00943 #endif //!HAVE_ALTIVEC
00944 }
00945
00946 static inline void RENAME(yuv2nv12X)(SwsContext *c, int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize,
00947 int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize,
00948 uint8_t *dest, uint8_t *uDest, int dstW, int chrDstW, int dstFormat)
00949 {
00950 yuv2nv12XinC(lumFilter, lumSrc, lumFilterSize,
00951 chrFilter, chrSrc, chrFilterSize,
00952 dest, uDest, dstW, chrDstW, dstFormat);
00953 }
00954
00955 static inline void RENAME(yuv2yuv1)(SwsContext *c, int16_t *lumSrc, int16_t *chrSrc,
00956 uint8_t *dest, uint8_t *uDest, uint8_t *vDest, long dstW, long chrDstW)
00957 {
00958 int i;
00959 #if HAVE_MMX
00960 if(!(c->flags & SWS_BITEXACT)){
00961 long p= uDest ? 3 : 1;
00962 uint8_t *src[3]= {lumSrc + dstW, chrSrc + chrDstW, chrSrc + VOFW + chrDstW};
00963 uint8_t *dst[3]= {dest, uDest, vDest};
00964 long counter[3] = {dstW, chrDstW, chrDstW};
00965
00966 if (c->flags & SWS_ACCURATE_RND){
00967 while(p--){
00968 __asm__ volatile(
00969 YSCALEYUV2YV121_ACCURATE
00970 :: "r" (src[p]), "r" (dst[p] + counter[p]),
00971 "g" (-counter[p])
00972 : "%"REG_a
00973 );
00974 }
00975 }else{
00976 while(p--){
00977 __asm__ volatile(
00978 YSCALEYUV2YV121
00979 :: "r" (src[p]), "r" (dst[p] + counter[p]),
00980 "g" (-counter[p])
00981 : "%"REG_a
00982 );
00983 }
00984 }
00985 return;
00986 }
00987 #endif
00988 for (i=0; i<dstW; i++)
00989 {
00990 int val= (lumSrc[i]+64)>>7;
00991
00992 if (val&256){
00993 if (val<0) val=0;
00994 else val=255;
00995 }
00996
00997 dest[i]= val;
00998 }
00999
01000 if (uDest)
01001 for (i=0; i<chrDstW; i++)
01002 {
01003 int u=(chrSrc[i ]+64)>>7;
01004 int v=(chrSrc[i + VOFW]+64)>>7;
01005
01006 if ((u|v)&256){
01007 if (u<0) u=0;
01008 else if (u>255) u=255;
01009 if (v<0) v=0;
01010 else if (v>255) v=255;
01011 }
01012
01013 uDest[i]= u;
01014 vDest[i]= v;
01015 }
01016 }
01017
01018
01022 static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize,
01023 int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize,
01024 uint8_t *dest, long dstW, long dstY)
01025 {
01026 #if HAVE_MMX
01027 long dummy=0;
01028 if(!(c->flags & SWS_BITEXACT)){
01029 if (c->flags & SWS_ACCURATE_RND){
01030 switch(c->dstFormat){
01031 case PIX_FMT_RGB32:
01032 YSCALEYUV2PACKEDX_ACCURATE
01033 YSCALEYUV2RGBX
01034 "pcmpeqd %%mm7, %%mm7 \n\t"
01035 WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
01036
01037 YSCALEYUV2PACKEDX_END
01038 return;
01039 case PIX_FMT_BGR24:
01040 YSCALEYUV2PACKEDX_ACCURATE
01041 YSCALEYUV2RGBX
01042 "pxor %%mm7, %%mm7 \n\t"
01043 "lea (%%"REG_a", %%"REG_a", 2), %%"REG_c"\n\t"
01044 "add %4, %%"REG_c" \n\t"
01045 WRITEBGR24(%%REGc, %5, %%REGa)
01046
01047
01048 :: "r" (&c->redDither),
01049 "m" (dummy), "m" (dummy), "m" (dummy),
01050 "r" (dest), "m" (dstW)
01051 : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S
01052 );
01053 return;
01054 case PIX_FMT_RGB555:
01055 YSCALEYUV2PACKEDX_ACCURATE
01056 YSCALEYUV2RGBX
01057 "pxor %%mm7, %%mm7 \n\t"
01058
01059 #ifdef DITHER1XBPP
01060 "paddusb "BLUE_DITHER"(%0), %%mm2\n\t"
01061 "paddusb "GREEN_DITHER"(%0), %%mm4\n\t"
01062 "paddusb "RED_DITHER"(%0), %%mm5\n\t"
01063 #endif
01064
01065 WRITERGB15(%4, %5, %%REGa)
01066 YSCALEYUV2PACKEDX_END
01067 return;
01068 case PIX_FMT_RGB565:
01069 YSCALEYUV2PACKEDX_ACCURATE
01070 YSCALEYUV2RGBX
01071 "pxor %%mm7, %%mm7 \n\t"
01072
01073 #ifdef DITHER1XBPP
01074 "paddusb "BLUE_DITHER"(%0), %%mm2\n\t"
01075 "paddusb "GREEN_DITHER"(%0), %%mm4\n\t"
01076 "paddusb "RED_DITHER"(%0), %%mm5\n\t"
01077 #endif
01078
01079 WRITERGB16(%4, %5, %%REGa)
01080 YSCALEYUV2PACKEDX_END
01081 return;
01082 case PIX_FMT_YUYV422:
01083 YSCALEYUV2PACKEDX_ACCURATE
01084
01085
01086 "psraw $3, %%mm3 \n\t"
01087 "psraw $3, %%mm4 \n\t"
01088 "psraw $3, %%mm1 \n\t"
01089 "psraw $3, %%mm7 \n\t"
01090 WRITEYUY2(%4, %5, %%REGa)
01091 YSCALEYUV2PACKEDX_END
01092 return;
01093 }
01094 }else{
01095 switch(c->dstFormat)
01096 {
01097 case PIX_FMT_RGB32:
01098 YSCALEYUV2PACKEDX
01099 YSCALEYUV2RGBX
01100 "pcmpeqd %%mm7, %%mm7 \n\t"
01101 WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
01102 YSCALEYUV2PACKEDX_END
01103 return;
01104 case PIX_FMT_BGR24:
01105 YSCALEYUV2PACKEDX
01106 YSCALEYUV2RGBX
01107 "pxor %%mm7, %%mm7 \n\t"
01108 "lea (%%"REG_a", %%"REG_a", 2), %%"REG_c" \n\t"
01109 "add %4, %%"REG_c" \n\t"
01110 WRITEBGR24(%%REGc, %5, %%REGa)
01111
01112 :: "r" (&c->redDither),
01113 "m" (dummy), "m" (dummy), "m" (dummy),
01114 "r" (dest), "m" (dstW)
01115 : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S
01116 );
01117 return;
01118 case PIX_FMT_RGB555:
01119 YSCALEYUV2PACKEDX
01120 YSCALEYUV2RGBX
01121 "pxor %%mm7, %%mm7 \n\t"
01122
01123 #ifdef DITHER1XBPP
01124 "paddusb "BLUE_DITHER"(%0), %%mm2 \n\t"
01125 "paddusb "GREEN_DITHER"(%0), %%mm4 \n\t"
01126 "paddusb "RED_DITHER"(%0), %%mm5 \n\t"
01127 #endif
01128
01129 WRITERGB15(%4, %5, %%REGa)
01130 YSCALEYUV2PACKEDX_END
01131 return;
01132 case PIX_FMT_RGB565:
01133 YSCALEYUV2PACKEDX
01134 YSCALEYUV2RGBX
01135 "pxor %%mm7, %%mm7 \n\t"
01136
01137 #ifdef DITHER1XBPP
01138 "paddusb "BLUE_DITHER"(%0), %%mm2 \n\t"
01139 "paddusb "GREEN_DITHER"(%0), %%mm4 \n\t"
01140 "paddusb "RED_DITHER"(%0), %%mm5 \n\t"
01141 #endif
01142
01143 WRITERGB16(%4, %5, %%REGa)
01144 YSCALEYUV2PACKEDX_END
01145 return;
01146 case PIX_FMT_YUYV422:
01147 YSCALEYUV2PACKEDX
01148
01149
01150 "psraw $3, %%mm3 \n\t"
01151 "psraw $3, %%mm4 \n\t"
01152 "psraw $3, %%mm1 \n\t"
01153 "psraw $3, %%mm7 \n\t"
01154 WRITEYUY2(%4, %5, %%REGa)
01155 YSCALEYUV2PACKEDX_END
01156 return;
01157 }
01158 }
01159 }
01160 #endif
01161 #if HAVE_ALTIVEC
01162
01163
01164 if (!(c->flags & SWS_BITEXACT) &&
01165 (c->dstFormat==PIX_FMT_ABGR || c->dstFormat==PIX_FMT_BGRA ||
01166 c->dstFormat==PIX_FMT_BGR24 || c->dstFormat==PIX_FMT_RGB24 ||
01167 c->dstFormat==PIX_FMT_RGBA || c->dstFormat==PIX_FMT_ARGB))
01168 altivec_yuv2packedX (c, lumFilter, lumSrc, lumFilterSize,
01169 chrFilter, chrSrc, chrFilterSize,
01170 dest, dstW, dstY);
01171 else
01172 #endif
01173 yuv2packedXinC(c, lumFilter, lumSrc, lumFilterSize,
01174 chrFilter, chrSrc, chrFilterSize,
01175 dest, dstW, dstY);
01176 }
01177
01181 static inline void RENAME(yuv2packed2)(SwsContext *c, uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, uint16_t *uvbuf1,
01182 uint8_t *dest, int dstW, int yalpha, int uvalpha, int y)
01183 {
01184 int yalpha1=4095- yalpha;
01185 int uvalpha1=4095-uvalpha;
01186 int i;
01187
01188 #if HAVE_MMX
01189 if(!(c->flags & SWS_BITEXACT)){
01190 switch(c->dstFormat)
01191 {
01192
01193 case PIX_FMT_RGB32:
01194 __asm__ volatile(
01195 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
01196 "mov %4, %%"REG_b" \n\t"
01197 "push %%"REG_BP" \n\t"
01198 YSCALEYUV2RGB(%%REGBP, %5)
01199 "pcmpeqd %%mm7, %%mm7 \n\t"
01200 WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
01201 "pop %%"REG_BP" \n\t"
01202 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
01203
01204 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01205 "a" (&c->redDither)
01206 );
01207 return;
01208 case PIX_FMT_BGR24:
01209 __asm__ volatile(
01210 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
01211 "mov %4, %%"REG_b" \n\t"
01212 "push %%"REG_BP" \n\t"
01213 YSCALEYUV2RGB(%%REGBP, %5)
01214 "pxor %%mm7, %%mm7 \n\t"
01215 WRITEBGR24(%%REGb, 8280(%5), %%REGBP)
01216 "pop %%"REG_BP" \n\t"
01217 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
01218 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01219 "a" (&c->redDither)
01220 );
01221 return;
01222 case PIX_FMT_RGB555:
01223 __asm__ volatile(
01224 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
01225 "mov %4, %%"REG_b" \n\t"
01226 "push %%"REG_BP" \n\t"
01227 YSCALEYUV2RGB(%%REGBP, %5)
01228 "pxor %%mm7, %%mm7 \n\t"
01229
01230 #ifdef DITHER1XBPP
01231 "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
01232 "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t"
01233 "paddusb "RED_DITHER"(%5), %%mm5 \n\t"
01234 #endif
01235
01236 WRITERGB15(%%REGb, 8280(%5), %%REGBP)
01237 "pop %%"REG_BP" \n\t"
01238 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
01239
01240 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01241 "a" (&c->redDither)
01242 );
01243 return;
01244 case PIX_FMT_RGB565:
01245 __asm__ volatile(
01246 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
01247 "mov %4, %%"REG_b" \n\t"
01248 "push %%"REG_BP" \n\t"
01249 YSCALEYUV2RGB(%%REGBP, %5)
01250 "pxor %%mm7, %%mm7 \n\t"
01251
01252 #ifdef DITHER1XBPP
01253 "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
01254 "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t"
01255 "paddusb "RED_DITHER"(%5), %%mm5 \n\t"
01256 #endif
01257
01258 WRITERGB16(%%REGb, 8280(%5), %%REGBP)
01259 "pop %%"REG_BP" \n\t"
01260 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
01261 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01262 "a" (&c->redDither)
01263 );
01264 return;
01265 case PIX_FMT_YUYV422:
01266 __asm__ volatile(
01267 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
01268 "mov %4, %%"REG_b" \n\t"
01269 "push %%"REG_BP" \n\t"
01270 YSCALEYUV2PACKED(%%REGBP, %5)
01271 WRITEYUY2(%%REGb, 8280(%5), %%REGBP)
01272 "pop %%"REG_BP" \n\t"
01273 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
01274 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01275 "a" (&c->redDither)
01276 );
01277 return;
01278 default: break;
01279 }
01280 }
01281 #endif //HAVE_MMX
01282 YSCALE_YUV_2_ANYRGB_C(YSCALE_YUV_2_RGB2_C, YSCALE_YUV_2_PACKED2_C, YSCALE_YUV_2_GRAY16_2_C, YSCALE_YUV_2_MONO2_C)
01283 }
01284
01288 static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *uvbuf0, uint16_t *uvbuf1,
01289 uint8_t *dest, int dstW, int uvalpha, int dstFormat, int flags, int y)
01290 {
01291 const int yalpha1=0;
01292 int i;
01293
01294 uint16_t *buf1= buf0;
01295 const int yalpha= 4096;
01296
01297 if (flags&SWS_FULL_CHR_H_INT)
01298 {
01299 RENAME(yuv2packed2)(c, buf0, buf0, uvbuf0, uvbuf1, dest, dstW, 0, uvalpha, y);
01300 return;
01301 }
01302
01303 #if HAVE_MMX
01304 if(!(flags & SWS_BITEXACT)){
01305 if (uvalpha < 2048)
01306 {
01307 switch(dstFormat)
01308 {
01309 case PIX_FMT_RGB32:
01310 __asm__ volatile(
01311 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
01312 "mov %4, %%"REG_b" \n\t"
01313 "push %%"REG_BP" \n\t"
01314 YSCALEYUV2RGB1(%%REGBP, %5)
01315 "pcmpeqd %%mm7, %%mm7 \n\t"
01316 WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
01317 "pop %%"REG_BP" \n\t"
01318 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
01319
01320 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01321 "a" (&c->redDither)
01322 );
01323 return;
01324 case PIX_FMT_BGR24:
01325 __asm__ volatile(
01326 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
01327 "mov %4, %%"REG_b" \n\t"
01328 "push %%"REG_BP" \n\t"
01329 YSCALEYUV2RGB1(%%REGBP, %5)
01330 "pxor %%mm7, %%mm7 \n\t"
01331 WRITEBGR24(%%REGb, 8280(%5), %%REGBP)
01332 "pop %%"REG_BP" \n\t"
01333 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
01334
01335 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01336 "a" (&c->redDither)
01337 );
01338 return;
01339 case PIX_FMT_RGB555:
01340 __asm__ volatile(
01341 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
01342 "mov %4, %%"REG_b" \n\t"
01343 "push %%"REG_BP" \n\t"
01344 YSCALEYUV2RGB1(%%REGBP, %5)
01345 "pxor %%mm7, %%mm7 \n\t"
01346
01347 #ifdef DITHER1XBPP
01348 "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
01349 "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t"
01350 "paddusb "RED_DITHER"(%5), %%mm5 \n\t"
01351 #endif
01352 WRITERGB15(%%REGb, 8280(%5), %%REGBP)
01353 "pop %%"REG_BP" \n\t"
01354 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
01355
01356 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01357 "a" (&c->redDither)
01358 );
01359 return;
01360 case PIX_FMT_RGB565:
01361 __asm__ volatile(
01362 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
01363 "mov %4, %%"REG_b" \n\t"
01364 "push %%"REG_BP" \n\t"
01365 YSCALEYUV2RGB1(%%REGBP, %5)
01366 "pxor %%mm7, %%mm7 \n\t"
01367
01368 #ifdef DITHER1XBPP
01369 "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
01370 "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t"
01371 "paddusb "RED_DITHER"(%5), %%mm5 \n\t"
01372 #endif
01373
01374 WRITERGB16(%%REGb, 8280(%5), %%REGBP)
01375 "pop %%"REG_BP" \n\t"
01376 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
01377
01378 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01379 "a" (&c->redDither)
01380 );
01381 return;
01382 case PIX_FMT_YUYV422:
01383 __asm__ volatile(
01384 "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
01385 "mov %4, %%"REG_b" \n\t"
01386 "push %%"REG_BP" \n\t"
01387 YSCALEYUV2PACKED1(%%REGBP, %5)
01388 WRITEYUY2(%%REGb, 8280(%5), %%REGBP)
01389 "pop %%"REG_BP" \n\t"
01390 "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
01391
01392 :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)
01394 );
01395 return;
01396 }
01397 }
01398 else
01399 {
01400 switch(dstFormat)
01401 {
01402 case PIX_FMT_RGB32:
01403 __asm__ volatile(
0140cea71d748a517">S" (uvbuf0), "D" (uvbuf1), "m" (dest),
01393 "a" (&c->redDither)