summaryrefslogtreecommitdiff
path: root/src/vm/codeman.cpp
diff options
context:
space:
mode:
authorCarol Eidt <carol.eidt@microsoft.com>2018-11-03 09:17:48 -0700
committerCarol Eidt <carol.eidt@microsoft.com>2018-11-03 09:17:48 -0700
commit8d34db07ce56536882d4dca97a7e49b45fb5f362 (patch)
tree722192f14f3366ed66bed3fba928bbdb8aa7d3fc /src/vm/codeman.cpp
parenta9074bce5e3814db67dbec1c56f477202164d162 (diff)
downloadcoreclr-8d34db07ce56536882d4dca97a7e49b45fb5f362.tar.gz
coreclr-8d34db07ce56536882d4dca97a7e49b45fb5f362.tar.bz2
coreclr-8d34db07ce56536882d4dca97a7e49b45fb5f362.zip
Add Windows support for Arm64 HW Intrinsics
Also, fix Crypto test and ensure that featureSIMD is taken into account Fix #18175 Fix #20088
Diffstat (limited to 'src/vm/codeman.cpp')
-rw-r--r--src/vm/codeman.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/vm/codeman.cpp b/src/vm/codeman.cpp
index 1cb54f2e4d..1ea4303e34 100644
--- a/src/vm/codeman.cpp
+++ b/src/vm/codeman.cpp
@@ -1475,17 +1475,32 @@ void EEJitManager::SetCpuInfo()
}
#endif // defined(_TARGET_X86_) || defined(_TARGET_AMD64_)
-#if defined(_TARGET_ARM64_) && defined(FEATURE_PAL)
- PAL_GetJitCpuCapabilityFlags(&CPUCompileFlags);
-#endif
-
#if defined(_TARGET_ARM64_)
static ConfigDWORD fFeatureSIMD;
if (fFeatureSIMD.val(CLRConfig::EXTERNAL_FeatureSIMD) != 0)
{
CPUCompileFlags.Set(CORJIT_FLAGS::CORJIT_FLAG_FEATURE_SIMD);
}
-#endif
+#if defined(FEATURE_PAL)
+ PAL_GetJitCpuCapabilityFlags(&CPUCompileFlags);
+#elif defined(_WIN64)
+ // FP and SIMD support are enabled by default
+ CPUCompileFlags.Set(CORJIT_FLAGS::CORJIT_FLAG_HAS_ARM64_SIMD);
+ CPUCompileFlags.Set(CORJIT_FLAGS::CORJIT_FLAG_HAS_ARM64_FP);
+ // PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE (30)
+ if (IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE))
+ {
+ CPUCompileFlags.Set(CORJIT_FLAGS::CORJIT_FLAG_HAS_ARM64_AES);
+ CPUCompileFlags.Set(CORJIT_FLAGS::CORJIT_FLAG_HAS_ARM64_SHA1);
+ CPUCompileFlags.Set(CORJIT_FLAGS::CORJIT_FLAG_HAS_ARM64_SHA256);
+ }
+ // PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE (31)
+ if (IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE))
+ {
+ CPUCompileFlags.Set(CORJIT_FLAGS::CORJIT_FLAG_HAS_ARM64_CRC32);
+ }
+#endif // _WIN64
+#endif // _TARGET_ARM64_
m_CPUCompileFlags = CPUCompileFlags;
}