Define getHostCPUFeatures for Windows on ARM64 platform

This change implements getHostCPUFeatures function to enable this functionality on Windows on ARM64.
This was committed to llvm at https://reviews.llvm.org/D68139 .

Bug: chromium:893460
Change-Id: I7ae62f298683979a4ab1aa8099d6e91706b15c9b
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/37328
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
diff --git a/third_party/llvm-7.0/llvm/lib/Support/Host.cpp b/third_party/llvm-7.0/llvm/lib/Support/Host.cpp
index 2c718dd..c15b212 100644
--- a/third_party/llvm-7.0/llvm/lib/Support/Host.cpp
+++ b/third_party/llvm-7.0/llvm/lib/Support/Host.cpp
@@ -1358,6 +1358,17 @@
 
   return true;
 }
+#elif defined(_WIN32) && (defined(__aarch64__) || defined(_M_ARM64))
+bool sys::getHostCPUFeatures(StringMap<bool> &Features) {
+  if (IsProcessorFeaturePresent(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE))
+    Features["neon"] = true;
+  if (IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE))
+    Features["crc"] = true;
+  if (IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE))
+    Features["crypto"] = true;
+
+  return true;
+}
 #else
 bool sys::getHostCPUFeatures(StringMap<bool> &Features) { return false; }
 #endif