Skip to content

[API Proposal]: Add AVX10.2 MoveScalar APIs: VMOVD / VMOVW #113090

Closed
@khushal1996

Description

@khushal1996

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

Image

Image

Image

Image

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions