blob: 060641671f27fffc23fce76d6cacce3f29349b74 [file] [log] [blame]
//------------------------------------------------------------------------------------------------------------------------------
// Samuel Williams
// SWWilliams@lbl.gov
// Lawrence Berkeley National Lab
//------------------------------------------------------------------------------------------------------------------------------
#include <stdint.h>
uint64_t CycleTime(){
#ifndef __has_builtin
#define __has_builtin(x) 0
#endif
#if !defined(USE_CYCLE_COUNTER)
return 0;
#elif __has_builtin(__builtin_readcyclecounter)
return __builtin_readcyclecounter();
#else
uint64_t lo, hi;
__asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
return( (((uint64_t)hi) << 32) | ((uint64_t)lo) );
#endif
}