commit | adb0d51ca672db04e9e524dd17a2f963d3fd3878 | [log] [tgz] |
---|---|---|
author | Tom Tan <Tom.Tan@microsoft.com> | Thu Sep 12 18:20:19 2019 -0700 |
committer | Nicolas Capens <nicolascapens@google.com> | Fri Sep 13 02:20:43 2019 +0000 |
tree | 100a94cd4a8cdd789b3f20a6a552e6b43e69a198 | |
parent | c9fa9fe9379f02519c80fa41022300addc91b449 [diff] |
Fix intrinsic of getting timer tick for Windows ARM64 src/System/Timer.cpp which was duplicated for Vulkan uses x86 intrinsic __rdtsc to tick count. This intrinsic is not available on ARM and needs to be fixed. This issue broke Windows ARM64 build bot and the same issue was fixed for src/Common/Timer.cpp before (see below links). https://ci.chromium.org/p/chromium/builders/ci/win32-arm64-rel/7763 https://swiftshader-review.googlesource.com/c/SwiftShader/+/23508 Bug: chromium:893460 Change-Id: I48e3673034650a89fead71447d75f4e486ee68b5 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/36308 Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com> Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/System/Timer.cpp b/src/System/Timer.cpp index 8ff2cf3..db0ba4a 100644 --- a/src/System/Timer.cpp +++ b/src/System/Timer.cpp
@@ -59,7 +59,11 @@ int64_t Timer::ticks() { #if defined(_WIN32) - return __rdtsc(); + #if defined(_M_ARM64) + return _ReadStatusReg(ARM64_PMCCNTR_EL0); + #else + return __rdtsc(); + #endif #elif defined(__i386__) || defined(__x86_64__) int64_t tsc; __asm volatile("rdtsc": "=A" (tsc));