瀏覽代碼

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
KWSys Upstream 5 年之前
父節點
當前提交
e833e660ef
共有 1 個文件被更改,包括 8 次插入1 次删除
  1. 8 1
      SystemInformation.cxx

+ 8 - 1
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 <intrin.h>
 #  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