x86/timer: implement an intrinsic-based version for rdtsc (AV_READ_TIME).
authorRonald S. Bultje <rsbultje@gmail.com>
Sat, 7 Jul 2012 20:30:11 +0000 (13:30 -0700)
committerRonald S. Bultje <rsbultje@gmail.com>
Sat, 7 Jul 2012 20:35:07 +0000 (13:35 -0700)
configure
libavutil/x86/timer.h

index a08b3af..ec68648 100755 (executable)
--- a/configure
+++ b/configure
@@ -1121,6 +1121,7 @@ HAVE_LIST="
     netinet_sctp_h
     poll_h
     posix_memalign
+    rdtsc
     round
     roundf
     sched_getaffinity
@@ -2642,6 +2643,8 @@ check_cc <<EOF && enable inline_asm
 void foo(void) { __asm__ volatile ("" ::); }
 EOF
 
+check_code cc intrin.h "__rdtsc()" && enable rdtsc
+
 _restrict=
 for restrict_keyword in restrict __restrict__ __restrict; do
     check_cc <<EOF && _restrict=$restrict_keyword && break
index 7f51816..35e614d 100644 (file)
@@ -23,6 +23,8 @@
 
 #include <stdint.h>
 
+#if HAVE_INLINE_ASM
+
 #define AV_READ_TIME read_time
 
 static inline uint64_t read_time(void)
@@ -32,4 +34,10 @@ static inline uint64_t read_time(void)
     return ((uint64_t)d << 32) + a;
 }
 
+#elif HAVE_RDTSC
+
+#define AV_READ_TIME __rdtsc
+
+#endif /* HAVE_INLINE_ASM */
+
 #endif /* AVUTIL_X86_TIMER_H */