cpu: replace use of the reserved _xgetbv identifier with xgetbv.

Clang built from trunk now implements _xgetbv, causing errors as it is
now redefined.

Modeled after https://crrev.com/c/1414858 which is a similar fix to v8.

TEST=built locally with clang from trunk

Change-Id: Ie1c242ae6b9ae34b695a512991e90a74dfafdedc
Reviewed-on: https://chromium-review.googlesource.com/c/1431352
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Jordan Rupprecht <rupprecht@google.com>
Cr-Commit-Position: refs/heads/master@{#625379}
diff --git a/base/cpu.cc b/base/cpu.cc
index 3a0f6fa0..66caa09 100644
--- a/base/cpu.cc
+++ b/base/cpu.cc
@@ -79,18 +79,22 @@
 }
 
 #endif
+#endif  // !defined(COMPILER_MSVC)
 
-// _xgetbv returns the value of an Intel Extended Control Register (XCR).
+// xgetbv returns the value of an Intel Extended Control Register (XCR).
 // Currently only XCR0 is defined by Intel so |xcr| should always be zero.
-uint64_t _xgetbv(uint32_t xcr) {
+uint64_t xgetbv(uint32_t xcr) {
+#if defined(COMPILER_MSVC)
+  return _xgetbv(xcr);
+#else
   uint32_t eax, edx;
 
   __asm__ volatile (
     "xgetbv" : "=a"(eax), "=d"(edx) : "c"(xcr));
   return (static_cast<uint64_t>(edx) << 32) | eax;
+#endif  // defined(COMPILER_MSVC)
 }
 
-#endif  // !defined(COMPILER_MSVC)
 #endif  // ARCH_CPU_X86_FAMILY
 
 #if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX))
@@ -198,7 +202,7 @@
         (cpu_info[2] & 0x10000000) != 0 &&
         (cpu_info[2] & 0x04000000) != 0 /* XSAVE */ &&
         (cpu_info[2] & 0x08000000) != 0 /* OSXSAVE */ &&
-        (_xgetbv(0) & 6) == 6 /* XSAVE enabled by kernel */;
+        (xgetbv(0) & 6) == 6 /* XSAVE enabled by kernel */;
     has_aesni_ = (cpu_info[2] & 0x02000000) != 0;
     has_avx2_ = has_avx_ && (cpu_info7[1] & 0x00000020) != 0;
   }