Mercurial > libavcodec.hg
comparison common.h @ 2613:1c1b53f353ff libavcodec
add an AMD64 specific implementation of rdtsc()
author | aurel |
---|---|
date | Mon, 18 Apr 2005 11:24:20 +0000 |
parents | 9a7770ebed14 |
children | 08cce4785567 |
comparison
equal
deleted
inserted
replaced
2612:210cca8f5764 | 2613:1c1b53f353ff |
---|---|
455 (c)=(d);\ | 455 (c)=(d);\ |
456 } | 456 } |
457 #endif | 457 #endif |
458 | 458 |
459 #if defined(ARCH_X86) || defined(ARCH_X86_64) | 459 #if defined(ARCH_X86) || defined(ARCH_X86_64) |
460 #if defined(ARCH_X86_64) | |
461 static inline uint64_t rdtsc(void) | |
462 { | |
463 uint64_t a, d; | |
464 asm volatile( "rdtsc\n\t" | |
465 : "=a" (a), "=d" (d) | |
466 ); | |
467 return (d << 32) | (a & 0xffffffff); | |
468 } | |
469 #else | |
460 static inline long long rdtsc(void) | 470 static inline long long rdtsc(void) |
461 { | 471 { |
462 long long l; | 472 long long l; |
463 asm volatile( "rdtsc\n\t" | 473 asm volatile( "rdtsc\n\t" |
464 : "=A" (l) | 474 : "=A" (l) |
465 ); | 475 ); |
466 return l; | 476 return l; |
467 } | 477 } |
478 #endif | |
468 | 479 |
469 #define START_TIMER \ | 480 #define START_TIMER \ |
470 uint64_t tend;\ | 481 uint64_t tend;\ |
471 uint64_t tstart= rdtsc();\ | 482 uint64_t tstart= rdtsc();\ |
472 | 483 |