diff options
Diffstat (limited to 'src/ILCompiler.Compiler/src/Compiler/SimdHelper.cs')
-rw-r--r-- | src/ILCompiler.Compiler/src/Compiler/SimdHelper.cs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/ILCompiler.Compiler/src/Compiler/SimdHelper.cs b/src/ILCompiler.Compiler/src/Compiler/SimdHelper.cs index 3f523b18d..53f606c57 100644 --- a/src/ILCompiler.Compiler/src/Compiler/SimdHelper.cs +++ b/src/ILCompiler.Compiler/src/Compiler/SimdHelper.cs @@ -17,19 +17,27 @@ namespace ILCompiler { private ModuleDesc[] _simdModulesCached; - public bool IsInSimdModule(TypeDesc type) + public bool IsSimdType(TypeDesc type) { - if (type is MetadataType) + if (type is MetadataType metadataType) { if (_simdModulesCached == null) { InitializeSimdModules(type); } - ModuleDesc typeModule = ((MetadataType)type).Module; + ModuleDesc typeModule = metadataType.Module; foreach (ModuleDesc simdModule in _simdModulesCached) if (typeModule == simdModule) return true; + + if (metadataType.IsIntrinsic) + { + string name = metadataType.Name; + if ((name == "Vector`1" || name == "Vector") && + metadataType.Namespace == "System.Numerics") + return true; + } } return false; @@ -54,7 +62,7 @@ namespace ILCompiler public bool IsVectorOfT(TypeDesc type) { - return IsInSimdModule(type) + return IsSimdType(type) && ((MetadataType)type).Name == "Vector`1" && ((MetadataType)type).Namespace == "System.Numerics"; } |