diff options
author | Nicky <sl.nicky.ml@googlemail.com> | 2016-04-22 12:58:51 +0200 |
---|---|---|
committer | Nicky <sl.nicky.ml@googlemail.com> | 2016-04-22 12:58:51 +0200 |
commit | 056f0983029000041555ca53c61cbe5e8689cae9 (patch) | |
tree | 43502725042f4174a4a72ca4b4eabad226bd4855 | |
parent | d75a6ecbe533fb115d8130122df710790ba9610b (diff) |
Windows x64: Cannot use inline assembly.
(transplanted from ee32840fc591f5529a0b544243e7b4146eb8f531)
-rw-r--r-- | indra/llcommon/llfasttimer.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index f56e5596f5..0336f9d0e9 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -91,6 +91,7 @@ public: static U32 getCPUClockCount32() { U32 ret_val; +#if !defined(_M_AMD64) __asm { _emit 0x0f @@ -100,6 +101,11 @@ public: or eax, edx mov dword ptr [ret_val], eax } +#else + unsigned __int64 val = __rdtsc(); + val = val >> 8; + ret_val = static_cast<U32>(val); +#endif return ret_val; } @@ -107,6 +113,7 @@ public: static U64 getCPUClockCount64() { U64 ret_val; +#if !defined(_M_AMD64) __asm { _emit 0x0f @@ -116,6 +123,9 @@ public: mov dword ptr [ret_val+4], edx mov dword ptr [ret_val], eax } +#else + ret_val = static_cast<U64>( __rdtsc() ); +#endif return ret_val; } |