From 1db5808a3033e4a7125a7311c02cbaaf332d1179 Mon Sep 17 00:00:00 2001 From: Egor Chesakov Date: Fri, 7 Aug 2020 17:51:23 -0700 Subject: [PATCH] [Arm64] Treat methods of non-generic Vector64 and Vector128 classes as intrinsics (#40441) --- src/coreclr/src/zap/zapinfo.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 -- 2.7.4