-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Arm64/Sve: Implement ConditionalSelect API #100718
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -120,7 +120,65 @@ internal Arm64() { } | |
/// </summary> | ||
public static unsafe Vector<ulong> CreateTrueMaskUInt64([ConstantExpected] SveMaskPattern pattern = SveMaskPattern.All) { throw new PlatformNotSupportedException(); } | ||
|
||
/// ConditionalSelect : Conditionally select elements | ||
|
||
/// <summary> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: It's preferred to order these "alphabetically" as well, since that's what tooling will do in various places. This is done based on the type name, not the language keyword:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @a74nh - do you mind fixing the tool to generate these alphabetically? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Done. The branch with the autogenerated files should now be in order for all the .cs files. |
||
/// svint8_t svsel[_s8](svbool_t pg, svint8_t op1, svint8_t op2) | ||
/// svbool_t svsel[_b](svbool_t pg, svbool_t op1, svbool_t op2) | ||
/// </summary> | ||
public static unsafe Vector<sbyte> ConditionalSelect(Vector<sbyte> mask, Vector<sbyte> left, Vector<sbyte> right) { throw new PlatformNotSupportedException(); } | ||
|
||
/// <summary> | ||
/// svint16_t svsel[_s16](svbool_t pg, svint16_t op1, svint16_t op2) | ||
/// svbool_t svsel[_b](svbool_t pg, svbool_t op1, svbool_t op2) | ||
/// </summary> | ||
public static unsafe Vector<short> ConditionalSelect(Vector<short> mask, Vector<short> left, Vector<short> right) { throw new PlatformNotSupportedException(); } | ||
|
||
/// <summary> | ||
/// svint32_t svsel[_s32](svbool_t pg, svint32_t op1, svint32_t op2) | ||
/// svbool_t svsel[_b](svbool_t pg, svbool_t op1, svbool_t op2) | ||
/// </summary> | ||
public static unsafe Vector<int> ConditionalSelect(Vector<int> mask, Vector<int> left, Vector<int> right) { throw new PlatformNotSupportedException(); } | ||
|
||
/// <summary> | ||
/// svint64_t svsel[_s64](svbool_t pg, svint64_t op1, svint64_t op2) | ||
/// svbool_t svsel[_b](svbool_t pg, svbool_t op1, svbool_t op2) | ||
/// </summary> | ||
public static unsafe Vector<long> ConditionalSelect(Vector<long> mask, Vector<long> left, Vector<long> right) { throw new PlatformNotSupportedException(); } | ||
|
||
/// <summary> | ||
/// svuint8_t svsel[_u8](svbool_t pg, svuint8_t op1, svuint8_t op2) | ||
/// svbool_t svsel[_b](svbool_t pg, svbool_t op1, svbool_t op2) | ||
/// </summary> | ||
public static unsafe Vector<byte> ConditionalSelect(Vector<byte> mask, Vector<byte> left, Vector<byte> right) { throw new PlatformNotSupportedException(); } | ||
|
||
/// <summary> | ||
/// svuint16_t svsel[_u16](svbool_t pg, svuint16_t op1, svuint16_t op2) | ||
/// svbool_t svsel[_b](svbool_t pg, svbool_t op1, svbool_t op2) | ||
/// </summary> | ||
public static unsafe Vector<ushort> ConditionalSelect(Vector<ushort> mask, Vector<ushort> left, Vector<ushort> right) { throw new PlatformNotSupportedException(); } | ||
|
||
/// <summary> | ||
/// svuint32_t svsel[_u32](svbool_t pg, svuint32_t op1, svuint32_t op2) | ||
/// svbool_t svsel[_b](svbool_t pg, svbool_t op1, svbool_t op2) | ||
/// </summary> | ||
public static unsafe Vector<uint> ConditionalSelect(Vector<uint> mask, Vector<uint> left, Vector<uint> right) { throw new PlatformNotSupportedException(); } | ||
|
||
/// <summary> | ||
/// svuint64_t svsel[_u64](svbool_t pg, svuint64_t op1, svuint64_t op2) | ||
/// svbool_t svsel[_b](svbool_t pg, svbool_t op1, svbool_t op2) | ||
/// </summary> | ||
public static unsafe Vector<ulong> ConditionalSelect(Vector<ulong> mask, Vector<ulong> left, Vector<ulong> right) { throw new PlatformNotSupportedException(); } | ||
|
||
/// <summary> | ||
/// svfloat32_t svsel[_f32](svbool_t pg, svfloat32_t op1, svfloat32_t op2) | ||
/// </summary> | ||
public static unsafe Vector<float> ConditionalSelect(Vector<float> mask, Vector<float> left, Vector<float> right) { throw new PlatformNotSupportedException(); } | ||
|
||
/// <summary> | ||
/// svfloat64_t svsel[_f64](svbool_t pg, svfloat64_t op1, svfloat64_t op2) | ||
/// </summary> | ||
public static unsafe Vector<double> ConditionalSelect(Vector<double> mask, Vector<double> left, Vector<double> right) { throw new PlatformNotSupportedException(); } | ||
|
||
/// LoadVector : Unextended load | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4149,7 +4149,16 @@ internal Arm64() { } | |
public static System.Numerics.Vector<ushort> CreateTrueMaskUInt16([ConstantExpected] SveMaskPattern pattern = SveMaskPattern.All) { throw null; } | ||
public static System.Numerics.Vector<uint> CreateTrueMaskUInt32([ConstantExpected] SveMaskPattern pattern = SveMaskPattern.All) { throw null; } | ||
public static System.Numerics.Vector<ulong> CreateTrueMaskUInt64([ConstantExpected] SveMaskPattern pattern = SveMaskPattern.All) { throw null; } | ||
|
||
public static System.Numerics.Vector<sbyte> ConditionalSelect(System.Numerics.Vector<sbyte> mask, System.Numerics.Vector<sbyte> left, System.Numerics.Vector<sbyte> right) { throw null; } | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If this is ever generated by the tooling, it's going to change all this to be done alphabetically, hence the comment above. |
||
public static System.Numerics.Vector<short> ConditionalSelect(System.Numerics.Vector<short> mask, System.Numerics.Vector<short> left, System.Numerics.Vector<short> right) { throw null; } | ||
public static System.Numerics.Vector<int> ConditionalSelect(System.Numerics.Vector<int> mask, System.Numerics.Vector<int> left, System.Numerics.Vector<int> right) { throw null; } | ||
public static System.Numerics.Vector<long> ConditionalSelect(System.Numerics.Vector<long> mask, System.Numerics.Vector<long> left, System.Numerics.Vector<long> right) { throw null; } | ||
public static System.Numerics.Vector<byte> ConditionalSelect(System.Numerics.Vector<byte> mask, System.Numerics.Vector<byte> left, System.Numerics.Vector<byte> right) { throw null; } | ||
public static System.Numerics.Vector<ushort> ConditionalSelect(System.Numerics.Vector<ushort> mask, System.Numerics.Vector<ushort> left, System.Numerics.Vector<ushort> right) { throw null; } | ||
public static System.Numerics.Vector<uint> ConditionalSelect(System.Numerics.Vector<uint> mask, System.Numerics.Vector<uint> left, System.Numerics.Vector<uint> right) { throw null; } | ||
public static System.Numerics.Vector<ulong> ConditionalSelect(System.Numerics.Vector<ulong> mask, System.Numerics.Vector<ulong> left, System.Numerics.Vector<ulong> right) { throw null; } | ||
public static System.Numerics.Vector<float> ConditionalSelect(System.Numerics.Vector<float> mask, System.Numerics.Vector<float> left, System.Numerics.Vector<float> right) { throw null; } | ||
public static System.Numerics.Vector<double> ConditionalSelect(System.Numerics.Vector<double> mask, System.Numerics.Vector<double> left, System.Numerics.Vector<double> right) { throw null; } | ||
public static unsafe System.Numerics.Vector<sbyte> LoadVector(System.Numerics.Vector<sbyte> mask, sbyte* address) { throw null; } | ||
public static unsafe System.Numerics.Vector<short> LoadVector(System.Numerics.Vector<short> mask, short* address) { throw null; } | ||
public static unsafe System.Numerics.Vector<int> LoadVector(System.Numerics.Vector<int> mask, int* address) { throw null; } | ||
|
Uh oh!
There was an error while loading. Please reload this page.