comparison postproc/swscale_template.c @ 14556:31cb219364a4

fix few x86_64 registers handling
author aurel
date Fri, 21 Jan 2005 16:48:18 +0000
parents 6f13379b1464
children 1fab95e4513c
comparison
equal deleted inserted replaced
14555:6fb9eca97d41 14556:31cb219364a4
2269 "xor %%"REG_a", %%"REG_a" \n\t" // i 2269 "xor %%"REG_a", %%"REG_a" \n\t" // i
2270 PREFETCH" (%%"REG_c") \n\t" 2270 PREFETCH" (%%"REG_c") \n\t"
2271 PREFETCH" 32(%%"REG_c") \n\t" 2271 PREFETCH" 32(%%"REG_c") \n\t"
2272 PREFETCH" 64(%%"REG_c") \n\t" 2272 PREFETCH" 64(%%"REG_c") \n\t"
2273 2273
2274 #ifdef ARCH_X86_64
2275
2274 #define FUNNY_Y_CODE \ 2276 #define FUNNY_Y_CODE \
2275 "mov (%%"REG_b"), %%"REG_S" \n\t"\ 2277 "movl (%%"REG_b"), %%esi \n\t"\
2276 "call *%4 \n\t"\ 2278 "call *%4 \n\t"\
2277 "addl (%%"REG_b", %%"REG_a"), %%ecx\n\t"\ 2279 "movl (%%"REG_b", %%"REG_a"), %%esi\n\t"\
2280 "add %%"REG_S", %%"REG_c" \n\t"\
2278 "add %%"REG_a", %%"REG_D" \n\t"\ 2281 "add %%"REG_a", %%"REG_D" \n\t"\
2279 "xor %%"REG_a", %%"REG_a" \n\t"\ 2282 "xor %%"REG_a", %%"REG_a" \n\t"\
2283
2284 #else
2285
2286 #define FUNNY_Y_CODE \
2287 "movl (%%"REG_b"), %%esi \n\t"\
2288 "call *%4 \n\t"\
2289 "addl (%%"REG_b", %%"REG_a"), %%"REG_c"\n\t"\
2290 "add %%"REG_a", %%"REG_D" \n\t"\
2291 "xor %%"REG_a", %%"REG_a" \n\t"\
2292
2293 #endif
2280 2294
2281 FUNNY_Y_CODE 2295 FUNNY_Y_CODE
2282 FUNNY_Y_CODE 2296 FUNNY_Y_CODE
2283 FUNNY_Y_CODE 2297 FUNNY_Y_CODE
2284 FUNNY_Y_CODE 2298 FUNNY_Y_CODE
2438 "xor %%"REG_a", %%"REG_a" \n\t" // i 2452 "xor %%"REG_a", %%"REG_a" \n\t" // i
2439 PREFETCH" (%%"REG_c") \n\t" 2453 PREFETCH" (%%"REG_c") \n\t"
2440 PREFETCH" 32(%%"REG_c") \n\t" 2454 PREFETCH" 32(%%"REG_c") \n\t"
2441 PREFETCH" 64(%%"REG_c") \n\t" 2455 PREFETCH" 64(%%"REG_c") \n\t"
2442 2456
2457 #ifdef ARCH_X86_64
2458
2443 #define FUNNY_UV_CODE \ 2459 #define FUNNY_UV_CODE \
2444 "movl (%%"REG_b"), %%esi \n\t"\ 2460 "movl (%%"REG_b"), %%esi \n\t"\
2445 "call *%4 \n\t"\ 2461 "call *%4 \n\t"\
2446 "addl (%%"REG_b", %%"REG_a"), %%ecx\n\t"\ 2462 "movl (%%"REG_b", %%"REG_a"), %%esi\n\t"\
2463 "add %%"REG_S", %%"REG_c" \n\t"\
2447 "add %%"REG_a", %%"REG_D" \n\t"\ 2464 "add %%"REG_a", %%"REG_D" \n\t"\
2448 "xor %%"REG_a", %%"REG_a" \n\t"\ 2465 "xor %%"REG_a", %%"REG_a" \n\t"\
2466
2467 #else
2468
2469 #define FUNNY_UV_CODE \
2470 "movl (%%"REG_b"), %%esi \n\t"\
2471 "call *%4 \n\t"\
2472 "addl (%%"REG_b", %%"REG_a"), %%"REG_c"\n\t"\
2473 "add %%"REG_a", %%"REG_D" \n\t"\
2474 "xor %%"REG_a", %%"REG_a" \n\t"\
2475
2476 #endif
2449 2477
2450 FUNNY_UV_CODE 2478 FUNNY_UV_CODE
2451 FUNNY_UV_CODE 2479 FUNNY_UV_CODE
2452 FUNNY_UV_CODE 2480 FUNNY_UV_CODE
2453 FUNNY_UV_CODE 2481 FUNNY_UV_CODE
2464 FUNNY_UV_CODE 2492 FUNNY_UV_CODE
2465 FUNNY_UV_CODE 2493 FUNNY_UV_CODE
2466 2494
2467 :: "m" (src1), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), 2495 :: "m" (src1), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos),
2468 "m" (funnyUVCode), "m" (src2) 2496 "m" (funnyUVCode), "m" (src2)
2469 : "%"REG_a, "%"REG_b, "%"REG_c, "%"REG_d, "%esi", "%"REG_D 2497 : "%"REG_a, "%"REG_b, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D
2470 ); 2498 );
2471 for(i=dstWidth-1; (i*xInc)>>16 >=srcW-1; i--) 2499 for(i=dstWidth-1; (i*xInc)>>16 >=srcW-1; i--)
2472 { 2500 {
2473 // printf("%d %d %d\n", dstWidth, i, srcW); 2501 // printf("%d %d %d\n", dstWidth, i, srcW);
2474 dst[i] = src1[srcW-1]*128; 2502 dst[i] = src1[srcW-1]*128;