Skip to content

Arm64 SVE: Implement missing extract methods #115336

Closed

Description

@a74nh

The following mask methods were approved in #98184 but are not yet implemented:

public static unsafe T ExtractAfterLastScalar(Vector<T> value); // LASTA // predicated
public static unsafe Vector<T> ExtractAfterLastVector(Vector<T> value); // LASTA // predicated
public static unsafe T ExtractLastScalar(Vector<T> value); // LASTB // predicated
public static unsafe Vector<T> ExtractLastVector(Vector<T> value); // LASTB // predicated

Activity

  1. added
    arm-sveWork related to arm64 SVE/SVE2 support
    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
    and removed
    untriagedNew issue has not been triaged by the area owner
    on May 6, 2025
  2. dotnet-policy-service commented on May 6, 2025

    @dotnet-policy-service
    Contributor

    Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
    See info in area-owners.md if you want to be subscribed.

  3. a74nh commented on May 16, 2025

    @a74nh
    ContributorAuthor

    These APIs return either a scalar or a scalar in a Neon register. Therefore, it doesn't make sense that the mask has been hidden away for these, as they cannot be embedded inside a conditional select.

    The APIs should be:

    public static unsafe T ExtractAfterLastScalar(Vector<T> mask, Vector<T> value); // LASTA // predicated
    public static unsafe Vector<T> ExtractAfterLastVector(Vector<T> mask, Vector<T> value); // LASTA // predicated
    public static unsafe T ExtractLastScalar(Vector<T> mask, Vector<T> value); // LASTB // predicated
    public static unsafe Vector<T> ExtractLastVector(Vector<T> mask, Vector<T> value); // LASTB // predicated
    

    Note that the ConditionalExtract methods (CLASTA,CLASTB) do have the mask in the API.

    We plan to implement these with the mask, and then raise an API review issue to cover the differences.

  4. added 2 commits that reference this issue on May 29, 2025
    6efadac
    18e091e
  5. added this to the 10.0.0 milestone on May 30, 2025
  6. added a commit that references this issue on Jun 6, 2025
    7889937
  7. locked and limited conversation to collaborators on Jul 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIarm-sveWork related to arm64 SVE/SVE2 support

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions