Closed
Description
Background and motivation
This API proposal introduces remaining API surface for AVX10v2
in .NET.
Spec doc - link
Previous Discussion - comment1, comment2, comment3, comment4
AVX10.2 original proposal - link
We will be adding these APIs to existing Avx10v2
API surface
Note: We are not doing the StoreScalar
API since it already exists. link
API Proposal
// VMOVD xmm1, xmm2/m32
public static Vector128<uint> MoveScalar(Vector128<uint>)
// VMOVD xmm1, xmm2/m32
public static Vector128<int> MoveScalar(Vector128<int>)
// VMOVW xmm1, xmm2/m16
public static Vector128<ushort> MoveScalar(Vector128<ushort>)
// VMOVW xmm1, xmm2/m16
public static Vector128<short> MoveScalar(Vector128<short>)
// VMOVW xmm1/m16, xmm2
public static unsafe void StoreScalar(Int16* address, Vector128<Int16>)
// VMOVW xmm1/m16, xmm2
public static unsafe void StoreScalar(UInt16* address, Vector128<UInt16>)
API Usage
Vector128<int> v1 = Vector128.Create((int)someParam1);
if (Avx10v2.IsSupported()) {
Vector128<int> v2 = Avx10v2.MoveScalar(v1);
// etc
}
Alternative Designs
No response
Risks
No response