3
0
Fork 0
forked from suyu/suyu

native_clock: Internal linkage for FencedRDTSC

__forceinline required on MSVC for function to be inlined
This commit is contained in:
Merry 2022-04-03 00:13:27 +01:00
parent fdd4d019ef
commit 4052bfb4ad

View file

@ -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.