From: Egor Chesakov Date: Sat, 8 Aug 2020 00:51:23 +0000 (-0700) Subject: [Arm64] Treat methods of non-generic Vector64 and Vector128 classes as intrinsics... X-Git-Tag: submit/tizen/20210909.063632~6131 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1db5808a3033e4a7125a7311c02cbaaf332d1179;p=platform%2Fupstream%2Fdotnet%2Fruntime.git [Arm64] Treat methods of non-generic Vector64 and Vector128 classes as intrinsics (#40441) --- diff --git a/src/coreclr/src/zap/zapinfo.cpp b/src/coreclr/src/zap/zapinfo.cpp index e997efa..ff12d96 100644 --- a/src/coreclr/src/zap/zapinfo.cpp +++ b/src/coreclr/src/zap/zapinfo.cpp @@ -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 and Vector128 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 and Vector128 generic methods (e.g. Vector64.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