From e833e660efe92f6249ac87c09c7263cf2d3d43b3 Mon Sep 17 00:00:00 2001 From: KWSys Upstream Date: Tue, 21 Apr 2020 07:05:16 -0400 Subject: KWSys 2020-04-21 (44086372) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit 4408637212fe1ddf09425beba97e105009734e31 (master). Upstream Shortlog ----------------- Hernan Martinez (1): 00629420 SystemInformation: Add support for Windows on ARM64 --- SystemInformation.cxx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/SystemInformation.cxx b/SystemInformation.cxx index 95b06e1..ba9fa67 100644 --- a/SystemInformation.cxx +++ b/SystemInformation.cxx @@ -204,7 +204,8 @@ typedef struct rlimit ResourceLimitType; # define USE_ASM_INSTRUCTIONS 0 #endif -#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__clang__) +#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__clang__) && \ + !defined(_M_ARM64) # include # define USE_CPUID_INTRINSICS 1 #else @@ -4322,9 +4323,15 @@ SystemInformationImplementation::GetCyclesDifference(DELAY_FUNC DelayFunction, #if defined(_MSC_VER) && (_MSC_VER >= 1400) unsigned __int64 stamp1, stamp2; +# ifdef _M_ARM64 + stamp1 = _ReadStatusReg(ARM64_PMCCNTR_EL0); + DelayFunction(uiParameter); + stamp2 = _ReadStatusReg(ARM64_PMCCNTR_EL0); +# else stamp1 = __rdtsc(); DelayFunction(uiParameter); stamp2 = __rdtsc(); +# endif return stamp2 - stamp1; #elif USE_ASM_INSTRUCTIONS -- cgit v0.12