Closed
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);
}
}