diff options
author | Carol Eidt <carol.eidt@microsoft.com> | 2018-11-03 09:17:48 -0700 |
---|---|---|
committer | Carol Eidt <carol.eidt@microsoft.com> | 2018-11-03 09:17:48 -0700 |
commit | 8d34db07ce56536882d4dca97a7e49b45fb5f362 (patch) | |
tree | 722192f14f3366ed66bed3fba928bbdb8aa7d3fc /src/vm/codeman.cpp | |
parent | a9074bce5e3814db67dbec1c56f477202164d162 (diff) | |
download | coreclr-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.cpp | 25 |
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; } |