diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-02-18 02:03:34 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-02-18 02:03:34 +0000 |
commit | c560229ad90569667a8df6de018941cee6385cbb (patch) | |
tree | 61f88d9a095a390cab484c109bd55ce293b117b0 | |
parent | 91b86aedefa559d9ae761141bce7b7254637fb55 (diff) | |
parent | e74f377d60b79172dae696253b66d1333397f00c (diff) | |
download | google-benchmark-c560229ad90569667a8df6de018941cee6385cbb.tar.gz |
Snap for 7152399 from e74f377d60b79172dae696253b66d1333397f00c to sc-v2-release
Change-Id: If58083b71e7ab5ccc661b684fcea874d2b2c31b3
-rw-r--r-- | METADATA | 6 | ||||
-rw-r--r-- | src/cycleclock.h | 8 |
2 files changed, 10 insertions, 4 deletions
@@ -9,11 +9,11 @@ third_party { type: GIT value: "https://github.com/google/benchmark.git" } - version: "8df87f6c879cbcabd17c5cfcec7b89687df36953" + version: "ea5a5bbff491fd625c6e3458f6edd680b8bd5452" license_type: NOTICE last_upgrade_date { year: 2021 - month: 1 - day: 5 + month: 2 + day: 12 } } diff --git a/src/cycleclock.h b/src/cycleclock.h index 89de86f..6843b69 100644 --- a/src/cycleclock.h +++ b/src/cycleclock.h @@ -36,7 +36,7 @@ // declarations of some other intrinsics, breaking compilation. // Therefore, we simply declare __rdtsc ourselves. See also // http://connect.microsoft.com/VisualStudio/feedback/details/262047 -#if defined(COMPILER_MSVC) && !defined(_M_IX86) +#if defined(COMPILER_MSVC) && !defined(_M_IX86) && !defined(_M_ARM64) extern "C" uint64_t __rdtsc(); #pragma intrinsic(__rdtsc) #endif @@ -114,6 +114,12 @@ inline BENCHMARK_ALWAYS_INLINE int64_t Now() { // when I know it will work. Otherwise, I'll use __rdtsc and hope // the code is being compiled with a non-ancient compiler. _asm rdtsc +#elif defined(COMPILER_MSVC) && defined(_M_ARM64) + // See https://docs.microsoft.com/en-us/cpp/intrinsics/arm64-intrinsics?view=vs-2019 + // and https://reviews.llvm.org/D53115 + int64_t virtual_timer_value; + virtual_timer_value = _ReadStatusReg(ARM64_CNTVCT); + return virtual_timer_value; #elif defined(COMPILER_MSVC) return __rdtsc(); #elif defined(BENCHMARK_OS_NACL) |