-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Closed
Labels
api-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedarch-arm64area-System.Runtime.Intrinsics
Milestone
Description
namespace System.Runtime.Intrinsics.Arm
{
public abstract class AdvSimd
{
/// <summary>
/// Signed saturating doubling multiply returning high half
/// Corresponds to vector forms of SQDMULH and VQDMULH
/// </summary>
public static Vector64<short> DoublingMultiplySaturateHigh(Vector64<short> left, Vector64<short> right);
public static Vector64<int> DoublingMultiplySaturateHigh(Vector64<int> left, Vector64<int> right);
public static Vector128<short> DoublingMultiplySaturateHigh(Vector128<short> left, Vector128<short> right);
public static Vector128<int> DoublingMultiplySaturateHigh(Vector128<int> left, Vector128<int> right);
public static Vector64<short> DoublingMultiplyBySelectedScalarSaturateHigh(Vector64<short> left, Vector64<short> right, byte rightIndex);
public static Vector64<int> DoublingMultiplyBySelectedScalarSaturateHigh(Vector64<int> left, Vector64<int> right, byte rightIndex);
public static Vector64<short> DoublingMultiplyBySelectedScalarSaturateHigh(Vector64<short> left, Vector128<short> right, byte rightIndex);
public static Vector64<int> DoublingMultiplyBySelectedScalarSaturateHigh(Vector64<int> left, Vector128<int> right, byte rightIndex);
public static Vector128<short> DoublingMultiplyBySelectedScalarSaturateHigh(Vector128<short> left, Vector64<short> right, byte rightIndex);
public static Vector128<int> DoublingMultiplyBySelectedScalarSaturateHigh(Vector128<int> left, Vector64<int> right, byte rightIndex);
public static Vector128<short> DoublingMultiplyBySelectedScalarSaturateHigh(Vector128<short> left, Vector128<short> right, byte rightIndex);
public static Vector128<int> DoublingMultiplyBySelectedScalarSaturateHigh(Vector128<int> left, Vector128<int> right, byte rightIndex);
public static Vector64<short> DoublingMultiplySaturateHighScalar(Vector64<short> left, Vector64<short> right);
public static Vector64<int> DoublingMultiplySaturateHighScalar(Vector64<int> left, Vector64<int> right);
// TODO: Scalar BySelectedScalar variant
/// <summary>
/// Signed saturating rounding doubling multiply returning high half
/// Corresponds to vector forms of SQRDMULH and VQRDMULH
/// </summary>
public static Vector64<short> RoundedDoublingMultiplySaturateHigh(Vector64<short> left, Vector64<short> right);
public static Vector64<int> RoundedDoublingMultiplySaturateHigh(Vector64<int> left, Vector64<int> right);
public static Vector128<short> RoundedDoublingMultiplySaturateHigh(Vector128<short> left, Vector128<short> right);
public static Vector128<int> RoundedDoublingMultiplySaturateHigh(Vector128<int> left, Vector128<int> right);
public static Vector64<short> RoundedDoublingMultiplyBySelectedScalarSaturateHigh(Vector64<short> left, Vector64<short> right, byte rightIndex);
public static Vector64<int> RoundedDoublingMultiplyBySelectedScalarSaturateHigh(Vector64<int> left, Vector64<int> right, byte rightIndex);
public static Vector64<short> RoundedDoublingMultiplyBySelectedScalarSaturateHigh(Vector64<short> left, Vector128<short> right, byte rightIndex);
public static Vector64<int> RoundedDoublingMultiplyBySelectedScalarSaturateHigh(Vector64<int> left, Vector128<int> right, byte rightIndex);
public static Vector128<short> RoundedDoublingMultiplyBySelectedScalarSaturateHigh(Vector128<short> left, Vector64<short> right, byte rightIndex);
public static Vector128<int> RoundedDoublingMultiplyBySelectedScalarSaturateHigh(Vector128<int> left, Vector64<int> right, byte rightIndex);
public static Vector128<short> RoundedDoublingMultiplyBySelectedScalarSaturateHigh(Vector128<short> left, Vector128<short> right, byte rightIndex);
public static Vector128<int> RoundedDoublingMultiplyBySelectedScalarSaturateHigh(Vector128<int> left, Vector128<int> right, byte rightIndex);
public static Vector64<short> RoundedDoublingMultiplySaturateHighScalar(Vector64<short> left, Vector64<short> right);
public static Vector64<int> RoundedDoublingMultiplySaturateHighScalar(Vector64<int> left, Vector64<int> right);
// TODO: Scalar BySelectedScalar variant
/// <summary>
/// Signed Saturating Rounding Doubling Multiply Accumulate returning High Half
/// Corresponds to vector forms of SQRDMLAH and VQRDMLAH
/// </summary>
public static Vector64<short> RoundedDoublingMultiplyAddSaturateHigh(Vector64<short> addend, Vector64<short> left, Vector64<short> right);
public static Vector64<int> RoundedDoublingMultiplyAddSaturateHigh(Vector64<int> addend, Vector64<int> left, Vector64<int> right);
public static Vector128<short> RoundedDoublingMultiplyAddSaturateHigh(Vector128<short> addend, Vector128<short> left, Vector128<short> right);
public static Vector128<int> RoundedDoublingMultiplyAddSaturateHigh(Vector128<int> addend, Vector128<int> left, Vector128<int> right);
public static Vector64<short> RoundedDoublingMultiplyAddBySelectedScalarSaturateHigh(Vector64<short> addend, Vector64<short> left, Vector64<short> right, byte rightIndex);
public static Vector64<int> RoundedDoublingMultiplyAddBySelectedScalarSaturateHigh(Vector64<int> addend, Vector64<int> left, Vector64<int> right, byte rightIndex);
public static Vector64<short> RoundedDoublingMultiplyAddBySelectedScalarSaturateHigh(Vector64<short> addend, Vector64<short> left, Vector128<short> right, byte rightIndex);
public static Vector64<int> RoundedDoublingMultiplyAddBySelectedScalarSaturateHigh(Vector64<int> addend, Vector64<int> left, Vector128<int> right, byte rightIndex);
public static Vector128<short> RoundedDoublingMultiplyAddBySelectedScalarSaturateHigh(Vector128<short> addend, Vector128<short> left, Vector64<short> right, byte rightIndex);
public static Vector128<int> RoundedDoublingMultiplyAddBySelectedScalarSaturateHigh(Vector128<int> addend, Vector128<int> left, Vector64<int> right, byte rightIndex);
public static Vector128<short> RoundedDoublingMultiplyAddBySelectedScalarSaturateHigh(Vector128<short> addend, Vector128<short> left, Vector128<short> right, byte rightIndex);
public static Vector128<int> RoundedDoublingMultiplyAddBySelectedScalarSaturateHigh(Vector128<int> addend, Vector128<int> left, Vector128<int> right, byte rightIndex);
public static Vector64<short> RoundedDoublingMultiplyAddSaturateHighScalar(Vector64<short> addend, Vector64<short> left, Vector64<short> right);
public static Vector64<int> RoundedDoublingMultiplyAddSaturateHighScalar(Vector64<int> addend, Vector64<int> left, Vector64<int> right);
// TODO: Scalar BySelectedScalar variant
/// <summary>
/// Signed saturating rounding doubling multiply subtract returning high half
/// Corresponds to vector forms of SQRDMLSH and VQRDMLSH
/// </summary>
public static Vector64<short> RoundedDoublingMultiplySubtractSaturateHigh(Vector64<short> minuend, Vector64<short> left, Vector64<short> right);
public static Vector64<int> RoundedDoublingMultiplySubtractSaturateHigh(Vector64<int> minuend, Vector64<int> left, Vector64<int> right);
public static Vector128<short> RoundedDoublingMultiplySubtractSaturateHigh(Vector128<short> minuend, Vector128<short> left, Vector128<short> right);
public static Vector128<int> RoundedDoublingMultiplySubtractSaturateHigh(Vector128<int> minuend, Vector128<int> left, Vector128<int> right);
public static Vector64<short> RoundedDoublingMultiplySubtractBySelectedScalarSaturateHigh(Vector64<short> minuend, Vector64<short> left, Vector64<short> right, byte rightIndex);
public static Vector64<int> RoundedDoublingMultiplySubtractBySelectedScalarSaturateHigh(Vector64<int> minuend, Vector64<int> left, Vector64<int> right, byte rightIndex);
public static Vector64<short> RoundedDoublingMultiplySubtractBySelectedScalarSaturateHigh(Vector64<short> minuend, Vector64<short> left, Vector128<short> right, byte rightIndex);
public static Vector64<int> RoundedDoublingMultiplySubtractBySelectedScalarSaturateHigh(Vector64<int> minuend, Vector64<int> left, Vector128<int> right, byte rightIndex);
public static Vector128<short> RoundedDoublingMultiplySubtractBySelectedScalarSaturateHigh(Vector128<short> minuend, Vector128<short> left, Vector64<short> right, byte rightIndex);
public static Vector128<int> RoundedDoublingMultiplySubtractBySelectedScalarSaturateHigh(Vector128<int> minuend, Vector128<int> left, Vector64<int> right, byte rightIndex);
public static Vector128<short> RoundedDoublingMultiplySubtractBySelectedScalarSaturateHigh(Vector128<short> minuend, Vector128<short> left, Vector128<short> right, byte rightIndex);
public static Vector128<int> RoundedDoublingMultiplySubtractBySelectedScalarSaturateHigh(Vector128<int> minuend, Vector128<int> left, Vector128<int> right, byte rightIndex);
public static Vector64<short> RoundedDoublingMultiplySubtractSaturateHighScalar(Vector64<short> minuend, Vector64<short> left, Vector64<short> right);
public static Vector64<int> RoundedDoublingMultiplySubtractSaturateHighScalar(Vector64<int> minuend, Vector64<int> left, Vector64<int> right);
// TODO: Scalar BySelectedScalar variant
/// <summary>
/// Signed saturating Doubling Multiply-Add Long
/// Corresponds to vector forms of SQDMULL and VQDMULL
/// </summary>
public static Vector64<short> DoublingMultiplyWideningLowerSaturate(Vector64<short> left, Vector64<short> right);
public static Vector64<int> DoublingMultiplyWideningLowerSaturate(Vector64<int> left, Vector64<int> right);
public static Vector128<short> DoublingMultiplyWideningLowerSaturate(Vector128<short> left, Vector128<short> right);
public static Vector128<int> DoublingMultiplyWideningLowerSaturate(Vector128<int> left, Vector128<int> right);
public static Vector64<short> DoublingMultiplyWideningLowerBySelectedScalarSaturate(Vector64<short> left, Vector64<short> right, byte rightIndex);
public static Vector64<int> DoublingMultiplyWideningLowerBySelectedScalarSaturate(Vector64<int> left, Vector64<int> right, byte rightIndex);
public static Vector64<short> DoublingMultiplyWideningLowerBySelectedScalarSaturate(Vector64<short> left, Vector128<short> right, byte rightIndex);
public static Vector64<int> DoublingMultiplyWideningLowerBySelectedScalarSaturate(Vector64<int> left, Vector128<int> right, byte rightIndex);
public static Vector128<short> DoublingMultiplyWideningLowerBySelectedScalarSaturate(Vector128<short> left, Vector64<short> right, byte rightIndex);
public static Vector128<int> DoublingMultiplyWideningLowerBySelectedScalarSaturate(Vector128<int> left, Vector64<int> right, byte rightIndex);
public static Vector128<short> DoublingMultiplyWideningLowerBySelectedScalarSaturate(Vector128<short> left, Vector128<short> right, byte rightIndex);
public static Vector128<int> DoublingMultiplyWideningLowerBySelectedScalarSaturate(Vector128<int> left, Vector128<int> right, byte rightIndex);
public static Vector64<short> DoublingMultiplyWideningLowerSaturateScalar(Vector64<short> left, Vector64<short> right);
public static Vector64<int> DoublingMultiplyWideningLowerSaturateScalar(Vector64<int> left, Vector64<int> right);
// TODO: Scalar BySelectedScalar variant
/// <summary>
/// Signed saturating Doubling Multiply-Add Long
/// Corresponds to vector forms of SQDMLAL and VQDMLAL
/// </summary>
public static Vector64<short> DoublingMultiplyAddWideningLowerSaturate(Vector64<short> addend, Vector64<short> left, Vector64<short> right);
public static Vector64<int> DoublingMultiplyAddWideningLowerSaturate(Vector64<int> addend, Vector64<int> left, Vector64<int> right);
public static Vector128<short> DoublingMultiplyAddWideningLowerSaturate(Vector128<short> addend, Vector128<short> left, Vector128<short> right);
public static Vector128<int> DoublingMultiplyAddWideningLowerSaturate(Vector128<int> addend, Vector128<int> left, Vector128<int> right);
public static Vector64<short> DoublingMultiplyAddWideningLowerBySelectedScalarSaturate(Vector64<short> addend, Vector64<short> left, Vector64<short> right, byte rightIndex);
public static Vector64<int> DoublingMultiplyAddWideningLowerBySelectedScalarSaturate(Vector64<int> addend, Vector64<int> left, Vector64<int> right, byte rightIndex);
public static Vector64<short> DoublingMultiplyAddWideningLowerBySelectedScalarSaturate(Vector64<short> addend, Vector64<short> left, Vector128<short> right, byte rightIndex);
public static Vector64<int> DoublingMultiplyAddWideningLowerBySelectedScalarSaturate(Vector64<int> addend, Vector64<int> left, Vector128<int> right, byte rightIndex);
public static Vector128<short> DoublingMultiplyAddWideningLowerBySelectedScalarSaturate(Vector128<short> addend, Vector128<short> left, Vector64<short> right, byte rightIndex);
public static Vector128<int> DoublingMultiplyAddWideningLowerBySelectedScalarSaturate(Vector128<int> addend, Vector128<int> left, Vector64<int> right, byte rightIndex);
public static Vector128<short> DoublingMultiplyAddWideningLowerBySelectedScalarSaturate(Vector128<short> addend, Vector128<short> left, Vector128<short> right, byte rightIndex);
public static Vector128<int> DoublingMultiplyAddWideningLowerBySelectedScalarSaturate(Vector128<int> addend, Vector128<int> left, Vector128<int> right, byte rightIndex);
public static Vector64<short> DoublingMultiplyAddWideningLowerSaturateScalar(Vector64<short> addend, Vector64<short> left, Vector64<short> right);
public static Vector64<int> DoublingMultiplyAddWideningLowerSaturateScalar(Vector64<int> addend, Vector64<int> left, Vector64<int> right);
// TODO: Scalar BySelectedScalar variant
/// <summary>
/// Signed saturating Doubling Multiply-Subtract Long
/// Corresponds to vector forms of SQDMLSL and VQDMLSL
/// </summary>
public static Vector64<short> DoublingMultiplySubtractWideningLowerSaturate(Vector64<short> minuend, Vector64<short> left, Vector64<short> right);
public static Vector64<int> DoublingMultiplySubtractWideningLowerSaturate(Vector64<int> minuend, Vector64<int> left, Vector64<int> right);
public static Vector128<short> DoublingMultiplySubtractWideningLowerSaturate(Vector128<short> minuend, Vector128<short> left, Vector128<short> right);
public static Vector128<int> DoublingMultiplySubtractWideningLowerSaturate(Vector128<int> minuend, Vector128<int> left, Vector128<int> right);
public static Vector64<short> DoublingMultiplySubtractWideningLowerBySelectedScalarSaturate(Vector64<short> minuend, Vector64<short> left, Vector64<short> right, byte rightIndex);
public static Vector64<int> DoublingMultiplySubtractWideningLowerBySelectedScalarSaturate(Vector64<int> minuend, Vector64<int> left, Vector64<int> right, byte rightIndex);
public static Vector64<short> DoublingMultiplySubtractWideningLowerBySelectedScalarSaturate(Vector64<short> minuend, Vector64<short> left, Vector128<short> right, byte rightIndex);
public static Vector64<int> DoublingMultiplySubtractWideningLowerBySelectedScalarSaturate(Vector64<int> minuend, Vector64<int> left, Vector128<int> right, byte rightIndex);
public static Vector128<short> DoublingMultiplySubtractWideningLowerBySelectedScalarSaturate(Vector128<short> minuend, Vector128<short> left, Vector64<short> right, byte rightIndex);
public static Vector128<int> DoublingMultiplySubtractWideningLowerBySelectedScalarSaturate(Vector128<int> minuend, Vector128<int> left, Vector64<int> right, byte rightIndex);
public static Vector128<short> DoublingMultiplySubtractWideningLowerBySelectedScalarSaturate(Vector128<short> minuend, Vector128<short> left, Vector128<short> right, byte rightIndex);
public static Vector128<int> DoublingMultiplySubtractWideningLowerBySelectedScalarSaturate(Vector128<int> minuend, Vector128<int> left, Vector128<int> right, byte rightIndex);
public static Vector64<short> DoublingMultiplySubtractWideningLowerSaturateScalar(Vector64<short> minuend, Vector64<short> left, Vector64<short> right);
public static Vector64<int> DoublingMultiplySubtractWideningLowerSaturateScalar(Vector64<int> minuend, Vector64<int> left, Vector64<int> right);
// TODO: Scalar BySelectedScalar variant
}
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
api-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedarch-arm64area-System.Runtime.Intrinsics