comparison libswscale/swscale_template.c @ 29465:45e78d49e493

Rename "funny" code to "mmx2 filter" code.
author ramiro
date Thu, 13 Aug 2009 18:28:17 +0000
parents 0673fad0546f
children 8d73112b7589
comparison
equal deleted inserted replaced
29464:32ee4e7438ac 29465:45e78d49e493
2230 uint32_t *pal, int isAlpha) 2230 uint32_t *pal, int isAlpha)
2231 { 2231 {
2232 int32_t av_unused *mmx2FilterPos = c->lumMmx2FilterPos; 2232 int32_t av_unused *mmx2FilterPos = c->lumMmx2FilterPos;
2233 int16_t av_unused *mmx2Filter = c->lumMmx2Filter; 2233 int16_t av_unused *mmx2Filter = c->lumMmx2Filter;
2234 int av_unused canMMX2BeUsed = c->canMMX2BeUsed; 2234 int av_unused canMMX2BeUsed = c->canMMX2BeUsed;
2235 void av_unused *funnyYCode = c->funnyYCode; 2235 void av_unused *mmx2FilterCode= c->lumMmx2FilterCode;
2236 void (*internal_func)(uint8_t *, const uint8_t *, long, uint32_t *) = isAlpha ? c->hascale_internal : c->hyscale_internal; 2236 void (*internal_func)(uint8_t *, const uint8_t *, long, uint32_t *) = isAlpha ? c->hascale_internal : c->hyscale_internal;
2237 2237
2238 if (isAlpha) { 2238 if (isAlpha) {
2239 if (srcFormat == PIX_FMT_RGB32 || srcFormat == PIX_FMT_BGR32 ) 2239 if (srcFormat == PIX_FMT_RGB32 || srcFormat == PIX_FMT_BGR32 )
2240 src += 3; 2240 src += 3;
2284 PREFETCH" 32(%%"REG_c") \n\t" 2284 PREFETCH" 32(%%"REG_c") \n\t"
2285 PREFETCH" 64(%%"REG_c") \n\t" 2285 PREFETCH" 64(%%"REG_c") \n\t"
2286 2286
2287 #if ARCH_X86_64 2287 #if ARCH_X86_64
2288 2288
2289 #define FUNNY_Y_CODE \ 2289 #define CALL_MMX2_FILTER_CODE \
2290 "movl (%%"REG_b"), %%esi \n\t"\ 2290 "movl (%%"REG_b"), %%esi \n\t"\
2291 "call *%4 \n\t"\ 2291 "call *%4 \n\t"\
2292 "movl (%%"REG_b", %%"REG_a"), %%esi \n\t"\ 2292 "movl (%%"REG_b", %%"REG_a"), %%esi \n\t"\
2293 "add %%"REG_S", %%"REG_c" \n\t"\ 2293 "add %%"REG_S", %%"REG_c" \n\t"\
2294 "add %%"REG_a", %%"REG_D" \n\t"\ 2294 "add %%"REG_a", %%"REG_D" \n\t"\
2295 "xor %%"REG_a", %%"REG_a" \n\t"\ 2295 "xor %%"REG_a", %%"REG_a" \n\t"\
2296 2296
2297 #else 2297 #else
2298 2298
2299 #define FUNNY_Y_CODE \ 2299 #define CALL_MMX2_FILTER_CODE \
2300 "movl (%%"REG_b"), %%esi \n\t"\ 2300 "movl (%%"REG_b"), %%esi \n\t"\
2301 "call *%4 \n\t"\ 2301 "call *%4 \n\t"\
2302 "addl (%%"REG_b", %%"REG_a"), %%"REG_c" \n\t"\ 2302 "addl (%%"REG_b", %%"REG_a"), %%"REG_c" \n\t"\
2303 "add %%"REG_a", %%"REG_D" \n\t"\ 2303 "add %%"REG_a", %%"REG_D" \n\t"\
2304 "xor %%"REG_a", %%"REG_a" \n\t"\ 2304 "xor %%"REG_a", %%"REG_a" \n\t"\
2305 2305
2306 #endif /* ARCH_X86_64 */ 2306 #endif /* ARCH_X86_64 */
2307 2307
2308 FUNNY_Y_CODE 2308 CALL_MMX2_FILTER_CODE
2309 FUNNY_Y_CODE 2309 CALL_MMX2_FILTER_CODE
2310 FUNNY_Y_CODE 2310 CALL_MMX2_FILTER_CODE
2311 FUNNY_Y_CODE 2311 CALL_MMX2_FILTER_CODE
2312 FUNNY_Y_CODE 2312 CALL_MMX2_FILTER_CODE
2313 FUNNY_Y_CODE 2313 CALL_MMX2_FILTER_CODE
2314 FUNNY_Y_CODE 2314 CALL_MMX2_FILTER_CODE
2315 FUNNY_Y_CODE 2315 CALL_MMX2_FILTER_CODE
2316 2316
2317 #if defined(PIC) 2317 #if defined(PIC)
2318 "mov %5, %%"REG_b" \n\t" 2318 "mov %5, %%"REG_b" \n\t"
2319 #endif 2319 #endif
2320 :: "m" (src), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), 2320 :: "m" (src), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos),
2321 "m" (funnyYCode) 2321 "m" (mmx2FilterCode)
2322 #if defined(PIC) 2322 #if defined(PIC)
2323 ,"m" (ebxsave) 2323 ,"m" (ebxsave)
2324 #endif 2324 #endif
2325 : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D 2325 : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D
2326 #if !defined(PIC) 2326 #if !defined(PIC)
2413 uint32_t *pal) 2413 uint32_t *pal)
2414 { 2414 {
2415 int32_t av_unused *mmx2FilterPos = c->chrMmx2FilterPos; 2415 int32_t av_unused *mmx2FilterPos = c->chrMmx2FilterPos;
2416 int16_t av_unused *mmx2Filter = c->chrMmx2Filter; 2416 int16_t av_unused *mmx2Filter = c->chrMmx2Filter;
2417 int av_unused canMMX2BeUsed = c->canMMX2BeUsed; 2417 int av_unused canMMX2BeUsed = c->canMMX2BeUsed;
2418 void av_unused *funnyUVCode = c->funnyUVCode; 2418 void av_unused *mmx2FilterCode= c->chrMmx2FilterCode;
2419 2419
2420 if (isGray(srcFormat) || srcFormat==PIX_FMT_MONOBLACK || srcFormat==PIX_FMT_MONOWHITE) 2420 if (isGray(srcFormat) || srcFormat==PIX_FMT_MONOBLACK || srcFormat==PIX_FMT_MONOWHITE)
2421 return; 2421 return;
2422 2422
2423 if (srcFormat==PIX_FMT_RGB32_1 || srcFormat==PIX_FMT_BGR32_1) { 2423 if (srcFormat==PIX_FMT_RGB32_1 || srcFormat==PIX_FMT_BGR32_1) {
2470 PREFETCH" 32(%%"REG_c") \n\t" 2470 PREFETCH" 32(%%"REG_c") \n\t"
2471 PREFETCH" 64(%%"REG_c") \n\t" 2471 PREFETCH" 64(%%"REG_c") \n\t"
2472 2472
2473 #if ARCH_X86_64 2473 #if ARCH_X86_64
2474 2474
2475 #define FUNNY_UV_CODE \ 2475 #define CALL_MMX2_FILTER_CODE \
2476 "movl (%%"REG_b"), %%esi \n\t"\ 2476 "movl (%%"REG_b"), %%esi \n\t"\
2477 "call *%4 \n\t"\ 2477 "call *%4 \n\t"\
2478 "movl (%%"REG_b", %%"REG_a"), %%esi \n\t"\ 2478 "movl (%%"REG_b", %%"REG_a"), %%esi \n\t"\
2479 "add %%"REG_S", %%"REG_c" \n\t"\ 2479 "add %%"REG_S", %%"REG_c" \n\t"\
2480 "add %%"REG_a", %%"REG_D" \n\t"\ 2480 "add %%"REG_a", %%"REG_D" \n\t"\
2481 "xor %%"REG_a", %%"REG_a" \n\t"\ 2481 "xor %%"REG_a", %%"REG_a" \n\t"\
2482 2482
2483 #else 2483 #else
2484 2484
2485 #define FUNNY_UV_CODE \ 2485 #define CALL_MMX2_FILTER_CODE \
2486 "movl (%%"REG_b"), %%esi \n\t"\ 2486 "movl (%%"REG_b"), %%esi \n\t"\
2487 "call *%4 \n\t"\ 2487 "call *%4 \n\t"\
2488 "addl (%%"REG_b", %%"REG_a"), %%"REG_c" \n\t"\ 2488 "addl (%%"REG_b", %%"REG_a"), %%"REG_c" \n\t"\
2489 "add %%"REG_a", %%"REG_D" \n\t"\ 2489 "add %%"REG_a", %%"REG_D" \n\t"\
2490 "xor %%"REG_a", %%"REG_a" \n\t"\ 2490 "xor %%"REG_a", %%"REG_a" \n\t"\
2491 2491
2492 #endif /* ARCH_X86_64 */ 2492 #endif /* ARCH_X86_64 */
2493 2493
2494 FUNNY_UV_CODE 2494 CALL_MMX2_FILTER_CODE
2495 FUNNY_UV_CODE 2495 CALL_MMX2_FILTER_CODE
2496 FUNNY_UV_CODE 2496 CALL_MMX2_FILTER_CODE
2497 FUNNY_UV_CODE 2497 CALL_MMX2_FILTER_CODE
2498 "xor %%"REG_a", %%"REG_a" \n\t" // i 2498 "xor %%"REG_a", %%"REG_a" \n\t" // i
2499 "mov %5, %%"REG_c" \n\t" // src 2499 "mov %5, %%"REG_c" \n\t" // src
2500 "mov %1, %%"REG_D" \n\t" // buf1 2500 "mov %1, %%"REG_D" \n\t" // buf1
2501 "add $"AV_STRINGIFY(VOF)", %%"REG_D" \n\t" 2501 "add $"AV_STRINGIFY(VOF)", %%"REG_D" \n\t"
2502 PREFETCH" (%%"REG_c") \n\t" 2502 PREFETCH" (%%"REG_c") \n\t"
2503 PREFETCH" 32(%%"REG_c") \n\t" 2503 PREFETCH" 32(%%"REG_c") \n\t"
2504 PREFETCH" 64(%%"REG_c") \n\t" 2504 PREFETCH" 64(%%"REG_c") \n\t"
2505 2505
2506 FUNNY_UV_CODE 2506 CALL_MMX2_FILTER_CODE
2507 FUNNY_UV_CODE 2507 CALL_MMX2_FILTER_CODE
2508 FUNNY_UV_CODE 2508 CALL_MMX2_FILTER_CODE
2509 FUNNY_UV_CODE 2509 CALL_MMX2_FILTER_CODE
2510 2510
2511 #if defined(PIC) 2511 #if defined(PIC)
2512 "mov %6, %%"REG_b" \n\t" 2512 "mov %6, %%"REG_b" \n\t"
2513 #endif 2513 #endif
2514 :: "m" (src1), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), 2514 :: "m" (src1), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos),
2515 "m" (funnyUVCode), "m" (src2) 2515 "m" (mmx2FilterCode), "m" (src2)
2516 #if defined(PIC) 2516 #if defined(PIC)
2517 ,"m" (ebxsave) 2517 ,"m" (ebxsave)
2518 #endif 2518 #endif
2519 : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D 2519 : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D
2520 #if !defined(PIC) 2520 #if !defined(PIC)