thesis/code/timing.c

23 lines
368 B
C

#include <stdlib.h>
inline size_t
rdtsc_begin(void)
{
size_t a, d;
asm volatile("mfence");
asm volatile("rdtsc" : "=a"(a), "=d"(d));
a = (d << 32) | a;
asm volatile("lfence");
return a;
}
inline size_t
rdtsc_end(void)
{
size_t a, d;
asm volatile("lfence");
asm volatile("rdtsc" : "=a"(a), "=d"(d));
a = (d << 32) | a;
asm volatile("mfence");
return a;
}