Skip to content

Commit

Permalink
[Arm64] Treat methods of non-generic Vector64 and Vector128 classes a…
Browse files Browse the repository at this point in the history
…s intrinsics (#40441)
  • Loading branch information
echesakov authored Aug 8, 2020
1 parent 85d2bbc commit 1db5808
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/coreclr/src/zap/zapinfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2171,8 +2171,11 @@ DWORD FilterNamedIntrinsicMethodAttribs(ZapInfo* pZapInfo, DWORD attribs, CORINF
fTreatAsRegularMethodCall = fIsGetIsSupportedMethod && fIsPlatformHWIntrinsic;

#if defined(TARGET_ARM64)
// On Arm64 AdvSimd ISA is required by CoreCLR, so we can expand Vector64<T> and Vector128<T> methods.
fTreatAsRegularMethodCall |= !fIsPlatformHWIntrinsic && fIsHWIntrinsic && (strcmp(className, "Vector64`1") != 0) && (strcmp(className, "Vector128`1") != 0);
// On Arm64 AdvSimd ISA is required by CoreCLR, so we can expand Vector64<T> and Vector128<T> generic methods (e.g. Vector64<byte>.get_Zero)
// as well as Vector64 and Vector128 methods (e.g. Vector128.CreateScalarUnsafe).
fTreatAsRegularMethodCall |= !fIsPlatformHWIntrinsic && fIsHWIntrinsic
&& (strncmp(className, "Vector64", _countof("Vector64") - 1) != 0)
&& (strncmp(className, "Vector128", _countof("Vector128") - 1) != 0);
#else
fTreatAsRegularMethodCall |= !fIsPlatformHWIntrinsic && fIsHWIntrinsic;
#endif
Expand Down

0 comments on commit 1db5808

Please sign in to comment.