-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[API Proposal]: Arm64: FEAT_SVE2: scatter stores #94023
Comments
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics Issue Detailsnamespace System.Runtime.Intrinsics.Arm
/// VectorT Summary
public abstract class Sve : AdvSimd /// Feature: FEAT_SVE2 Category: scatterstores
{
/// T: [uint, float], [uint, int], [ulong, double], [ulong, long]
public static unsafe void ScatterStoreVectorNonTemporal(Vector<T> bases, Vector<T2> data); // STNT1W or STNT1D
/// T: uint, ulong
public static unsafe void ScatterStoreVectorNonTemporal(Vector<T> bases, Vector<T> data); // STNT1W or STNT1D
/// T: [uint, float], [uint, int], [long, double], [long, ulong], [ulong, double], [ulong, long]
public static unsafe void ScatterStoreVectorNonTemporal(T2 *base, Vector<T> offsets, Vector<T2> data); // STNT1W or STNT1D
/// T: uint, long, ulong
public static unsafe void ScatterStoreVectorNonTemporal(T *base, Vector<T> offsets, Vector<T> data); // STNT1W or STNT1D
/// T: [long, double], [long, ulong], [ulong, double], [ulong, long]
public static unsafe void ScatterStoreVectorNonTemporal(T2 *base, Vector<T> indices, Vector<T2> data); // STNT1D
/// T: long, ulong
public static unsafe void ScatterStoreVectorNonTemporal(T *base, Vector<T> indices, Vector<T> data); // STNT1D
/// T: [uint, float], [uint, int], [ulong, double], [ulong, long]
public static unsafe void ScatterStoreVectorNonTemporal(Vector<T> bases, long offset, Vector<T2> data); // STNT1W or STNT1D
/// T: uint, ulong
public static unsafe void ScatterStoreVectorNonTemporal(Vector<T> bases, long offset, Vector<T> data); // STNT1W or STNT1D
/// T: [uint, float], [uint, int], [ulong, double], [ulong, long]
public static unsafe void ScatterStoreVectorNonTemporal(Vector<T> bases, long index, Vector<T2> data); // STNT1W or STNT1D
/// T: uint, ulong
public static unsafe void ScatterStoreVectorNonTemporal(Vector<T> bases, long index, Vector<T> data); // STNT1W or STNT1D
/// T: [uint, int], [ulong, long]
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(Vector<T> bases, Vector<T2> data); // STNT1H
/// T: uint, ulong
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(Vector<T> bases, Vector<T> data); // STNT1H
/// T: [uint, int], [ulong, long]
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(short *base, Vector<T> offsets, Vector<T2> data); // STNT1H
/// T: uint, ulong
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(ushort *base, Vector<T> offsets, Vector<T> data); // STNT1H
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(short *base, Vector<long> offsets, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(ushort *base, Vector<long> offsets, Vector<ulong> data);
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(short *base, Vector<long> indices, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(ushort *base, Vector<long> indices, Vector<ulong> data);
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(short *base, Vector<ulong> indices, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(ushort *base, Vector<ulong> indices, Vector<ulong> data);
/// T: [uint, int], [ulong, long]
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(Vector<T> bases, long offset, Vector<T2> data); // STNT1H
/// T: uint, ulong
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(Vector<T> bases, long offset, Vector<T> data); // STNT1H
/// T: [uint, int], [ulong, long]
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(Vector<T> bases, long index, Vector<T2> data); // STNT1H
/// T: uint, ulong
public static unsafe void ScatterStoreVectorTruncate16NonTemporal(Vector<T> bases, long index, Vector<T> data); // STNT1H
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(Vector<ulong> bases, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(Vector<ulong> bases, Vector<ulong> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(int *base, Vector<long> offsets, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(uint *base, Vector<long> offsets, Vector<ulong> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(int *base, Vector<ulong> offsets, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(uint *base, Vector<ulong> offsets, Vector<ulong> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(int *base, Vector<long> indices, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(uint *base, Vector<long> indices, Vector<ulong> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(int *base, Vector<ulong> indices, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(uint *base, Vector<ulong> indices, Vector<ulong> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(Vector<ulong> bases, long offset, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(Vector<ulong> bases, long offset, Vector<ulong> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(Vector<ulong> bases, long index, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate32NonTemporal(Vector<ulong> bases, long index, Vector<ulong> data);
/// T: [uint, int], [ulong, long]
public static unsafe void ScatterStoreVectorTruncate8NonTemporal(Vector<T> bases, Vector<T2> data); // STNT1B
/// T: uint, ulong
public static unsafe void ScatterStoreVectorTruncate8NonTemporal(Vector<T> bases, Vector<T> data); // STNT1B
/// T: [uint, int], [ulong, long]
public static unsafe void ScatterStoreVectorTruncate8NonTemporal(sbyte *base, Vector<T> offsets, Vector<T2> data); // STNT1B
/// T: uint, ulong
public static unsafe void ScatterStoreVectorTruncate8NonTemporal(byte *base, Vector<T> offsets, Vector<T> data); // STNT1B
public static unsafe void ScatterStoreVectorTruncate8NonTemporal(sbyte *base, Vector<long> offsets, Vector<long> data);
public static unsafe void ScatterStoreVectorTruncate8NonTemporal(byte *base, Vector<long> offsets, Vector<ulong> data);
/// T: [uint, int], [ulong, long]
public static unsafe void ScatterStoreVectorTruncate8NonTemporal(Vector<T> bases, long offset, Vector<T2> data); // STNT1B
/// T: uint, ulong
public static unsafe void ScatterStoreVectorTruncate8NonTemporal(Vector<T> bases, long offset, Vector<T> data); // STNT1B
/// total method signatures: 46
}
|
/// Full API
public abstract partial class Sve2 : AdvSimd /// Feature: FEAT_SVE2 Category: scatterstores
{
/// Scatter16BitNarrowing : Truncate to 16 bits and store, non-temporal
/// void svstnt1h_scatter[_u32base_s32](svbool_t pg, svuint32_t bases, svint32_t data) : "STNT1H Zdata.S, Pg, [Zbases.S, XZR]"
public static unsafe void Scatter16BitNarrowing(Vector<int> mask, Vector<uint> addresses, Vector<int> data);
/// void svstnt1h_scatter[_u32base_u32](svbool_t pg, svuint32_t bases, svuint32_t data) : "STNT1H Zdata.S, Pg, [Zbases.S, XZR]"
public static unsafe void Scatter16BitNarrowing(Vector<uint> mask, Vector<uint> addresses, Vector<uint> data);
/// void svstnt1h_scatter[_u64base_s64](svbool_t pg, svuint64_t bases, svint64_t data) : "STNT1H Zdata.D, Pg, [Zbases.D, XZR]"
public static unsafe void Scatter16BitNarrowing(Vector<long> mask, Vector<ulong> addresses, Vector<long> data);
/// void svstnt1h_scatter[_u64base_u64](svbool_t pg, svuint64_t bases, svuint64_t data) : "STNT1H Zdata.D, Pg, [Zbases.D, XZR]"
public static unsafe void Scatter16BitNarrowing(Vector<ulong> mask, Vector<ulong> addresses, Vector<ulong> data);
/// Scatter16BitWithByteOffsetsNarrowing : Truncate to 16 bits and store, non-temporal
/// void svstnt1h_scatter_[u32]offset[_s32](svbool_t pg, int16_t *base, svuint32_t offsets, svint32_t data) : "STNT1H Zdata.S, Pg, [Zoffsets.S, Xbase]"
public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<int> mask, short* address, Vector<uint> offsets, Vector<int> data);
/// void svstnt1h_scatter_[u32]offset[_u32](svbool_t pg, uint16_t *base, svuint32_t offsets, svuint32_t data) : "STNT1H Zdata.S, Pg, [Zoffsets.S, Xbase]"
public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<uint> mask, ushort* address, Vector<uint> offsets, Vector<uint> data);
/// void svstnt1h_scatter_[s64]offset[_s64](svbool_t pg, int16_t *base, svint64_t offsets, svint64_t data) : "STNT1H Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<long> mask, short* address, Vector<long> offsets, Vector<long> data);
/// void svstnt1h_scatter_[s64]offset[_u64](svbool_t pg, uint16_t *base, svint64_t offsets, svuint64_t data) : "STNT1H Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<ulong> mask, ushort* address, Vector<long> offsets, Vector<ulong> data);
/// void svstnt1h_scatter_[u64]offset[_s64](svbool_t pg, int16_t *base, svuint64_t offsets, svint64_t data) : "STNT1H Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<long> mask, short* address, Vector<ulong> offsets, Vector<long> data);
/// void svstnt1h_scatter_[u64]offset[_u64](svbool_t pg, uint16_t *base, svuint64_t offsets, svuint64_t data) : "STNT1H Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<ulong> mask, ushort* address, Vector<ulong> offsets, Vector<ulong> data);
/// void svstnt1h_scatter_[s64]index[_s64](svbool_t pg, int16_t *base, svint64_t indices, svint64_t data) : "STNT1H Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<long> mask, short* address, Vector<long> indices, Vector<long> data);
/// void svstnt1h_scatter_[s64]index[_u64](svbool_t pg, uint16_t *base, svint64_t indices, svuint64_t data) : "STNT1H Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<ulong> mask, ushort* address, Vector<long> indices, Vector<ulong> data);
/// void svstnt1h_scatter_[u64]index[_s64](svbool_t pg, int16_t *base, svuint64_t indices, svint64_t data) : "STNT1H Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<long> mask, short* address, Vector<ulong> indices, Vector<long> data);
/// void svstnt1h_scatter_[u64]index[_u64](svbool_t pg, uint16_t *base, svuint64_t indices, svuint64_t data) : "STNT1H Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<ulong> mask, ushort* address, Vector<ulong> indices, Vector<ulong> data);
/// Scatter32BitNarrowing : Truncate to 32 bits and store, non-temporal
/// void svstnt1w_scatter[_u64base_s64](svbool_t pg, svuint64_t bases, svint64_t data) : "STNT1W Zdata.D, Pg, [Zbases.D, XZR]"
public static unsafe void Scatter32BitNarrowing(Vector<long> mask, Vector<ulong> addresses, Vector<long> data);
/// void svstnt1w_scatter[_u64base_u64](svbool_t pg, svuint64_t bases, svuint64_t data) : "STNT1W Zdata.D, Pg, [Zbases.D, XZR]"
public static unsafe void Scatter32BitNarrowing(Vector<ulong> mask, Vector<ulong> addresses, Vector<ulong> data);
/// Scatter32BitWithByteOffsetsNarrowing : Truncate to 32 bits and store, non-temporal
/// void svstnt1w_scatter_[s64]offset[_s64](svbool_t pg, int32_t *base, svint64_t offsets, svint64_t data) : "STNT1W Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<long> mask, int* address, Vector<long> offsets, Vector<long> data);
/// void svstnt1w_scatter_[s64]offset[_u64](svbool_t pg, uint32_t *base, svint64_t offsets, svuint64_t data) : "STNT1W Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<ulong> mask, uint* address, Vector<long> offsets, Vector<ulong> data);
/// void svstnt1w_scatter_[u64]offset[_s64](svbool_t pg, int32_t *base, svuint64_t offsets, svint64_t data) : "STNT1W Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<long> mask, int* address, Vector<ulong> offsets, Vector<long> data);
/// void svstnt1w_scatter_[u64]offset[_u64](svbool_t pg, uint32_t *base, svuint64_t offsets, svuint64_t data) : "STNT1W Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<ulong> mask, uint* address, Vector<ulong> offsets, Vector<ulong> data);
/// void svstnt1w_scatter_[s64]index[_s64](svbool_t pg, int32_t *base, svint64_t indices, svint64_t data) : "STNT1W Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<long> mask, int* address, Vector<long> indices, Vector<long> data);
/// void svstnt1w_scatter_[s64]index[_u64](svbool_t pg, uint32_t *base, svint64_t indices, svuint64_t data) : "STNT1W Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<ulong> mask, uint* address, Vector<long> indices, Vector<ulong> data);
/// void svstnt1w_scatter_[u64]index[_s64](svbool_t pg, int32_t *base, svuint64_t indices, svint64_t data) : "STNT1W Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<long> mask, int* address, Vector<ulong> indices, Vector<long> data);
/// void svstnt1w_scatter_[u64]index[_u64](svbool_t pg, uint32_t *base, svuint64_t indices, svuint64_t data) : "STNT1W Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<ulong> mask, uint* address, Vector<ulong> indices, Vector<ulong> data);
/// Scatter8BitNarrowing : Truncate to 8 bits and store, non-temporal
/// void svstnt1b_scatter[_u32base_s32](svbool_t pg, svuint32_t bases, svint32_t data) : "STNT1B Zdata.S, Pg, [Zbases.S, XZR]"
public static unsafe void Scatter8BitNarrowing(Vector<int> mask, Vector<uint> addresses, Vector<int> data);
/// void svstnt1b_scatter[_u32base_u32](svbool_t pg, svuint32_t bases, svuint32_t data) : "STNT1B Zdata.S, Pg, [Zbases.S, XZR]"
public static unsafe void Scatter8BitNarrowing(Vector<uint> mask, Vector<uint> addresses, Vector<uint> data);
/// void svstnt1b_scatter[_u64base_s64](svbool_t pg, svuint64_t bases, svint64_t data) : "STNT1B Zdata.D, Pg, [Zbases.D, XZR]"
public static unsafe void Scatter8BitNarrowing(Vector<long> mask, Vector<ulong> addresses, Vector<long> data);
/// void svstnt1b_scatter[_u64base_u64](svbool_t pg, svuint64_t bases, svuint64_t data) : "STNT1B Zdata.D, Pg, [Zbases.D, XZR]"
public static unsafe void Scatter8BitNarrowing(Vector<ulong> mask, Vector<ulong> addresses, Vector<ulong> data);
/// Scatter8BitWithByteOffsetsNarrowing : Truncate to 8 bits and store, non-temporal
/// void svstnt1b_scatter_[u32]offset[_s32](svbool_t pg, int8_t *base, svuint32_t offsets, svint32_t data) : "STNT1B Zdata.S, Pg, [Zoffsets.S, Xbase]"
public static unsafe void Scatter8BitWithByteOffsetsNarrowing(Vector<int> mask, sbyte* address, Vector<uint> offsets, Vector<int> data);
/// void svstnt1b_scatter_[u32]offset[_u32](svbool_t pg, uint8_t *base, svuint32_t offsets, svuint32_t data) : "STNT1B Zdata.S, Pg, [Zoffsets.S, Xbase]"
public static unsafe void Scatter8BitWithByteOffsetsNarrowing(Vector<uint> mask, byte* address, Vector<uint> offsets, Vector<uint> data);
/// void svstnt1b_scatter_[s64]offset[_s64](svbool_t pg, int8_t *base, svint64_t offsets, svint64_t data) : "STNT1B Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter8BitWithByteOffsetsNarrowing(Vector<long> mask, sbyte* address, Vector<long> offsets, Vector<long> data);
/// void svstnt1b_scatter_[s64]offset[_u64](svbool_t pg, uint8_t *base, svint64_t offsets, svuint64_t data) : "STNT1B Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter8BitWithByteOffsetsNarrowing(Vector<ulong> mask, byte* address, Vector<long> offsets, Vector<ulong> data);
/// void svstnt1b_scatter_[u64]offset[_s64](svbool_t pg, int8_t *base, svuint64_t offsets, svint64_t data) : "STNT1B Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter8BitWithByteOffsetsNarrowing(Vector<long> mask, sbyte* address, Vector<ulong> offsets, Vector<long> data);
/// void svstnt1b_scatter_[u64]offset[_u64](svbool_t pg, uint8_t *base, svuint64_t offsets, svuint64_t data) : "STNT1B Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void Scatter8BitWithByteOffsetsNarrowing(Vector<ulong> mask, byte* address, Vector<ulong> offsets, Vector<ulong> data);
/// ScatterNonTemporal : Non-truncating store, non-temporal
/// void svstnt1_scatter[_u32base_f32](svbool_t pg, svuint32_t bases, svfloat32_t data) : "STNT1W Zdata.S, Pg, [Zbases.S, XZR]"
public static unsafe void ScatterNonTemporal(Vector<float> mask, Vector<uint> addresses, Vector<float> data);
/// void svstnt1_scatter[_u32base_s32](svbool_t pg, svuint32_t bases, svint32_t data) : "STNT1W Zdata.S, Pg, [Zbases.S, XZR]"
public static unsafe void ScatterNonTemporal(Vector<int> mask, Vector<uint> addresses, Vector<int> data);
/// void svstnt1_scatter[_u32base_u32](svbool_t pg, svuint32_t bases, svuint32_t data) : "STNT1W Zdata.S, Pg, [Zbases.S, XZR]"
public static unsafe void ScatterNonTemporal(Vector<uint> mask, Vector<uint> addresses, Vector<uint> data);
/// void svstnt1_scatter[_u64base_f64](svbool_t pg, svuint64_t bases, svfloat64_t data) : "STNT1D Zdata.D, Pg, [Zbases.D, XZR]"
public static unsafe void ScatterNonTemporal(Vector<double> mask, Vector<ulong> addresses, Vector<double> data);
/// void svstnt1_scatter[_u64base_s64](svbool_t pg, svuint64_t bases, svint64_t data) : "STNT1D Zdata.D, Pg, [Zbases.D, XZR]"
public static unsafe void ScatterNonTemporal(Vector<long> mask, Vector<ulong> addresses, Vector<long> data);
/// void svstnt1_scatter[_u64base_u64](svbool_t pg, svuint64_t bases, svuint64_t data) : "STNT1D Zdata.D, Pg, [Zbases.D, XZR]"
public static unsafe void ScatterNonTemporal(Vector<ulong> mask, Vector<ulong> addresses, Vector<ulong> data);
/// void svstnt1_scatter_[u32]offset[_f32](svbool_t pg, float32_t *base, svuint32_t offsets, svfloat32_t data) : "STNT1W Zdata.S, Pg, [Zoffsets.S, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<float> mask, float* base, Vector<uint> offsets, Vector<float> data);
/// void svstnt1_scatter_[u32]offset[_s32](svbool_t pg, int32_t *base, svuint32_t offsets, svint32_t data) : "STNT1W Zdata.S, Pg, [Zoffsets.S, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<int> mask, int* base, Vector<uint> offsets, Vector<int> data);
/// void svstnt1_scatter_[u32]offset[_u32](svbool_t pg, uint32_t *base, svuint32_t offsets, svuint32_t data) : "STNT1W Zdata.S, Pg, [Zoffsets.S, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<uint> mask, uint* base, Vector<uint> offsets, Vector<uint> data);
/// void svstnt1_scatter_[s64]offset[_f64](svbool_t pg, float64_t *base, svint64_t offsets, svfloat64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<double> mask, double* base, Vector<long> offsets, Vector<double> data);
/// void svstnt1_scatter_[s64]offset[_s64](svbool_t pg, int64_t *base, svint64_t offsets, svint64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<long> mask, long* base, Vector<long> offsets, Vector<long> data);
/// void svstnt1_scatter_[s64]offset[_u64](svbool_t pg, uint64_t *base, svint64_t offsets, svuint64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<ulong> mask, ulong* base, Vector<long> offsets, Vector<ulong> data);
/// void svstnt1_scatter_[u64]offset[_f64](svbool_t pg, float64_t *base, svuint64_t offsets, svfloat64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<double> mask, double* base, Vector<ulong> offsets, Vector<double> data);
/// void svstnt1_scatter_[u64]offset[_s64](svbool_t pg, int64_t *base, svuint64_t offsets, svint64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<long> mask, long* base, Vector<ulong> offsets, Vector<long> data);
/// void svstnt1_scatter_[u64]offset[_u64](svbool_t pg, uint64_t *base, svuint64_t offsets, svuint64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<ulong> mask, ulong* base, Vector<ulong> offsets, Vector<ulong> data);
/// void svstnt1_scatter_[s64]index[_f64](svbool_t pg, float64_t *base, svint64_t indices, svfloat64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<double> mask, double* base, Vector<long> indices, Vector<double> data);
/// void svstnt1_scatter_[s64]index[_s64](svbool_t pg, int64_t *base, svint64_t indices, svint64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<long> mask, long* base, Vector<long> indices, Vector<long> data);
/// void svstnt1_scatter_[s64]index[_u64](svbool_t pg, uint64_t *base, svint64_t indices, svuint64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<ulong> mask, ulong* base, Vector<long> indices, Vector<ulong> data);
/// void svstnt1_scatter_[u64]index[_f64](svbool_t pg, float64_t *base, svuint64_t indices, svfloat64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<double> mask, double* base, Vector<ulong> indices, Vector<double> data);
/// void svstnt1_scatter_[u64]index[_s64](svbool_t pg, int64_t *base, svuint64_t indices, svint64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<long> mask, long* base, Vector<ulong> indices, Vector<long> data);
/// void svstnt1_scatter_[u64]index[_u64](svbool_t pg, uint64_t *base, svuint64_t indices, svuint64_t data) : "STNT1D Zdata.D, Pg, [Zoffsets.D, Xbase]"
public static unsafe void ScatterNonTemporal(Vector<ulong> mask, ulong* base, Vector<ulong> indices, Vector<ulong> data);
/// total method signatures: 55
/// total method names: 7
} |
/// Rejected:
/// public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<int> mask, Vector<uint> address, long offset, Vector<int> data); // svstnt1h_scatter[_u32base]_offset[_s32]
/// public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<uint> mask, Vector<uint> address, long offset, Vector<uint> data); // svstnt1h_scatter[_u32base]_offset[_u32]
/// public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<long> mask, Vector<ulong> address, long offset, Vector<long> data); // svstnt1h_scatter[_u64base]_offset[_s64]
/// public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<ulong> mask, Vector<ulong> address, long offset, Vector<ulong> data); // svstnt1h_scatter[_u64base]_offset[_u64]
/// public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<int> mask, Vector<uint> address, long index, Vector<int> data); // svstnt1h_scatter[_u32base]_index[_s32]
/// public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<uint> mask, Vector<uint> address, long index, Vector<uint> data); // svstnt1h_scatter[_u32base]_index[_u32]
/// public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<long> mask, Vector<ulong> address, long index, Vector<long> data); // svstnt1h_scatter[_u64base]_index[_s64]
/// public static unsafe void Scatter16BitWithByteOffsetsNarrowing(Vector<ulong> mask, Vector<ulong> address, long index, Vector<ulong> data); // svstnt1h_scatter[_u64base]_index[_u64]
/// public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<long> mask, Vector<ulong> address, long offset, Vector<long> data); // svstnt1w_scatter[_u64base]_offset[_s64]
/// public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<ulong> mask, Vector<ulong> address, long offset, Vector<ulong> data); // svstnt1w_scatter[_u64base]_offset[_u64]
/// public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<long> mask, Vector<ulong> address, long index, Vector<long> data); // svstnt1w_scatter[_u64base]_index[_s64]
/// public static unsafe void Scatter32BitWithByteOffsetsNarrowing(Vector<ulong> mask, Vector<ulong> address, long index, Vector<ulong> data); // svstnt1w_scatter[_u64base]_index[_u64]
/// public static unsafe void Scatter8BitWithByteOffsetsNarrowing(Vector<int> mask, Vector<uint> address, long offset, Vector<int> data); // svstnt1b_scatter[_u32base]_offset[_s32]
/// public static unsafe void Scatter8BitWithByteOffsetsNarrowing(Vector<uint> mask, Vector<uint> address, long offset, Vector<uint> data); // svstnt1b_scatter[_u32base]_offset[_u32]
/// public static unsafe void Scatter8BitWithByteOffsetsNarrowing(Vector<long> mask, Vector<ulong> address, long offset, Vector<long> data); // svstnt1b_scatter[_u64base]_offset[_s64]
/// public static unsafe void Scatter8BitWithByteOffsetsNarrowing(Vector<ulong> mask, Vector<ulong> address, long offset, Vector<ulong> data); // svstnt1b_scatter[_u64base]_offset[_u64]
/// public static unsafe void ScatterNonTemporal(Vector<float> mask, Vector<uint> bases, long offset, Vector<float> data); // svstnt1_scatter[_u32base]_offset[_f32]
/// public static unsafe void ScatterNonTemporal(Vector<int> mask, Vector<uint> bases, long offset, Vector<int> data); // svstnt1_scatter[_u32base]_offset[_s32]
/// public static unsafe void ScatterNonTemporal(Vector<uint> mask, Vector<uint> bases, long offset, Vector<uint> data); // svstnt1_scatter[_u32base]_offset[_u32]
/// public static unsafe void ScatterNonTemporal(Vector<double> mask, Vector<ulong> bases, long offset, Vector<double> data); // svstnt1_scatter[_u64base]_offset[_f64]
/// public static unsafe void ScatterNonTemporal(Vector<long> mask, Vector<ulong> bases, long offset, Vector<long> data); // svstnt1_scatter[_u64base]_offset[_s64]
/// public static unsafe void ScatterNonTemporal(Vector<ulong> mask, Vector<ulong> bases, long offset, Vector<ulong> data); // svstnt1_scatter[_u64base]_offset[_u64]
/// public static unsafe void ScatterNonTemporal(Vector<float> mask, Vector<uint> bases, long index, Vector<float> data); // svstnt1_scatter[_u32base]_index[_f32]
/// public static unsafe void ScatterNonTemporal(Vector<int> mask, Vector<uint> bases, long index, Vector<int> data); // svstnt1_scatter[_u32base]_index[_s32]
/// public static unsafe void ScatterNonTemporal(Vector<uint> mask, Vector<uint> bases, long index, Vector<uint> data); // svstnt1_scatter[_u32base]_index[_u32]
/// public static unsafe void ScatterNonTemporal(Vector<double> mask, Vector<ulong> bases, long index, Vector<double> data); // svstnt1_scatter[_u64base]_index[_f64]
/// public static unsafe void ScatterNonTemporal(Vector<long> mask, Vector<ulong> bases, long index, Vector<long> data); // svstnt1_scatter[_u64base]_index[_s64]
/// public static unsafe void ScatterNonTemporal(Vector<ulong> mask, Vector<ulong> bases, long index, Vector<ulong> data); // svstnt1_scatter[_u64base]_index[_u64]
/// Total Rejected: 28
/// Total ACLE covered across API: 83
|
This contributes to #93095 It covers instructions in FEAT_SVE2 related to bitwise operations. They are similar to the SVE scatter store 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. 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 #88140 comment. |
Updated to reflect review comments from other API proposals. |
Updated to match implemented SVE1 methods. |
The text was updated successfully, but these errors were encountered: