The first group of uncompiled methods from #44948 uses Vector<T>. During crossgen2 of GetIndexOfFirstNonAsciiByte_Default() method couple of exceptions is thrown and compilation is rejected.
First exception is thrown from CorInfoImpl.cs#L838 and could be fixed by:
@ -853,7 +853,7 @@ private uint getMethodAttribsInternal(MethodDesc method)
DefType owningDefType = method.OwningType as DefType;
if (owningDefType != null && VectorOfTFieldLayoutAlgorithm.IsVectorOfTType(owningDefType))
{
- throw new RequiresRuntimeJitException("This function is using SIMD intrinsics, their size is machine specific");
+ VerifyMethodSignatureIsStable(method.Signature);
}
}
#endif
Second exception is thrown from CorInfoImpl.cs#L1556 due to indeterminate Vector<T> size on compiling time. The size depends on similarSpecifiedVector variable. To make similarSpecifiedVector became nonull I made experiment with changing matchingVectorType default value:
@@ -99,7 +99,7 @@ public ReadyToRunCompilerContext(TargetDetails details, SharedGenericsMode gener
// Only the Arm64 JIT respects the OS rules for vector type abi currently
_vectorFieldLayoutAlgorithm = new VectorFieldLayoutAlgorithm(_r2rFieldLayoutAlgorithm, (details.Architecture == TargetArchitecture.ARM64) ? true : bubbleIncludesCorelib);
- string matchingVectorType = "Unknown";
+ string matchingVectorType = "Vector128`1";
if (details.MaximumSimdVectorLength == SimdVectorLength.Vector128Bit)
matchingVectorType = "Vector128`1";
else if (details.MaximumSimdVectorLength == SimdVectorLength.Vector256Bit)
That experiment was successful on armel, Calculator app starts after crossgen2 and GetIndexOfFirstNonAsciiByte_Default method was precompiled by crossgen2.
How machingVectorType or similarSpecifiedVector should be calculated by crossgen2 with _vectorAbiIsStable = true?
cc @davidwrighton @jkotas @alpencolt
The first group of uncompiled methods from #44948 uses
Vector<T>. During crossgen2 ofGetIndexOfFirstNonAsciiByte_Default()method couple of exceptions is thrown and compilation is rejected.First exception is thrown from CorInfoImpl.cs#L838 and could be fixed by:
@ -853,7 +853,7 @@ private uint getMethodAttribsInternal(MethodDesc method) DefType owningDefType = method.OwningType as DefType; if (owningDefType != null && VectorOfTFieldLayoutAlgorithm.IsVectorOfTType(owningDefType)) { - throw new RequiresRuntimeJitException("This function is using SIMD intrinsics, their size is machine specific"); + VerifyMethodSignatureIsStable(method.Signature); } } #endifSecond exception is thrown from CorInfoImpl.cs#L1556 due to indeterminate
Vector<T>size on compiling time. The size depends onsimilarSpecifiedVectorvariable. To makesimilarSpecifiedVectorbecame nonull I made experiment with changingmatchingVectorTypedefault value:That experiment was successful on armel, Calculator app starts after crossgen2 and
GetIndexOfFirstNonAsciiByte_Defaultmethod was precompiled by crossgen2.How
machingVectorTypeorsimilarSpecifiedVectorshould be calculated by crossgen2 with_vectorAbiIsStable = true?cc @davidwrighton @jkotas @alpencolt