@@ -1906,20 +1906,22 @@ emit_sri_vector (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsi
1906
1906
{
1907
1907
const char * cmethod_name = cmethod -> name ;
1908
1908
1909
- if (strncmp (cmethod_name , "System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector" , 70 ) == 0 ) {
1909
+ if (strncmp (cmethod_name , "System.Runtime.Intrinsics.ISimdVector<" , 38 ) == 0 ) {
1910
+ if (strncmp (cmethod_name + 38 , "System.Runtime.Intrinsics.Vector" , 32 ) == 0 ) {
1910
1911
// We want explicitly implemented ISimdVector<TSelf, T> APIs to still be expanded where possible
1911
1912
// but, they all prefix the qualified name of the interface first, so we'll check for that and
1912
1913
// skip the prefix before trying to resolve the method.
1913
1914
1914
- if (strncmp (cmethod_name + 70 , "64<T>,T>." , 9 ) == 0 ) {
1915
+ if (strncmp (cmethod_name + 70 , "64<T>,T>." , 9 ) == 0 ) {
1915
1916
cmethod_name += 79 ;
1916
- } else if ((strncmp (cmethod_name + 70 , "128<T>,T>." , 10 ) == 0 ) ||
1917
- (strncmp (cmethod_name + 70 , "256<T>,T>." , 10 ) == 0 ) ||
1918
- (strncmp (cmethod_name + 70 , "512<T>,T>." , 10 ) == 0 )) {
1919
- cmethod_name += 80 ;
1917
+ } else if ((strncmp (cmethod_name + 70 , "128<T>,T>." , 10 ) == 0 ) ||
1918
+ (strncmp (cmethod_name + 70 , "256<T>,T>." , 10 ) == 0 ) ||
1919
+ (strncmp (cmethod_name + 70 , "512<T>,T>." , 10 ) == 0 )) {
1920
+ cmethod_name += 80 ;
1921
+ }
1922
+ } else if (strncmp (cmethod_name + 38 , "System.Numerics.Vector<T>,T>." , 29 ) == 0 ) {
1923
+ cmethod_name += 67 ;
1920
1924
}
1921
- } else if (strncmp (cmethod_name , "System.Runtime.Intrinsics.ISimdVector<System.Numerics.Vector<T>,T>." , 67 ) == 0 ) {
1922
- cmethod_name += 67 ;
1923
1925
}
1924
1926
1925
1927
int id = lookup_intrins (sri_vector_methods , sizeof (sri_vector_methods ), cmethod_name );
@@ -3371,23 +3373,25 @@ emit_sri_vector_t (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *f
3371
3373
const char * cmethod_name = cmethod -> name ;
3372
3374
bool explicitly_implemented = false;
3373
3375
3374
- if (strncmp (cmethod_name , "System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector" , 70 ) == 0 ) {
3375
- // We want explicitly implemented ISimdVector<TSelf, T> APIs to still be expanded where possible
3376
- // but, they all prefix the qualified name of the interface first, so we'll check for that and
3377
- // skip the prefix before trying to resolve the method.
3378
-
3379
- if (strncmp (cmethod_name + 70 , "64<T>,T>." , 9 ) == 0 ) {
3380
- cmethod_name += 79 ;
3381
- explicitly_implemented = true;
3382
- } else if ((strncmp (cmethod_name + 70 , "128<T>,T>." , 10 ) == 0 ) ||
3383
- (strncmp (cmethod_name + 70 , "256<T>,T>." , 10 ) == 0 ) ||
3384
- (strncmp (cmethod_name + 70 , "512<T>,T>." , 10 ) == 0 )) {
3385
- cmethod_name += 80 ;
3376
+ if (strncmp (cmethod_name , "System.Runtime.Intrinsics.ISimdVector<" , 38 ) == 0 ) {
3377
+ if (strncmp (cmethod_name + 38 , "System.Runtime.Intrinsics.Vector" , 32 ) == 0 ) {
3378
+ // We want explicitly implemented ISimdVector<TSelf, T> APIs to still be expanded where possible
3379
+ // but, they all prefix the qualified name of the interface first, so we'll check for that and
3380
+ // skip the prefix before trying to resolve the method.
3381
+
3382
+ if (strncmp (cmethod_name + 70 , "64<T>,T>." , 9 ) == 0 ) {
3383
+ cmethod_name += 79 ;
3384
+ explicitly_implemented = true;
3385
+ } else if ((strncmp (cmethod_name + 70 , "128<T>,T>." , 10 ) == 0 ) ||
3386
+ (strncmp (cmethod_name + 70 , "256<T>,T>." , 10 ) == 0 ) ||
3387
+ (strncmp (cmethod_name + 70 , "512<T>,T>." , 10 ) == 0 )) {
3388
+ cmethod_name += 80 ;
3389
+ explicitly_implemented = true;
3390
+ }
3391
+ } else if (strncmp (cmethod_name + 38 , "System.Numerics.Vector<T>,T>." , 29 ) == 0 ) {
3392
+ cmethod_name += 67 ;
3386
3393
explicitly_implemented = true;
3387
3394
}
3388
- } else if (strncmp (cmethod_name , "System.Runtime.Intrinsics.ISimdVector<System.Numerics.Vector<T>,T>." , 67 ) == 0 ) {
3389
- cmethod_name += 67 ;
3390
- explicitly_implemented = true;
3391
3395
}
3392
3396
3393
3397
int id = lookup_intrins (sri_vector_t_methods , sizeof (sri_vector_t_methods ), cmethod_name );
0 commit comments