From cf88265304888b4b3aa723ddb11158317df6a283 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Mon, 21 Oct 2019 01:13:55 +0200 Subject: [PATCH] Full 64-bit register is set by rdtsc. --- client/TracyProfiler.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/TracyProfiler.hpp b/client/TracyProfiler.hpp index 1cca2387..4bcc59af 100644 --- a/client/TracyProfiler.hpp +++ b/client/TracyProfiler.hpp @@ -110,10 +110,14 @@ public: # endif # elif defined _WIN32 || defined __CYGWIN__ return int64_t( __rdtsc() ); -# elif defined __i386 || defined _M_IX86 || defined __x86_64__ || defined _M_X64 +# elif defined __i386 || defined _M_IX86 uint32_t eax, edx; asm volatile ( "rdtsc" : "=a" (eax), "=d" (edx) ); return ( uint64_t( edx ) << 32 ) + uint64_t( eax ); +# elif defined __x86_64__ || defined _M_X64 + uint64_t rax, rdx; + asm volatile ( "rdtsc" : "=a" (rax), "=d" (rdx) ); + return ( rdx << 32 ) + rax; # endif #else return std::chrono::duration_cast( std::chrono::high_resolution_clock::now().time_since_epoch() ).count();