Mercurial > mplayer.hg
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; |