Upgrade google-benchmark to ea5a5bbff491fd625c6e3458f6edd680b8bd5452 am: 5d086d83c4 am: 8debd28366 am: 58f16097dc am: e74f377d60

Original change: https://android-review.googlesource.com/c/platform/external/google-benchmark/+/1587517

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I0480146599c01893ddc5ba387ec2faa182abc5b4
diff --git a/METADATA b/METADATA
index a202da4..0584c04 100644
--- a/METADATA
+++ b/METADATA
@@ -9,11 +9,11 @@
     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 @@
   // 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)