dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.38k stars 4.75k forks source link

[API Proposal]: Arm64: FEAT_SVE2: gather loads #94019

Open a74nh opened 1 year ago

a74nh commented 1 year ago
namespace System.Runtime.Intrinsics.Arm;

/// VectorT Summary
public abstract partial class Sve2 : AdvSimd /// Feature: FEAT_SVE2  Category: gatherloads
{

  /// T: [int, uint], [uint, uint], [long, ulong], [ulong, ulong]
  public static unsafe Vector<T> GatherVectorByteZeroExtendNonTemporal(Vector<T> mask, Vector<T2> addresses); // LDNT1B

  /// T: [int, uint], [uint, uint], [long, long], [ulong, long], [long, ulong], [ulong, ulong]
  public static unsafe Vector<T> GatherVectorByteZeroExtendNonTemporal(Vector<T> mask, byte* address, Vector<T2> offsets); // LDNT1B

  /// T: [int, uint], [uint, uint], [long, ulong], [ulong, ulong]
  public static unsafe Vector<T> GatherVectorInt16SignExtendNonTemporal(Vector<T> mask, Vector<T2> addresses); // LDNT1SH

  /// T: [long, long], [ulong, long], [long, ulong], [ulong, ulong]
  public static unsafe Vector<T> GatherVectorInt16SignExtendNonTemporal(Vector<T> mask, short* address, Vector<T2> indices); // LDNT1SH

  /// T: [int, uint], [uint, uint], [long, long], [ulong, long], [long, ulong], [ulong, ulong]
  public static unsafe Vector<T> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<T> mask, short* address, Vector<T2> offsets); // LDNT1SH

  /// T: [long, ulong], [int, uint], [ulong, ulong], [uint, uint]
  public static unsafe Vector<T> GatherVectorInt32SignExtendNonTemporal(Vector<T> mask, Vector<T2> addresses); // LDNT1SW

  /// T: [long, long], [int, int], [ulong, long], [uint, int], [long, ulong], [int, uint], [ulong, ulong], [uint, uint]
  public static unsafe Vector<T> GatherVectorInt32SignExtendNonTemporal(Vector<T> mask, int* address, Vector<T2> indices); // LDNT1SW

  /// T: [long, long], [int, int], [ulong, long], [uint, int], [long, ulong], [int, uint], [ulong, ulong], [uint, uint]
  public static unsafe Vector<T> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<T> mask, int* address, Vector<T2> offsets); // LDNT1SW

  /// T: [float, uint], [int, uint], [double, ulong], [long, ulong]
  public static unsafe Vector<T> GatherVectorNonTemporal(Vector<T> mask, Vector<T2> addresses); // LDNT1W or LDNT1D

  /// T: uint, ulong
  public static unsafe Vector<T> GatherVectorNonTemporal(Vector<T> mask, Vector<T> addresses); // LDNT1W or LDNT1D

  /// T: [float, uint], [int, uint], [double, long], [ulong, long], [double, ulong], [long, ulong]
  public static unsafe Vector<T> GatherVectorNonTemporal(Vector<T> mask, T* address, Vector<T2> offsets); // LDNT1W or LDNT1D

  /// T: uint, long, ulong
  public static unsafe Vector<T> GatherVectorNonTemporal(Vector<T> mask, T* address, Vector<T> offsets); // LDNT1W or LDNT1D

  /// T: [double, long], [ulong, long], [double, ulong], [long, ulong]
  public static unsafe Vector<T> GatherVectorNonTemporal(Vector<T> mask, T* address, Vector<T2> indices); // LDNT1D

  /// T: long, ulong
  public static unsafe Vector<T> GatherVectorNonTemporal(Vector<T> mask, T* address, Vector<T> indices); // LDNT1D

  /// T: [int, uint], [uint, uint], [long, ulong], [ulong, ulong]
  public static unsafe Vector<T> GatherVectorSByteSignExtendNonTemporal(Vector<T> mask, Vector<T2> addresses); // LDNT1SB

  /// T: [int, uint], [uint, uint], [long, long], [ulong, long], [long, ulong], [ulong, ulong]
  public static unsafe Vector<T> GatherVectorSByteSignExtendNonTemporal(Vector<T> mask, sbyte* address, Vector<T2> offsets); // LDNT1SB

  /// T: [int, uint], [uint, uint], [long, long], [ulong, long], [long, ulong], [ulong, ulong]
  public static unsafe Vector<T> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<T> mask, ushort* address, Vector<T2> offsets); // LDNT1H

  /// T: [int, uint], [uint, uint], [long, ulong], [ulong, ulong]
  public static unsafe Vector<T> GatherVectorUInt16ZeroExtendNonTemporal(Vector<T> mask, Vector<T2> addresses); // LDNT1H

  /// T: [long, long], [ulong, long], [long, ulong], [ulong, ulong]
  public static unsafe Vector<T> GatherVectorUInt16ZeroExtendNonTemporal(Vector<T> mask, ushort* address, Vector<T2> indices); // LDNT1H

  /// T: [long, long], [int, int], [ulong, long], [uint, int], [long, ulong], [int, uint], [ulong, ulong], [uint, uint]
  public static unsafe Vector<T> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<T> mask, uint* address, Vector<T2> offsets); // LDNT1W

  /// T: [long, ulong], [int, uint], [ulong, ulong], [uint, uint]
  public static unsafe Vector<T> GatherVectorUInt32ZeroExtendNonTemporal(Vector<T> mask, Vector<T2> addresses); // LDNT1W

  /// T: [long, long], [int, int], [ulong, long], [uint, int], [long, ulong], [int, uint], [ulong, ulong], [uint, uint]
  public static unsafe Vector<T> GatherVectorUInt32ZeroExtendNonTemporal(Vector<T> mask, uint* address, Vector<T2> indices); // LDNT1W

  /// total method signatures: 22

}
ghost commented 1 year ago

Tagging subscribers to this area: @dotnet/area-system-numerics See info in area-owners.md if you want to be subscribed.

Issue Details
```csharp namespace System.Runtime.Intrinsics.Arm /// VectorT Summary public abstract class Sve : AdvSimd /// Feature: FEAT_SVE2 Category: gatherloads { /// T: [int, uint], [long, ulong] public static unsafe Vector GatherLoadVector16SignExtendNonTemporal(Vector bases); // LDNT1SH /// T: uint, ulong public static unsafe Vector GatherLoadVector16SignExtendNonTemporal(Vector bases); // LDNT1SH /// T: [int, uint], [ulong, long], [long, ulong] public static unsafe Vector GatherLoadVector16SignExtendNonTemporal(const short *base, Vector offsets); // LDNT1SH /// T: uint, long, ulong public static unsafe Vector GatherLoadVector16SignExtendNonTemporal(const short *base, Vector offsets); // LDNT1SH /// T: long, ulong public static unsafe Vector GatherLoadVector16SignExtendNonTemporal(const short *base, Vector indices); // LDNT1SH /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherLoadVector16SignExtendNonTemporal(const short *base, Vector indices); // LDNT1SH /// T: [int, uint], [long, ulong] public static unsafe Vector GatherLoadVector16SignExtendNonTemporal(Vector bases, long offset); // LDNT1SH /// T: uint, ulong public static unsafe Vector GatherLoadVector16SignExtendNonTemporal(Vector bases, long offset); // LDNT1SH /// T: [int, uint], [long, ulong] public static unsafe Vector GatherLoadVector16SignExtendNonTemporal(Vector bases, long index); // LDNT1SH /// T: uint, ulong public static unsafe Vector GatherLoadVector16SignExtendNonTemporal(Vector bases, long index); // LDNT1SH /// T: [int, uint], [long, ulong] public static unsafe Vector GatherLoadVector16ZeroExtendNonTemporal(Vector bases); // LDNT1H /// T: uint, ulong public static unsafe Vector GatherLoadVector16ZeroExtendNonTemporal(Vector bases); // LDNT1H /// T: [int, uint], [ulong, long], [long, ulong] public static unsafe Vector GatherLoadVector16ZeroExtendNonTemporal(const ushort *base, Vector offsets); // LDNT1H /// T: uint, long, ulong public static unsafe Vector GatherLoadVector16ZeroExtendNonTemporal(const ushort *base, Vector offsets); // LDNT1H /// T: long, ulong public static unsafe Vector GatherLoadVector16ZeroExtendNonTemporal(const ushort *base, Vector indices); // LDNT1H /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherLoadVector16ZeroExtendNonTemporal(const ushort *base, Vector indices); // LDNT1H /// T: [int, uint], [long, ulong] public static unsafe Vector GatherLoadVector16ZeroExtendNonTemporal(Vector bases, long offset); // LDNT1H /// T: uint, ulong public static unsafe Vector GatherLoadVector16ZeroExtendNonTemporal(Vector bases, long offset); // LDNT1H /// T: [int, uint], [long, ulong] public static unsafe Vector GatherLoadVector16ZeroExtendNonTemporal(Vector bases, long index); // LDNT1H /// T: uint, ulong public static unsafe Vector GatherLoadVector16ZeroExtendNonTemporal(Vector bases, long index); // LDNT1H public static unsafe Vector GatherLoadVector32SignExtendNonTemporal(Vector bases); public static unsafe Vector GatherLoadVector32SignExtendNonTemporal(Vector bases); /// T: long, ulong public static unsafe Vector GatherLoadVector32SignExtendNonTemporal(const int *base, Vector offsets); // LDNT1SW /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherLoadVector32SignExtendNonTemporal(const int *base, Vector offsets); // LDNT1SW /// T: long, ulong public static unsafe Vector GatherLoadVector32SignExtendNonTemporal(const int *base, Vector indices); // LDNT1SW /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherLoadVector32SignExtendNonTemporal(const int *base, Vector indices); // LDNT1SW public static unsafe Vector GatherLoadVector32SignExtendNonTemporal(Vector bases, long offset); public static unsafe Vector GatherLoadVector32SignExtendNonTemporal(Vector bases, long offset); public static unsafe Vector GatherLoadVector32SignExtendNonTemporal(Vector bases, long index); public static unsafe Vector GatherLoadVector32SignExtendNonTemporal(Vector bases, long index); public static unsafe Vector GatherLoadVector32ZeroExtendNonTemporal(Vector bases); public static unsafe Vector GatherLoadVector32ZeroExtendNonTemporal(Vector bases); /// T: long, ulong public static unsafe Vector GatherLoadVector32ZeroExtendNonTemporal(const uint *base, Vector offsets); // LDNT1W /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherLoadVector32ZeroExtendNonTemporal(const uint *base, Vector offsets); // LDNT1W /// T: long, ulong public static unsafe Vector GatherLoadVector32ZeroExtendNonTemporal(const uint *base, Vector indices); // LDNT1W /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherLoadVector32ZeroExtendNonTemporal(const uint *base, Vector indices); // LDNT1W public static unsafe Vector GatherLoadVector32ZeroExtendNonTemporal(Vector bases, long offset); public static unsafe Vector GatherLoadVector32ZeroExtendNonTemporal(Vector bases, long offset); public static unsafe Vector GatherLoadVector32ZeroExtendNonTemporal(Vector bases, long index); public static unsafe Vector GatherLoadVector32ZeroExtendNonTemporal(Vector bases, long index); /// T: [int, uint], [long, ulong] public static unsafe Vector GatherLoadVector8SignExtendNonTemporal(Vector bases); // LDNT1SB /// T: uint, ulong public static unsafe Vector GatherLoadVector8SignExtendNonTemporal(Vector bases); // LDNT1SB /// T: [int, uint], [ulong, long], [long, ulong] public static unsafe Vector GatherLoadVector8SignExtendNonTemporal(const sbyte *base, Vector offsets); // LDNT1SB /// T: uint, long, ulong public static unsafe Vector GatherLoadVector8SignExtendNonTemporal(const sbyte *base, Vector offsets); // LDNT1SB /// T: [int, uint], [long, ulong] public static unsafe Vector GatherLoadVector8SignExtendNonTemporal(Vector bases, long offset); // LDNT1SB /// T: uint, ulong public static unsafe Vector GatherLoadVector8SignExtendNonTemporal(Vector bases, long offset); // LDNT1SB /// T: [int, uint], [long, ulong] public static unsafe Vector GatherLoadVector8ZeroExtendNonTemporal(Vector bases); // LDNT1B /// T: uint, ulong public static unsafe Vector GatherLoadVector8ZeroExtendNonTemporal(Vector bases); // LDNT1B /// T: [int, uint], [ulong, long], [long, ulong] public static unsafe Vector GatherLoadVector8ZeroExtendNonTemporal(const byte *base, Vector offsets); // LDNT1B /// T: uint, long, ulong public static unsafe Vector GatherLoadVector8ZeroExtendNonTemporal(const byte *base, Vector offsets); // LDNT1B /// T: [int, uint], [long, ulong] public static unsafe Vector GatherLoadVector8ZeroExtendNonTemporal(Vector bases, long offset); // LDNT1B /// T: uint, ulong public static unsafe Vector GatherLoadVector8ZeroExtendNonTemporal(Vector bases, long offset); // LDNT1B /// T: [float, uint], [int, uint], [double, ulong], [long, ulong] public static unsafe Vector GatherLoadVectorNonTemporal(Vector bases); // LDNT1W or LDNT1D /// T: uint, ulong public static unsafe Vector GatherLoadVectorNonTemporal(Vector bases); // LDNT1W or LDNT1D /// T: [float, uint], [int, uint], [double, long], [ulong, long], [double, ulong], [long, ulong] public static unsafe Vector GatherLoadVectorNonTemporal(const T *base, Vector offsets); // LDNT1W or LDNT1D /// T: uint, long, ulong public static unsafe Vector GatherLoadVectorNonTemporal(const T *base, Vector offsets); // LDNT1W or LDNT1D /// T: [double, long], [ulong, long], [double, ulong], [long, ulong] public static unsafe Vector GatherLoadVectorNonTemporal(const T *base, Vector indices); // LDNT1D /// T: long, ulong public static unsafe Vector GatherLoadVectorNonTemporal(const T *base, Vector indices); // LDNT1D /// T: [float, uint], [int, uint], [double, ulong], [long, ulong] public static unsafe Vector GatherLoadVectorNonTemporal(Vector bases, long offset); // LDNT1W or LDNT1D /// T: uint, ulong public static unsafe Vector GatherLoadVectorNonTemporal(Vector bases, long offset); // LDNT1W or LDNT1D /// T: [float, uint], [int, uint], [double, ulong], [long, ulong] public static unsafe Vector GatherLoadVectorNonTemporal(Vector bases, long index); // LDNT1W or LDNT1D /// T: uint, ulong public static unsafe Vector GatherLoadVectorNonTemporal(Vector bases, long index); // LDNT1W or LDNT1D /// total method signatures: 62 } ```
Author: a74nh
Assignees: -
Labels: `area-System.Numerics`
Milestone: -
a74nh commented 1 year ago

/// Full API
public abstract partial class Sve2 : AdvSimd /// Feature: FEAT_SVE2  Category: gatherloads
{
    /// GatherVectorByteZeroExtendNonTemporal : Load 8-bit data and zero-extend, non-temporal

    /// svint32_t svldnt1ub_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) : "LDNT1B Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<int> GatherVectorByteZeroExtendNonTemporal(Vector<int> mask, Vector<uint> addresses);

    /// svuint32_t svldnt1ub_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) : "LDNT1B Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<uint> GatherVectorByteZeroExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses);

    /// svint64_t svldnt1ub_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) : "LDNT1B Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<long> GatherVectorByteZeroExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses);

    /// svuint64_t svldnt1ub_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) : "LDNT1B Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<ulong> GatherVectorByteZeroExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses);

    /// svint32_t svldnt1ub_gather_[u32]offset_s32(svbool_t pg, const uint8_t *base, svuint32_t offsets) : "LDNT1B Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<int> GatherVectorByteZeroExtendNonTemporal(Vector<int> mask, byte* address, Vector<uint> offsets);

    /// svuint32_t svldnt1ub_gather_[u32]offset_u32(svbool_t pg, const uint8_t *base, svuint32_t offsets) : "LDNT1B Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<uint> GatherVectorByteZeroExtendNonTemporal(Vector<uint> mask, byte* address, Vector<uint> offsets);

    /// svint64_t svldnt1ub_gather_[s64]offset_s64(svbool_t pg, const uint8_t *base, svint64_t offsets) : "LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorByteZeroExtendNonTemporal(Vector<long> mask, byte* address, Vector<long> offsets);

    /// svuint64_t svldnt1ub_gather_[s64]offset_u64(svbool_t pg, const uint8_t *base, svint64_t offsets) : "LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorByteZeroExtendNonTemporal(Vector<ulong> mask, byte* address, Vector<long> offsets);

    /// svint64_t svldnt1ub_gather_[u64]offset_s64(svbool_t pg, const uint8_t *base, svuint64_t offsets) : "LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorByteZeroExtendNonTemporal(Vector<long> mask, byte* address, Vector<ulong> offsets);

    /// svuint64_t svldnt1ub_gather_[u64]offset_u64(svbool_t pg, const uint8_t *base, svuint64_t offsets) : "LDNT1B Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorByteZeroExtendNonTemporal(Vector<ulong> mask, byte* address, Vector<ulong> offsets);

    /// GatherVectorInt16SignExtendNonTemporal : Load 16-bit data and sign-extend, non-temporal

    /// svint32_t svldnt1sh_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) : "LDNT1SH Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<int> GatherVectorInt16SignExtendNonTemporal(Vector<int> mask, Vector<uint> addresses);

    /// svuint32_t svldnt1sh_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) : "LDNT1SH Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<uint> GatherVectorInt16SignExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses);

    /// svint64_t svldnt1sh_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) : "LDNT1SH Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<long> GatherVectorInt16SignExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses);

    /// svuint64_t svldnt1sh_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) : "LDNT1SH Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<ulong> GatherVectorInt16SignExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses);

    /// svint64_t svldnt1sh_gather_[s64]index_s64(svbool_t pg, const int16_t *base, svint64_t indices) : "LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorInt16SignExtendNonTemporal(Vector<long> mask, short* address, Vector<long> indices);

    /// svuint64_t svldnt1sh_gather_[s64]index_u64(svbool_t pg, const int16_t *base, svint64_t indices) : "LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorInt16SignExtendNonTemporal(Vector<ulong> mask, short* address, Vector<long> indices);

    /// svint64_t svldnt1sh_gather_[u64]index_s64(svbool_t pg, const int16_t *base, svuint64_t indices) : "LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorInt16SignExtendNonTemporal(Vector<long> mask, short* address, Vector<ulong> indices);

    /// svuint64_t svldnt1sh_gather_[u64]index_u64(svbool_t pg, const int16_t *base, svuint64_t indices) : "LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorInt16SignExtendNonTemporal(Vector<ulong> mask, short* address, Vector<ulong> indices);

    /// GatherVectorInt16WithByteOffsetsSignExtendNonTemporal : Load 16-bit data and sign-extend, non-temporal

    /// svint32_t svldnt1sh_gather_[u32]offset_s32(svbool_t pg, const int16_t *base, svuint32_t offsets) : "LDNT1SH Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<int> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<int> mask, short* address, Vector<uint> offsets);

    /// svuint32_t svldnt1sh_gather_[u32]offset_u32(svbool_t pg, const int16_t *base, svuint32_t offsets) : "LDNT1SH Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<uint> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<uint> mask, short* address, Vector<uint> offsets);

    /// svint64_t svldnt1sh_gather_[s64]offset_s64(svbool_t pg, const int16_t *base, svint64_t offsets) : "LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<long> mask, short* address, Vector<long> offsets);

    /// svuint64_t svldnt1sh_gather_[s64]offset_u64(svbool_t pg, const int16_t *base, svint64_t offsets) : "LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<ulong> mask, short* address, Vector<long> offsets);

    /// svint64_t svldnt1sh_gather_[u64]offset_s64(svbool_t pg, const int16_t *base, svuint64_t offsets) : "LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<long> mask, short* address, Vector<ulong> offsets);

    /// svuint64_t svldnt1sh_gather_[u64]offset_u64(svbool_t pg, const int16_t *base, svuint64_t offsets) : "LDNT1SH Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<ulong> mask, short* address, Vector<ulong> offsets);

    /// GatherVectorInt32SignExtendNonTemporal : Load 32-bit data and sign-extend, non-temporal

    /// svint64_t svldnt1sw_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) : "LDNT1SW Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<long> GatherVectorInt32SignExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses);

    /// svint64_t svldnt1sw_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) : "LDNT1SW Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<int> GatherVectorInt32SignExtendNonTemporal(Vector<int> mask, Vector<uint> addresses);

    /// svuint64_t svldnt1sw_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) : "LDNT1SW Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<ulong> GatherVectorInt32SignExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses);

    /// svuint64_t svldnt1sw_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) : "LDNT1SW Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<uint> GatherVectorInt32SignExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses);

    /// svint64_t svldnt1sw_gather_[s64]index_s64(svbool_t pg, const int32_t *base, svint64_t indices) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorInt32SignExtendNonTemporal(Vector<long> mask, int* address, Vector<long> indices);

    /// svint64_t svldnt1sw_gather_[s64]index_s64(svbool_t pg, const int32_t *base, svint64_t indices) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<int> GatherVectorInt32SignExtendNonTemporal(Vector<int> mask, int* address, Vector<int> indices);

    /// svuint64_t svldnt1sw_gather_[s64]index_u64(svbool_t pg, const int32_t *base, svint64_t indices) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorInt32SignExtendNonTemporal(Vector<ulong> mask, int* address, Vector<long> indices);

    /// svuint64_t svldnt1sw_gather_[s64]index_u64(svbool_t pg, const int32_t *base, svint64_t indices) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<uint> GatherVectorInt32SignExtendNonTemporal(Vector<uint> mask, int* address, Vector<int> indices);

    /// svint64_t svldnt1sw_gather_[u64]index_s64(svbool_t pg, const int32_t *base, svuint64_t indices) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorInt32SignExtendNonTemporal(Vector<long> mask, int* address, Vector<ulong> indices);

    /// svint64_t svldnt1sw_gather_[u64]index_s64(svbool_t pg, const int32_t *base, svuint64_t indices) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<int> GatherVectorInt32SignExtendNonTemporal(Vector<int> mask, int* address, Vector<uint> indices);

    /// svuint64_t svldnt1sw_gather_[u64]index_u64(svbool_t pg, const int32_t *base, svuint64_t indices) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorInt32SignExtendNonTemporal(Vector<ulong> mask, int* address, Vector<ulong> indices);

    /// svuint64_t svldnt1sw_gather_[u64]index_u64(svbool_t pg, const int32_t *base, svuint64_t indices) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<uint> GatherVectorInt32SignExtendNonTemporal(Vector<uint> mask, int* address, Vector<uint> indices);

    /// GatherVectorInt32WithByteOffsetsSignExtendNonTemporal : Load 32-bit data and sign-extend, non-temporal

    /// svint64_t svldnt1sw_gather_[s64]offset_s64(svbool_t pg, const int32_t *base, svint64_t offsets) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<long> mask, int* address, Vector<long> offsets);

    /// svint64_t svldnt1sw_gather_[s64]offset_s64(svbool_t pg, const int32_t *base, svint64_t offsets) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<int> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<int> mask, int* address, Vector<int> offsets);

    /// svuint64_t svldnt1sw_gather_[s64]offset_u64(svbool_t pg, const int32_t *base, svint64_t offsets) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<ulong> mask, int* address, Vector<long> offsets);

    /// svuint64_t svldnt1sw_gather_[s64]offset_u64(svbool_t pg, const int32_t *base, svint64_t offsets) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<uint> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<uint> mask, int* address, Vector<int> offsets);

    /// svint64_t svldnt1sw_gather_[u64]offset_s64(svbool_t pg, const int32_t *base, svuint64_t offsets) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<long> mask, int* address, Vector<ulong> offsets);

    /// svint64_t svldnt1sw_gather_[u64]offset_s64(svbool_t pg, const int32_t *base, svuint64_t offsets) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<int> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<int> mask, int* address, Vector<uint> offsets);

    /// svuint64_t svldnt1sw_gather_[u64]offset_u64(svbool_t pg, const int32_t *base, svuint64_t offsets) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<ulong> mask, int* address, Vector<ulong> offsets);

    /// svuint64_t svldnt1sw_gather_[u64]offset_u64(svbool_t pg, const int32_t *base, svuint64_t offsets) : "LDNT1SW Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<uint> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<uint> mask, int* address, Vector<uint> offsets);

    /// GatherVectorNonTemporal : Unextended load, non-temporal

    /// svfloat32_t svldnt1_gather[_u32base]_f32(svbool_t pg, svuint32_t bases) : "LDNT1W Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<float> GatherVectorNonTemporal(Vector<float> mask, Vector<uint> addresses);

    /// svint32_t svldnt1_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) : "LDNT1W Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<int> GatherVectorNonTemporal(Vector<int> mask, Vector<uint> addresses);

    /// svuint32_t svldnt1_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) : "LDNT1W Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<uint> GatherVectorNonTemporal(Vector<uint> mask, Vector<uint> addresses);

    /// svfloat64_t svldnt1_gather[_u64base]_f64(svbool_t pg, svuint64_t bases) : "LDNT1D Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<double> GatherVectorNonTemporal(Vector<double> mask, Vector<ulong> addresses);

    /// svint64_t svldnt1_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) : "LDNT1D Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<long> GatherVectorNonTemporal(Vector<long> mask, Vector<ulong> addresses);

    /// svuint64_t svldnt1_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) : "LDNT1D Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<ulong> GatherVectorNonTemporal(Vector<ulong> mask, Vector<ulong> addresses);

    /// svfloat32_t svldnt1_gather_[u32]offset[_f32](svbool_t pg, const float32_t *base, svuint32_t offsets) : "LDNT1W Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<float> GatherVectorNonTemporal(Vector<float> mask, float* address, Vector<uint> offsets);

    /// svint32_t svldnt1_gather_[u32]offset[_s32](svbool_t pg, const int32_t *base, svuint32_t offsets) : "LDNT1W Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<int> GatherVectorNonTemporal(Vector<int> mask, int* address, Vector<uint> offsets);

    /// svuint32_t svldnt1_gather_[u32]offset[_u32](svbool_t pg, const uint32_t *base, svuint32_t offsets) : "LDNT1W Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<uint> GatherVectorNonTemporal(Vector<uint> mask, uint* address, Vector<uint> offsets);

    /// svfloat64_t svldnt1_gather_[s64]offset[_f64](svbool_t pg, const float64_t *base, svint64_t offsets) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<double> GatherVectorNonTemporal(Vector<double> mask, double* address, Vector<long> offsets);

    /// svint64_t svldnt1_gather_[s64]offset[_s64](svbool_t pg, const int64_t *base, svint64_t offsets) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorNonTemporal(Vector<long> mask, long* address, Vector<long> offsets);

    /// svuint64_t svldnt1_gather_[s64]offset[_u64](svbool_t pg, const uint64_t *base, svint64_t offsets) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorNonTemporal(Vector<ulong> mask, ulong* address, Vector<long> offsets);

    /// svfloat64_t svldnt1_gather_[u64]offset[_f64](svbool_t pg, const float64_t *base, svuint64_t offsets) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<double> GatherVectorNonTemporal(Vector<double> mask, double* address, Vector<ulong> offsets);

    /// svint64_t svldnt1_gather_[u64]offset[_s64](svbool_t pg, const int64_t *base, svuint64_t offsets) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorNonTemporal(Vector<long> mask, long* address, Vector<ulong> offsets);

    /// svuint64_t svldnt1_gather_[u64]offset[_u64](svbool_t pg, const uint64_t *base, svuint64_t offsets) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorNonTemporal(Vector<ulong> mask, ulong* address, Vector<ulong> offsets);

    /// svfloat64_t svldnt1_gather_[s64]index[_f64](svbool_t pg, const float64_t *base, svint64_t indices) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<double> GatherVectorNonTemporal(Vector<double> mask, double* address, Vector<long> indices);

    /// svint64_t svldnt1_gather_[s64]index[_s64](svbool_t pg, const int64_t *base, svint64_t indices) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorNonTemporal(Vector<long> mask, long* address, Vector<long> indices);

    /// svuint64_t svldnt1_gather_[s64]index[_u64](svbool_t pg, const uint64_t *base, svint64_t indices) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorNonTemporal(Vector<ulong> mask, ulong* address, Vector<long> indices);

    /// svfloat64_t svldnt1_gather_[u64]index[_f64](svbool_t pg, const float64_t *base, svuint64_t indices) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<double> GatherVectorNonTemporal(Vector<double> mask, double* address, Vector<ulong> indices);

    /// svint64_t svldnt1_gather_[u64]index[_s64](svbool_t pg, const int64_t *base, svuint64_t indices) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorNonTemporal(Vector<long> mask, long* address, Vector<ulong> indices);

    /// svuint64_t svldnt1_gather_[u64]index[_u64](svbool_t pg, const uint64_t *base, svuint64_t indices) : "LDNT1D Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorNonTemporal(Vector<ulong> mask, ulong* address, Vector<ulong> indices);

    /// GatherVectorSByteSignExtendNonTemporal : Load 8-bit data and sign-extend, non-temporal

    /// svint32_t svldnt1sb_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) : "LDNT1SB Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<int> GatherVectorSByteSignExtendNonTemporal(Vector<int> mask, Vector<uint> addresses);

    /// svuint32_t svldnt1sb_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) : "LDNT1SB Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<uint> GatherVectorSByteSignExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses);

    /// svint64_t svldnt1sb_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) : "LDNT1SB Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<long> GatherVectorSByteSignExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses);

    /// svuint64_t svldnt1sb_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) : "LDNT1SB Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<ulong> GatherVectorSByteSignExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses);

    /// svint32_t svldnt1sb_gather_[u32]offset_s32(svbool_t pg, const int8_t *base, svuint32_t offsets) : "LDNT1SB Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<int> GatherVectorSByteSignExtendNonTemporal(Vector<int> mask, sbyte* address, Vector<uint> offsets);

    /// svuint32_t svldnt1sb_gather_[u32]offset_u32(svbool_t pg, const int8_t *base, svuint32_t offsets) : "LDNT1SB Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<uint> GatherVectorSByteSignExtendNonTemporal(Vector<uint> mask, sbyte* address, Vector<uint> offsets);

    /// svint64_t svldnt1sb_gather_[s64]offset_s64(svbool_t pg, const int8_t *base, svint64_t offsets) : "LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorSByteSignExtendNonTemporal(Vector<long> mask, sbyte* address, Vector<long> offsets);

    /// svuint64_t svldnt1sb_gather_[s64]offset_u64(svbool_t pg, const int8_t *base, svint64_t offsets) : "LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorSByteSignExtendNonTemporal(Vector<ulong> mask, sbyte* address, Vector<long> offsets);

    /// svint64_t svldnt1sb_gather_[u64]offset_s64(svbool_t pg, const int8_t *base, svuint64_t offsets) : "LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorSByteSignExtendNonTemporal(Vector<long> mask, sbyte* address, Vector<ulong> offsets);

    /// svuint64_t svldnt1sb_gather_[u64]offset_u64(svbool_t pg, const int8_t *base, svuint64_t offsets) : "LDNT1SB Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorSByteSignExtendNonTemporal(Vector<ulong> mask, sbyte* address, Vector<ulong> offsets);

    /// GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal : Load 16-bit data and zero-extend, non-temporal

    /// svint32_t svldnt1uh_gather_[u32]offset_s32(svbool_t pg, const uint16_t *base, svuint32_t offsets) : "LDNT1H Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<int> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<int> mask, ushort* address, Vector<uint> offsets);

    /// svuint32_t svldnt1uh_gather_[u32]offset_u32(svbool_t pg, const uint16_t *base, svuint32_t offsets) : "LDNT1H Zresult.S, Pg/Z, [Zoffsets.S, Xbase]"
  public static unsafe Vector<uint> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<uint> mask, ushort* address, Vector<uint> offsets);

    /// svint64_t svldnt1uh_gather_[s64]offset_s64(svbool_t pg, const uint16_t *base, svint64_t offsets) : "LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<long> mask, ushort* address, Vector<long> offsets);

    /// svuint64_t svldnt1uh_gather_[s64]offset_u64(svbool_t pg, const uint16_t *base, svint64_t offsets) : "LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<ulong> mask, ushort* address, Vector<long> offsets);

    /// svint64_t svldnt1uh_gather_[u64]offset_s64(svbool_t pg, const uint16_t *base, svuint64_t offsets) : "LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<long> mask, ushort* address, Vector<ulong> offsets);

    /// svuint64_t svldnt1uh_gather_[u64]offset_u64(svbool_t pg, const uint16_t *base, svuint64_t offsets) : "LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<ulong> mask, ushort* address, Vector<ulong> offsets);

    /// GatherVectorUInt16ZeroExtendNonTemporal : Load 16-bit data and zero-extend, non-temporal

    /// svint32_t svldnt1uh_gather[_u32base]_s32(svbool_t pg, svuint32_t bases) : "LDNT1H Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<int> GatherVectorUInt16ZeroExtendNonTemporal(Vector<int> mask, Vector<uint> addresses);

    /// svuint32_t svldnt1uh_gather[_u32base]_u32(svbool_t pg, svuint32_t bases) : "LDNT1H Zresult.S, Pg/Z, [Zbases.S, XZR]"
  public static unsafe Vector<uint> GatherVectorUInt16ZeroExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses);

    /// svint64_t svldnt1uh_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) : "LDNT1H Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<long> GatherVectorUInt16ZeroExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses);

    /// svuint64_t svldnt1uh_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) : "LDNT1H Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<ulong> GatherVectorUInt16ZeroExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses);

    /// svint64_t svldnt1uh_gather_[s64]index_s64(svbool_t pg, const uint16_t *base, svint64_t indices) : "LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorUInt16ZeroExtendNonTemporal(Vector<long> mask, ushort* address, Vector<long> indices);

    /// svuint64_t svldnt1uh_gather_[s64]index_u64(svbool_t pg, const uint16_t *base, svint64_t indices) : "LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorUInt16ZeroExtendNonTemporal(Vector<ulong> mask, ushort* address, Vector<long> indices);

    /// svint64_t svldnt1uh_gather_[u64]index_s64(svbool_t pg, const uint16_t *base, svuint64_t indices) : "LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorUInt16ZeroExtendNonTemporal(Vector<long> mask, ushort* address, Vector<ulong> indices);

    /// svuint64_t svldnt1uh_gather_[u64]index_u64(svbool_t pg, const uint16_t *base, svuint64_t indices) : "LDNT1H Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorUInt16ZeroExtendNonTemporal(Vector<ulong> mask, ushort* address, Vector<ulong> indices);

    /// GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal : Load 32-bit data and zero-extend, non-temporal

    /// svint64_t svldnt1uw_gather_[s64]offset_s64(svbool_t pg, const uint32_t *base, svint64_t offsets) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<long> mask, uint* address, Vector<long> offsets);

    /// svint64_t svldnt1uw_gather_[s64]offset_s64(svbool_t pg, const uint32_t *base, svint64_t offsets) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<int> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<int> mask, uint* address, Vector<int> offsets);

    /// svuint64_t svldnt1uw_gather_[s64]offset_u64(svbool_t pg, const uint32_t *base, svint64_t offsets) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<ulong> mask, uint* address, Vector<long> offsets);

    /// svuint64_t svldnt1uw_gather_[s64]offset_u64(svbool_t pg, const uint32_t *base, svint64_t offsets) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<uint> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<uint> mask, uint* address, Vector<int> offsets);

    /// svint64_t svldnt1uw_gather_[u64]offset_s64(svbool_t pg, const uint32_t *base, svuint64_t offsets) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<long> mask, uint* address, Vector<ulong> offsets);

    /// svint64_t svldnt1uw_gather_[u64]offset_s64(svbool_t pg, const uint32_t *base, svuint64_t offsets) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<int> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<int> mask, uint* address, Vector<uint> offsets);

    /// svuint64_t svldnt1uw_gather_[u64]offset_u64(svbool_t pg, const uint32_t *base, svuint64_t offsets) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<ulong> mask, uint* address, Vector<ulong> offsets);

    /// svuint64_t svldnt1uw_gather_[u64]offset_u64(svbool_t pg, const uint32_t *base, svuint64_t offsets) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<uint> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<uint> mask, uint* address, Vector<uint> offsets);

    /// GatherVectorUInt32ZeroExtendNonTemporal : Load 32-bit data and zero-extend, non-temporal

    /// svint64_t svldnt1uw_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) : "LDNT1W Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<long> GatherVectorUInt32ZeroExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses);

    /// svint64_t svldnt1uw_gather[_u64base]_s64(svbool_t pg, svuint64_t bases) : "LDNT1W Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<int> GatherVectorUInt32ZeroExtendNonTemporal(Vector<int> mask, Vector<uint> addresses);

    /// svuint64_t svldnt1uw_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) : "LDNT1W Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<ulong> GatherVectorUInt32ZeroExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses);

    /// svuint64_t svldnt1uw_gather[_u64base]_u64(svbool_t pg, svuint64_t bases) : "LDNT1W Zresult.D, Pg/Z, [Zbases.D, XZR]"
  public static unsafe Vector<uint> GatherVectorUInt32ZeroExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses);

    /// svint64_t svldnt1uw_gather_[s64]index_s64(svbool_t pg, const uint32_t *base, svint64_t indices) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorUInt32ZeroExtendNonTemporal(Vector<long> mask, uint* address, Vector<long> indices);

    /// svint64_t svldnt1uw_gather_[s64]index_s64(svbool_t pg, const uint32_t *base, svint64_t indices) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<int> GatherVectorUInt32ZeroExtendNonTemporal(Vector<int> mask, uint* address, Vector<int> indices);

    /// svuint64_t svldnt1uw_gather_[s64]index_u64(svbool_t pg, const uint32_t *base, svint64_t indices) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorUInt32ZeroExtendNonTemporal(Vector<ulong> mask, uint* address, Vector<long> indices);

    /// svuint64_t svldnt1uw_gather_[s64]index_u64(svbool_t pg, const uint32_t *base, svint64_t indices) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<uint> GatherVectorUInt32ZeroExtendNonTemporal(Vector<uint> mask, uint* address, Vector<int> indices);

    /// svint64_t svldnt1uw_gather_[u64]index_s64(svbool_t pg, const uint32_t *base, svuint64_t indices) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<long> GatherVectorUInt32ZeroExtendNonTemporal(Vector<long> mask, uint* address, Vector<ulong> indices);

    /// svint64_t svldnt1uw_gather_[u64]index_s64(svbool_t pg, const uint32_t *base, svuint64_t indices) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<int> GatherVectorUInt32ZeroExtendNonTemporal(Vector<int> mask, uint* address, Vector<uint> indices);

    /// svuint64_t svldnt1uw_gather_[u64]index_u64(svbool_t pg, const uint32_t *base, svuint64_t indices) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<ulong> GatherVectorUInt32ZeroExtendNonTemporal(Vector<ulong> mask, uint* address, Vector<ulong> indices);

    /// svuint64_t svldnt1uw_gather_[u64]index_u64(svbool_t pg, const uint32_t *base, svuint64_t indices) : "LDNT1W Zresult.D, Pg/Z, [Zoffsets.D, Xbase]"
  public static unsafe Vector<uint> GatherVectorUInt32ZeroExtendNonTemporal(Vector<uint> mask, uint* address, Vector<uint> indices);

  /// total method signatures: 109
  /// total method names:      11
}
a74nh commented 1 year ago

  /// Rejected:
  ///   public static unsafe Vector<int> GatherVectorByteZeroExtendNonTemporal(Vector<int> mask, Vector<uint> addresses, long offset); // svldnt1ub_gather[_u32base]_offset_s32
  ///   public static unsafe Vector<uint> GatherVectorByteZeroExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses, long offset); // svldnt1ub_gather[_u32base]_offset_u32
  ///   public static unsafe Vector<long> GatherVectorByteZeroExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses, long offset); // svldnt1ub_gather[_u64base]_offset_s64
  ///   public static unsafe Vector<ulong> GatherVectorByteZeroExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long offset); // svldnt1ub_gather[_u64base]_offset_u64
  ///   public static unsafe Vector<int> GatherVectorInt16SignExtendNonTemporal(Vector<int> mask, Vector<uint> addresses, long index); // svldnt1sh_gather[_u32base]_index_s32
  ///   public static unsafe Vector<uint> GatherVectorInt16SignExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses, long index); // svldnt1sh_gather[_u32base]_index_u32
  ///   public static unsafe Vector<long> GatherVectorInt16SignExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses, long index); // svldnt1sh_gather[_u64base]_index_s64
  ///   public static unsafe Vector<ulong> GatherVectorInt16SignExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long index); // svldnt1sh_gather[_u64base]_index_u64
  ///   public static unsafe Vector<int> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<int> mask, Vector<uint> addresses, long offset); // svldnt1sh_gather[_u32base]_offset_s32
  ///   public static unsafe Vector<uint> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses, long offset); // svldnt1sh_gather[_u32base]_offset_u32
  ///   public static unsafe Vector<long> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses, long offset); // svldnt1sh_gather[_u64base]_offset_s64
  ///   public static unsafe Vector<ulong> GatherVectorInt16WithByteOffsetsSignExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long offset); // svldnt1sh_gather[_u64base]_offset_u64
  ///   public static unsafe Vector<long> GatherVectorInt32SignExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses, long index); // svldnt1sw_gather[_u64base]_index_s64
  ///   public static unsafe Vector<int> GatherVectorInt32SignExtendNonTemporal(Vector<int> mask, Vector<uint> addresses, long index); // svldnt1sw_gather[_u64base]_index_s64
  ///   public static unsafe Vector<ulong> GatherVectorInt32SignExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long index); // svldnt1sw_gather[_u64base]_index_u64
  ///   public static unsafe Vector<uint> GatherVectorInt32SignExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses, long index); // svldnt1sw_gather[_u64base]_index_u64
  ///   public static unsafe Vector<long> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses, long offset); // svldnt1sw_gather[_u64base]_offset_s64
  ///   public static unsafe Vector<int> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<int> mask, Vector<uint> addresses, long offset); // svldnt1sw_gather[_u64base]_offset_s64
  ///   public static unsafe Vector<ulong> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long offset); // svldnt1sw_gather[_u64base]_offset_u64
  ///   public static unsafe Vector<uint> GatherVectorInt32WithByteOffsetsSignExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses, long offset); // svldnt1sw_gather[_u64base]_offset_u64
  ///   public static unsafe Vector<float> GatherVectorNonTemporal(Vector<float> mask, Vector<uint> addresses, long offset); // svldnt1_gather[_u32base]_offset_f32
  ///   public static unsafe Vector<int> GatherVectorNonTemporal(Vector<int> mask, Vector<uint> addresses, long offset); // svldnt1_gather[_u32base]_offset_s32
  ///   public static unsafe Vector<uint> GatherVectorNonTemporal(Vector<uint> mask, Vector<uint> addresses, long offset); // svldnt1_gather[_u32base]_offset_u32
  ///   public static unsafe Vector<double> GatherVectorNonTemporal(Vector<double> mask, Vector<ulong> addresses, long offset); // svldnt1_gather[_u64base]_offset_f64
  ///   public static unsafe Vector<long> GatherVectorNonTemporal(Vector<long> mask, Vector<ulong> addresses, long offset); // svldnt1_gather[_u64base]_offset_s64
  ///   public static unsafe Vector<ulong> GatherVectorNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long offset); // svldnt1_gather[_u64base]_offset_u64
  ///   public static unsafe Vector<float> GatherVectorNonTemporal(Vector<float> mask, Vector<uint> addresses, long index); // svldnt1_gather[_u32base]_index_f32
  ///   public static unsafe Vector<int> GatherVectorNonTemporal(Vector<int> mask, Vector<uint> addresses, long index); // svldnt1_gather[_u32base]_index_s32
  ///   public static unsafe Vector<uint> GatherVectorNonTemporal(Vector<uint> mask, Vector<uint> addresses, long index); // svldnt1_gather[_u32base]_index_u32
  ///   public static unsafe Vector<double> GatherVectorNonTemporal(Vector<double> mask, Vector<ulong> addresses, long index); // svldnt1_gather[_u64base]_index_f64
  ///   public static unsafe Vector<long> GatherVectorNonTemporal(Vector<long> mask, Vector<ulong> addresses, long index); // svldnt1_gather[_u64base]_index_s64
  ///   public static unsafe Vector<ulong> GatherVectorNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long index); // svldnt1_gather[_u64base]_index_u64
  ///   public static unsafe Vector<int> GatherVectorSByteSignExtendNonTemporal(Vector<int> mask, Vector<uint> addresses, long offset); // svldnt1sb_gather[_u32base]_offset_s32
  ///   public static unsafe Vector<uint> GatherVectorSByteSignExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses, long offset); // svldnt1sb_gather[_u32base]_offset_u32
  ///   public static unsafe Vector<long> GatherVectorSByteSignExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses, long offset); // svldnt1sb_gather[_u64base]_offset_s64
  ///   public static unsafe Vector<ulong> GatherVectorSByteSignExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long offset); // svldnt1sb_gather[_u64base]_offset_u64
  ///   public static unsafe Vector<int> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<int> mask, Vector<uint> addresses, long offset); // svldnt1uh_gather[_u32base]_offset_s32
  ///   public static unsafe Vector<uint> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses, long offset); // svldnt1uh_gather[_u32base]_offset_u32
  ///   public static unsafe Vector<long> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses, long offset); // svldnt1uh_gather[_u64base]_offset_s64
  ///   public static unsafe Vector<ulong> GatherVectorUInt16WithByteOffsetsZeroExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long offset); // svldnt1uh_gather[_u64base]_offset_u64
  ///   public static unsafe Vector<int> GatherVectorUInt16ZeroExtendNonTemporal(Vector<int> mask, Vector<uint> addresses, long index); // svldnt1uh_gather[_u32base]_index_s32
  ///   public static unsafe Vector<uint> GatherVectorUInt16ZeroExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses, long index); // svldnt1uh_gather[_u32base]_index_u32
  ///   public static unsafe Vector<long> GatherVectorUInt16ZeroExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses, long index); // svldnt1uh_gather[_u64base]_index_s64
  ///   public static unsafe Vector<ulong> GatherVectorUInt16ZeroExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long index); // svldnt1uh_gather[_u64base]_index_u64
  ///   public static unsafe Vector<long> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses, long offset); // svldnt1uw_gather[_u64base]_offset_s64
  ///   public static unsafe Vector<int> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<int> mask, Vector<uint> addresses, long offset); // svldnt1uw_gather[_u64base]_offset_s64
  ///   public static unsafe Vector<ulong> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long offset); // svldnt1uw_gather[_u64base]_offset_u64
  ///   public static unsafe Vector<uint> GatherVectorUInt32WithByteOffsetsZeroExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses, long offset); // svldnt1uw_gather[_u64base]_offset_u64
  ///   public static unsafe Vector<long> GatherVectorUInt32ZeroExtendNonTemporal(Vector<long> mask, Vector<ulong> addresses, long index); // svldnt1uw_gather[_u64base]_index_s64
  ///   public static unsafe Vector<int> GatherVectorUInt32ZeroExtendNonTemporal(Vector<int> mask, Vector<uint> addresses, long index); // svldnt1uw_gather[_u64base]_index_s64
  ///   public static unsafe Vector<ulong> GatherVectorUInt32ZeroExtendNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, long index); // svldnt1uw_gather[_u64base]_index_u64
  ///   public static unsafe Vector<uint> GatherVectorUInt32ZeroExtendNonTemporal(Vector<uint> mask, Vector<uint> addresses, long index); // svldnt1uw_gather[_u64base]_index_u64
  ///   Total Rejected: 52

  /// Total ACLE covered across API:      161
a74nh commented 1 year ago

This contributes to https://github.com/dotnet/runtime/issues/93095

It covers instructions in FEAT_SVE2 related to gather loads. They are similar to the SVE gather load methods.

This list was auto generated from the C ACLE for SVE, and is in three parts:

The methods list reduced down to Vector versions. All possible varaints of T are given above the method. The complete list of all methods. The corresponding ACLE methods and SVE instructions are given above the method. All rejected ACLE methods. These are methods we have agreed that do not need including in C#. Where possible, existing C# naming conventions have been matched.

Many of the C functions include predicate argument(s), of type svbool_t as the first argument. These are missing from the C# method. It is expected that the Jit will create predicates where required, or combine with uses of conditionalSelect(). For more discussion see https://github.com/dotnet/runtime/issues/88140 comment.

a74nh commented 1 year ago

Updated to reflect review comments from other API proposals.

ghost commented 9 months ago

Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics See info in area-owners.md if you want to be subscribed.

Issue Details
```csharp namespace System.Runtime.Intrinsics.Arm /// VectorT Summary public abstract class Sve : AdvSimd /// Feature: FEAT_SVE2 Category: gatherloads { /// T: [int, uint], [long, ulong] public static unsafe Vector GatherVectorByteSignExtendNonTemporal(Vector mask, Vector bases); // LDNT1SB /// T: uint, ulong public static unsafe Vector GatherVectorByteSignExtendNonTemporal(Vector mask, Vector bases); // LDNT1SB /// T: [int, uint], [ulong, long], [long, ulong] public static unsafe Vector GatherVectorByteSignExtendNonTemporal(Vector mask, const sbyte *base, Vector offsets); // LDNT1SB /// T: uint, long, ulong public static unsafe Vector GatherVectorByteSignExtendNonTemporal(Vector mask, const sbyte *base, Vector offsets); // LDNT1SB /// T: [int, uint], [long, ulong] public static unsafe Vector GatherVectorByteSignExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1SB /// T: uint, ulong public static unsafe Vector GatherVectorByteSignExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1SB /// T: [int, uint], [long, ulong] public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector bases); // LDNT1B /// T: uint, ulong public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector bases); // LDNT1B /// T: [int, uint], [ulong, long], [long, ulong] public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, const byte *base, Vector offsets); // LDNT1B /// T: uint, long, ulong public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, const byte *base, Vector offsets); // LDNT1B /// T: [int, uint], [long, ulong] public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1B /// T: uint, ulong public static unsafe Vector GatherVectorByteZeroExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1B /// T: [int, uint], [long, ulong] public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector bases); // LDNT1SH /// T: uint, ulong public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector bases); // LDNT1SH /// T: [int, uint], [ulong, long], [long, ulong] public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, const short *base, Vector offsets); // LDNT1SH /// T: uint, long, ulong public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, const short *base, Vector offsets); // LDNT1SH /// T: long, ulong public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, const short *base, Vector indices); // LDNT1SH /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, const short *base, Vector indices); // LDNT1SH /// T: [int, uint], [long, ulong] public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1SH /// T: uint, ulong public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1SH /// T: [int, uint], [long, ulong] public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector bases, long index); // LDNT1SH /// T: uint, ulong public static unsafe Vector GatherVectorInt16SignExtendNonTemporal(Vector mask, Vector bases, long index); // LDNT1SH /// T: [int, uint], [long, ulong] public static unsafe Vector GatherVectorInt16ZeroExtendNonTemporal(Vector mask, Vector bases); // LDNT1H /// T: uint, ulong public static unsafe Vector GatherVectorInt16ZeroExtendNonTemporal(Vector mask, Vector bases); // LDNT1H /// T: [int, uint], [ulong, long], [long, ulong] public static unsafe Vector GatherVectorInt16ZeroExtendNonTemporal(Vector mask, const ushort *base, Vector offsets); // LDNT1H /// T: uint, long, ulong public static unsafe Vector GatherVectorInt16ZeroExtendNonTemporal(Vector mask, const ushort *base, Vector offsets); // LDNT1H /// T: long, ulong public static unsafe Vector GatherVectorInt16ZeroExtendNonTemporal(Vector mask, const ushort *base, Vector indices); // LDNT1H /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherVectorInt16ZeroExtendNonTemporal(Vector mask, const ushort *base, Vector indices); // LDNT1H /// T: [int, uint], [long, ulong] public static unsafe Vector GatherVectorInt16ZeroExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1H /// T: uint, ulong public static unsafe Vector GatherVectorInt16ZeroExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1H /// T: [int, uint], [long, ulong] public static unsafe Vector GatherVectorInt16ZeroExtendNonTemporal(Vector mask, Vector bases, long index); // LDNT1H /// T: uint, ulong public static unsafe Vector GatherVectorInt16ZeroExtendNonTemporal(Vector mask, Vector bases, long index); // LDNT1H public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, Vector bases); // LDNT1SW public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, Vector bases); // LDNT1SW /// T: long, ulong public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, const int *base, Vector offsets); // LDNT1SW /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, const int *base, Vector offsets); // LDNT1SW /// T: long, ulong public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, const int *base, Vector indices); // LDNT1SW /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, const int *base, Vector indices); // LDNT1SW public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1SW public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1SW public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, Vector bases, long index); // LDNT1SW public static unsafe Vector GatherVectorInt32SignExtendNonTemporal(Vector mask, Vector bases, long index); // LDNT1SW public static unsafe Vector GatherVectorInt32ZeroExtendNonTemporal(Vector mask, Vector bases); // LDNT1W public static unsafe Vector GatherVectorInt32ZeroExtendNonTemporal(Vector mask, Vector bases); // LDNT1W /// T: long, ulong public static unsafe Vector GatherVectorInt32ZeroExtendNonTemporal(Vector mask, const uint *base, Vector offsets); // LDNT1W /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherVectorInt32ZeroExtendNonTemporal(Vector mask, const uint *base, Vector offsets); // LDNT1W /// T: long, ulong public static unsafe Vector GatherVectorInt32ZeroExtendNonTemporal(Vector mask, const uint *base, Vector indices); // LDNT1W /// T: [ulong, long], [long, ulong] public static unsafe Vector GatherVectorInt32ZeroExtendNonTemporal(Vector mask, const uint *base, Vector indices); // LDNT1W public static unsafe Vector GatherVectorInt32ZeroExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1W public static unsafe Vector GatherVectorInt32ZeroExtendNonTemporal(Vector mask, Vector bases, long offset); // LDNT1W public static unsafe Vector GatherVectorInt32ZeroExtendNonTemporal(Vector mask, Vector bases, long index); // LDNT1W public static unsafe Vector GatherVectorInt32ZeroExtendNonTemporal(Vector mask, Vector bases, long index); // LDNT1W /// T: [float, uint], [int, uint], [double, ulong], [long, ulong] public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector bases); // LDNT1W or LDNT1D /// T: uint, ulong public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector bases); // LDNT1W or LDNT1D /// T: [float, uint], [int, uint], [double, long], [ulong, long], [double, ulong], [long, ulong] public static unsafe Vector GatherVectorNonTemporal(Vector mask, const T *base, Vector offsets); // LDNT1W or LDNT1D /// T: uint, long, ulong public static unsafe Vector GatherVectorNonTemporal(Vector mask, const T *base, Vector offsets); // LDNT1W or LDNT1D /// T: [double, long], [ulong, long], [double, ulong], [long, ulong] public static unsafe Vector GatherVectorNonTemporal(Vector mask, const T *base, Vector indices); // LDNT1D /// T: long, ulong public static unsafe Vector GatherVectorNonTemporal(Vector mask, const T *base, Vector indices); // LDNT1D /// T: [float, uint], [int, uint], [double, ulong], [long, ulong] public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector bases, long offset); // LDNT1W or LDNT1D /// T: uint, ulong public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector bases, long offset); // LDNT1W or LDNT1D /// T: [float, uint], [int, uint], [double, ulong], [long, ulong] public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector bases, long index); // LDNT1W or LDNT1D /// T: uint, ulong public static unsafe Vector GatherVectorNonTemporal(Vector mask, Vector bases, long index); // LDNT1W or LDNT1D /// total method signatures: 62 } ```
Author: a74nh
Assignees: -
Labels: `area-System.Runtime.Intrinsics`, `untriaged`, `api-ready-for-review`
Milestone: -
a74nh commented 3 months ago

Updated to match implemented SVE1 methods.