aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2012-07-07 13:30:11 -0700
committerRonald S. Bultje <rsbultje@gmail.com>2012-07-07 13:35:07 -0700
commit07b287020c9ada750251344c05b52f541be4d533 (patch)
treee8721a6b7c630193935e952edfaf2c1e6d75b841
parent25b51b2c44f16f46d6bd5db4f3421ae57909924e (diff)
downloadffmpeg-07b287020c9ada750251344c05b52f541be4d533.tar.gz
x86/timer: implement an intrinsic-based version for rdtsc (AV_READ_TIME).
-rwxr-xr-xconfigure3
-rw-r--r--libavutil/x86/timer.h8
2 files changed, 11 insertions, 0 deletions
diff --git a/configure b/configure
index a08b3af79e..ec68648520 100755
--- 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
diff --git a/libavutil/x86/timer.h b/libavutil/x86/timer.h
index 7f51816c5a..35e614d0d0 100644
--- a/libavutil/x86/timer.h
+++ b/libavutil/x86/timer.h
@@ -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 */