Commit 07b28702 authored by Ronald S. Bultje's avatar Ronald S. Bultje

x86/timer: implement an intrinsic-based version for rdtsc (AV_READ_TIME).

parent 25b51b2c
...@@ -1121,6 +1121,7 @@ HAVE_LIST=" ...@@ -1121,6 +1121,7 @@ HAVE_LIST="
netinet_sctp_h netinet_sctp_h
poll_h poll_h
posix_memalign posix_memalign
rdtsc
round round
roundf roundf
sched_getaffinity sched_getaffinity
...@@ -2642,6 +2643,8 @@ check_cc <<EOF && enable inline_asm ...@@ -2642,6 +2643,8 @@ check_cc <<EOF && enable inline_asm
void foo(void) { __asm__ volatile ("" ::); } void foo(void) { __asm__ volatile ("" ::); }
EOF EOF
check_code cc intrin.h "__rdtsc()" && enable rdtsc
_restrict= _restrict=
for restrict_keyword in restrict __restrict__ __restrict; do for restrict_keyword in restrict __restrict__ __restrict; do
check_cc <<EOF && _restrict=$restrict_keyword && break check_cc <<EOF && _restrict=$restrict_keyword && break
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
#include <stdint.h> #include <stdint.h>
#if HAVE_INLINE_ASM
#define AV_READ_TIME read_time #define AV_READ_TIME read_time
static inline uint64_t read_time(void) static inline uint64_t read_time(void)
...@@ -32,4 +34,10 @@ static inline uint64_t read_time(void) ...@@ -32,4 +34,10 @@ static inline uint64_t read_time(void)
return ((uint64_t)d << 32) + a; return ((uint64_t)d << 32) + a;
} }
#elif HAVE_RDTSC
#define AV_READ_TIME __rdtsc
#endif /* HAVE_INLINE_ASM */
#endif /* AVUTIL_X86_TIMER_H */ #endif /* AVUTIL_X86_TIMER_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment