Browse Source

native_clock: Internal linkage for FencedRDTSC

__forceinline required on MSVC for function to be inlined
nce_cpp
Merry 4 years ago
parent
commit
42d6a01039
  1. 6
      src/common/x64/native_clock.cpp

6
src/common/x64/native_clock.cpp

@ -16,15 +16,17 @@
namespace Common {
inline u64 FencedRDTSC() {
#ifdef _MSC_VER
__forceinline static u64 FencedRDTSC() {
_mm_lfence();
_ReadWriteBarrier();
const u64 result = __rdtsc();
_mm_lfence();
_ReadWriteBarrier();
return result;
}
#else
static u64 FencedRDTSC() {
u64 result;
asm volatile("lfence\n\t"
"rdtsc\n\t"
@ -35,8 +37,8 @@ inline u64 FencedRDTSC() {
:
: "rdx", "memory", "cc");
return result;
#endif
}
#endif
u64 EstimateRDTSCFrequency() {
// Discard the first result measuring the rdtsc.

Loading…
Cancel
Save