The following are omitted in #32512
class AdvSimd
{
/// <summary>
/// poly16x8_t vmull_p8 (poly8x8_t a, poly8x8_t b)
/// A32: VMULL.P8 Qd, Dn, Dm
/// A64: PMULL Vd.16B, Vn.8B, Vm.8B
/// </summary>
public static Vector128<sbyte> PolynomialMultiplyWideningLower(Vector64<sbyte> left, Vector64<sbyte> right);
/// <summary>
/// poly16x8_t vmull_p8 (poly8x8_t a, poly8x8_t b)
/// A32: VMULL.P8 Qd, Dn, Dm
/// A64: PMULL Vd.16B, Vn.8B, Vm.8B
/// </summary>
public static Vector128<byte> PolynomialMultiplyWideningLower(Vector64<byte> left, Vector64<byte> right);
/// <summary>
/// poly16x8_t vmull_high_p8 (poly8x16_t a, poly8x16_t b)
/// A32: VMULL.P8 Qd, Dn+1, Dm+1
/// A64: PMULL2 Vd.16B, Vn.16B, Vm.16B
/// </summary>
public static Vector128<sbyte> PolynomialMultiplyWideningUpper(Vector128<sbyte> left, Vector128<sbyte> right);
/// <summary>
/// poly16x8_t vmull_high_p8 (poly8x16_t a, poly8x16_t b)
/// A32: VMULL.P8 Qd, Dn+1, Dm+1
/// A64: PMULL2 Vd.16B, Vn.16B, Vm.16B
/// </summary>
public static Vector128<byte> PolynomialMultiplyWideningUpper(Vector128<byte> left, Vector128<byte> right);
}
class Aes
{
/// <summary>
/// poly128_t vmull_p64 (poly64_t a, poly64_t b)
/// A32: VMULL.P8 Qd, Dn, Dm
/// A64: PMULL Vd.1Q, Vn.1D, Vm.1D
/// </summary>
public static Vector128<long> PolynomialMultiplyWideningLower(Vector64<long> left, Vector64<long> right);
/// <summary>
/// poly128_t vmull_p64 (poly64_t a, poly64_t b)
/// A32: VMULL.P8 Qd, Dn, Dm
/// A64: PMULL Vd.1Q, Vn.1D, Vm.1D
/// </summary>
public static Vector128<ulong> PolynomialMultiplyWideningLower(Vector64<ulong> left, Vector64<ulong> right);
/// <summary>
/// poly128_t vmull_high_p64 (poly64x2_t a, poly64x2_t b)
/// A32: VMULL.P8 Qd, Dn+1, Dm+1
/// A64: PMULL2 Vd.1Q, Vn.2D, Vm.2D
/// </summary>
public static Vector128<long> PolynomialMultiplyWideningUpper(Vector128<long> left, Vector128<long> right);
/// <summary>
/// poly128_t vmull_high_p64 (poly64x2_t a, poly64x2_t b)
/// A32: VMULL.P8 Qd, Dn+1, Dm+1
/// A64: PMULL2 Vd.1Q, Vn.2D, Vm.2D
/// </summary>
public static Vector128<ulong> PolynomialMultiplyWideningUpper(Vector128<ulong> left, Vector128<ulong> right);
}
There is also encoding PMULL Vd.1Q, Vn.1D, Vm.1D and PMULL2 Vd.1Q, Vn.2D, Vm.2D which
is only allocated in an implementation that includes the Cryptographic
Extension, and is otherwise RESERVED.
I wonder whether we want to expose these at all in .NET 5.0 - since they don't belong to ASIMD ISA?
cc @CarolEidt @TamarChristinaArm @tannergooding
The following are omitted in #32512
There is also encoding
PMULL Vd.1Q, Vn.1D, Vm.1DandPMULL2 Vd.1Q, Vn.2D, Vm.2DwhichI wonder whether we want to expose these at all in .NET 5.0 - since they don't belong to ASIMD ISA?
cc @CarolEidt @TamarChristinaArm @tannergooding