-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Closed
Closed
Copy link
Labels
api-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedarea-System.Runtime.Intrinsics
Milestone
Description
Proposal
Extend Vector64<T>, Vector128<T>, and Vector256<T> to support nint and nuint as valid primitive types. This will extend a number of existing generic functions which take a Vector<T> to also support taking the new types rather than throwing a PlatformNotSupportedException.
Additionally, the following non-generic APIs should be added for parity with the existing surface area:
namespace System.Runtime.Intrinsics
{
public static partial class Vector64
{
public static Vector64<nint> AsNInt<T>(Vector64<T> value);
public static Vector64<nuint> AsNUInt<T>(Vector64<T> value);
public static Vector64<nint> Create(nint value);
public static Vector64<nuint> Create(nuint value);
public static Vector64<nint> CreateScalar(nint value);
public static Vector64<nuint> CreateScalar(nuint value);
public static Vector64<nint> CreateScalarUnsafe(nint value);
public static Vector64<nuint> CreateScalarUnsafe(nuint value);
}
public static partial class Vector128
{
public static Vector128<nint> AsNInt<T>(Vector128<T> value);
public static Vector128<nuint> AsNUInt<T>(Vector128<T> value);
public static Vector128<nint> Create(nint value);
public static Vector128<nuint> Create(nuint value);
public static Vector128<nint> Create(Vector64<nint> lower, Vector64<nint> upper);
public static Vector128<nuint> Create(Vector64<nuint> lower, Vector64<nuint> upper);
public static Vector128<nint> CreateScalar(nint value);
public static Vector128<nuint> CreateScalar(nuint value);
public static Vector128<nint> CreateScalarUnsafe(nint value);
public static Vector128<nuint> CreateScalarUnsafe(nuint value);
}
public static partial class Vector256
{
public static Vector256<nint> AsNInt<T>(Vector256<T> value);
public static Vector256<nuint> AsNUInt<T>(Vector256<T> value);
public static Vector256<nint> Create(nint value);
public static Vector256<nuint> Create(nuint value);
public static Vector256<nint> Create(Vector128<nint> lower, Vector128<nint> upper);
public static Vector256<nuint> Create(Vector128<nuint> lower, Vector128<nuint> upper);
public static Vector256<nint> CreateScalar(nint value);
public static Vector256<nuint> CreateScalar(nuint value);
public static Vector256<nint> CreateScalarUnsafe(nint value);
public static Vector256<nuint> CreateScalarUnsafe(nuint value);
}
}NN---
Metadata
Metadata
Assignees
Labels
api-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedarea-System.Runtime.Intrinsics