Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

13,920 changes: 6,532 additions & 7,388 deletions src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.cs

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -28,58 +28,58 @@ internal Arm64() { }
}

/// <summary>
/// uint8x16_t vaesdq_u8 (uint8x16_t data, uint8x16_t key)
/// A32: AESD.8 Qd, Qm
/// A64: AESD Vd.16B, Vn.16B
/// <para>uint8x16_t vaesdq_u8 (uint8x16_t data, uint8x16_t key)</para>
/// <para> A32: AESD.8 Qd, Qm</para>
/// <para> A64: AESD Vd.16B, Vn.16B</para>
/// </summary>
public static Vector128<byte> Decrypt(Vector128<byte> value, Vector128<byte> roundKey) { throw new PlatformNotSupportedException(); }

/// <summary>
/// uint8x16_t vaeseq_u8 (uint8x16_t data, uint8x16_t key)
/// A32: AESE.8 Qd, Qm
/// A64: AESE Vd.16B, Vn.16B
/// <para>uint8x16_t vaeseq_u8 (uint8x16_t data, uint8x16_t key)</para>
/// <para> A32: AESE.8 Qd, Qm</para>
/// <para> A64: AESE Vd.16B, Vn.16B</para>
/// </summary>
public static Vector128<byte> Encrypt(Vector128<byte> value, Vector128<byte> roundKey) { throw new PlatformNotSupportedException(); }

/// <summary>
/// uint8x16_t vaesimcq_u8 (uint8x16_t data)
/// A32: AESIMC.8 Qd, Qm
/// A64: AESIMC Vd.16B, Vn.16B
/// <para>uint8x16_t vaesimcq_u8 (uint8x16_t data)</para>
/// <para> A32: AESIMC.8 Qd, Qm</para>
/// <para> A64: AESIMC Vd.16B, Vn.16B</para>
/// </summary>
public static Vector128<byte> InverseMixColumns(Vector128<byte> value) { throw new PlatformNotSupportedException(); }

/// <summary>
/// uint8x16_t vaesmcq_u8 (uint8x16_t data)
/// A32: AESMC.8 Qd, Qm
/// A64: AESMC V>.16B, Vn.16B
/// <para>uint8x16_t vaesmcq_u8 (uint8x16_t data)</para>
/// <para> A32: AESMC.8 Qd, Qm</para>
/// <para> A64: AESMC V>.16B, Vn.16B</para>
/// </summary>
public static Vector128<byte> MixColumns(Vector128<byte> value) { throw new PlatformNotSupportedException(); }

/// <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
/// <para>poly128_t vmull_p64 (poly64_t a, poly64_t b)</para>
/// <para> A32: VMULL.P8 Qd, Dn, Dm</para>
/// <para> A64: PMULL Vd.1Q, Vn.1D, Vm.1D</para>
/// </summary>
public static Vector128<long> PolynomialMultiplyWideningLower(Vector64<long> left, Vector64<long> right) { throw new PlatformNotSupportedException(); }

/// <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
/// <para>poly128_t vmull_p64 (poly64_t a, poly64_t b)</para>
/// <para> A32: VMULL.P8 Qd, Dn, Dm</para>
/// <para> A64: PMULL Vd.1Q, Vn.1D, Vm.1D</para>
/// </summary>
public static Vector128<ulong> PolynomialMultiplyWideningLower(Vector64<ulong> left, Vector64<ulong> right) { throw new PlatformNotSupportedException(); }

/// <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
/// <para>poly128_t vmull_high_p64 (poly64x2_t a, poly64x2_t b)</para>
/// <para> A32: VMULL.P8 Qd, Dn+1, Dm+1</para>
/// <para> A64: PMULL2 Vd.1Q, Vn.2D, Vm.2D</para>
/// </summary>
public static Vector128<long> PolynomialMultiplyWideningUpper(Vector128<long> left, Vector128<long> right) { throw new PlatformNotSupportedException(); }

/// <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
/// <para>poly128_t vmull_high_p64 (poly64x2_t a, poly64x2_t b)</para>
/// <para> A32: VMULL.P8 Qd, Dn+1, Dm+1</para>
/// <para> A64: PMULL2 Vd.1Q, Vn.2D, Vm.2D</para>
/// </summary>
public static Vector128<ulong> PolynomialMultiplyWideningUpper(Vector128<ulong> left, Vector128<ulong> right) { throw new PlatformNotSupportedException(); }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,58 +30,58 @@ internal Arm64() { }
}

/// <summary>
/// uint8x16_t vaesdq_u8 (uint8x16_t data, uint8x16_t key)
/// A32: AESD.8 Qd, Qm
/// A64: AESD Vd.16B, Vn.16B
/// <para>uint8x16_t vaesdq_u8 (uint8x16_t data, uint8x16_t key)</para>
/// <para> A32: AESD.8 Qd, Qm</para>
/// <para> A64: AESD Vd.16B, Vn.16B</para>
/// </summary>
public static Vector128<byte> Decrypt(Vector128<byte> value, Vector128<byte> roundKey) => Decrypt(value, roundKey);

/// <summary>
/// uint8x16_t vaeseq_u8 (uint8x16_t data, uint8x16_t key)
/// A32: AESE.8 Qd, Qm
/// A64: AESE Vd.16B, Vn.16B
/// <para>uint8x16_t vaeseq_u8 (uint8x16_t data, uint8x16_t key)</para>
/// <para> A32: AESE.8 Qd, Qm</para>
/// <para> A64: AESE Vd.16B, Vn.16B</para>
/// </summary>
public static Vector128<byte> Encrypt(Vector128<byte> value, Vector128<byte> roundKey) => Encrypt(value, roundKey);

/// <summary>
/// uint8x16_t vaesimcq_u8 (uint8x16_t data)
/// A32: AESIMC.8 Qd, Qm
/// A64: AESIMC Vd.16B, Vn.16B
/// <para>uint8x16_t vaesimcq_u8 (uint8x16_t data)</para>
/// <para> A32: AESIMC.8 Qd, Qm</para>
/// <para> A64: AESIMC Vd.16B, Vn.16B</para>
/// </summary>
public static Vector128<byte> InverseMixColumns(Vector128<byte> value) => InverseMixColumns(value);

/// <summary>
/// uint8x16_t vaesmcq_u8 (uint8x16_t data)
/// A32: AESMC.8 Qd, Qm
/// A64: AESMC V>.16B, Vn.16B
/// <para>uint8x16_t vaesmcq_u8 (uint8x16_t data)</para>
/// <para> A32: AESMC.8 Qd, Qm</para>
/// <para> A64: AESMC V>.16B, Vn.16B</para>
/// </summary>
public static Vector128<byte> MixColumns(Vector128<byte> value) => MixColumns(value);

/// <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
/// <para>poly128_t vmull_p64 (poly64_t a, poly64_t b)</para>
/// <para> A32: VMULL.P8 Qd, Dn, Dm</para>
/// <para> A64: PMULL Vd.1Q, Vn.1D, Vm.1D</para>
/// </summary>
public static Vector128<long> PolynomialMultiplyWideningLower(Vector64<long> left, Vector64<long> right) => PolynomialMultiplyWideningLower(left, 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
/// <para>poly128_t vmull_p64 (poly64_t a, poly64_t b)</para>
/// <para> A32: VMULL.P8 Qd, Dn, Dm</para>
/// <para> A64: PMULL Vd.1Q, Vn.1D, Vm.1D</para>
/// </summary>
public static Vector128<ulong> PolynomialMultiplyWideningLower(Vector64<ulong> left, Vector64<ulong> right) => PolynomialMultiplyWideningLower(left, 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
/// <para>poly128_t vmull_high_p64 (poly64x2_t a, poly64x2_t b)</para>
/// <para> A32: VMULL.P8 Qd, Dn+1, Dm+1</para>
/// <para> A64: PMULL2 Vd.1Q, Vn.2D, Vm.2D</para>
/// </summary>
public static Vector128<long> PolynomialMultiplyWideningUpper(Vector128<long> left, Vector128<long> right) => PolynomialMultiplyWideningUpper(left, 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
/// <para>poly128_t vmull_high_p64 (poly64x2_t a, poly64x2_t b)</para>
/// <para> A32: VMULL.P8 Qd, Dn+1, Dm+1</para>
/// <para> A64: PMULL2 Vd.1Q, Vn.2D, Vm.2D</para>
/// </summary>
public static Vector128<ulong> PolynomialMultiplyWideningUpper(Vector128<ulong> left, Vector128<ulong> right) => PolynomialMultiplyWideningUpper(left, right);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,74 +31,58 @@ internal Arm64() { }
/// <remarks>A value of <see langword="false" /> indicates that the APIs will throw <see cref="PlatformNotSupportedException" />.</remarks>
public static bool IsSupported { [Intrinsic] get => false; }

/// <summary>
/// A64: CLS Wd, Wn
/// </summary>
/// <summary> A64: CLS Wd, Wn</summary>
public static int LeadingSignCount(int value) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A64: CLS Xd, Xn
/// </summary>
/// <summary> A64: CLS Xd, Xn</summary>
public static int LeadingSignCount(long value) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A64: CLZ Xd, Xn
/// </summary>
/// <summary> A64: CLZ Xd, Xn</summary>
public static int LeadingZeroCount(long value) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A64: CLZ Xd, Xn
/// </summary>
/// <summary> A64: CLZ Xd, Xn</summary>
public static int LeadingZeroCount(ulong value) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A64: SMULH Xd, Xn, Xm
/// </summary>
/// <summary> A64: SMULH Xd, Xn, Xm</summary>
public static long MultiplyHigh(long left, long right) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A64: UMULH Xd, Xn, Xm
/// </summary>
/// <summary> A64: UMULH Xd, Xn, Xm</summary>
public static ulong MultiplyHigh(ulong left, ulong right) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A64: RBIT Xd, Xn
/// </summary>
/// <summary> A64: RBIT Xd, Xn</summary>
public static long ReverseElementBits(long value) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A64: RBIT Xd, Xn
/// </summary>
/// <summary> A64: RBIT Xd, Xn</summary>
public static ulong ReverseElementBits(ulong value) { throw new PlatformNotSupportedException(); }
}

/// <summary>
/// A32: CLZ Rd, Rm
/// A64: CLZ Wd, Wn
/// <para> A32: CLZ Rd, Rm</para>
/// <para> A64: CLZ Wd, Wn</para>
/// </summary>
public static int LeadingZeroCount(int value) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A32: CLZ Rd, Rm
/// A64: CLZ Wd, Wn
/// <para> A32: CLZ Rd, Rm</para>
/// <para> A64: CLZ Wd, Wn</para>
/// </summary>
public static int LeadingZeroCount(uint value) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A32: RBIT Rd, Rm
/// A64: RBIT Wd, Wn
/// <para> A32: RBIT Rd, Rm</para>
/// <para> A64: RBIT Wd, Wn</para>
/// </summary>
public static int ReverseElementBits(int value) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A32: RBIT Rd, Rm
/// A64: RBIT Wd, Wn
/// <para> A32: RBIT Rd, Rm</para>
/// <para> A64: RBIT Wd, Wn</para>
/// </summary>
public static uint ReverseElementBits(uint value) { throw new PlatformNotSupportedException(); }

/// <summary>
/// A32: YIELD
/// A64: YIELD
/// <para> A32: YIELD</para>
/// <para> A64: YIELD</para>
/// </summary>
public static void Yield() { throw new PlatformNotSupportedException(); }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,74 +28,58 @@ internal Arm64() { }
/// <remarks>A value of <see langword="false" /> indicates that the APIs will throw <see cref="PlatformNotSupportedException" />.</remarks>
public static bool IsSupported { get => IsSupported; }

/// <summary>
/// A64: CLS Wd, Wn
/// </summary>
/// <summary> A64: CLS Wd, Wn</summary>
public static int LeadingSignCount(int value) => LeadingSignCount(value);

/// <summary>
/// A64: CLS Xd, Xn
/// </summary>
/// <summary> A64: CLS Xd, Xn</summary>
public static int LeadingSignCount(long value) => LeadingSignCount(value);

/// <summary>
/// A64: CLZ Xd, Xn
/// </summary>
/// <summary> A64: CLZ Xd, Xn</summary>
public static int LeadingZeroCount(long value) => LeadingZeroCount(value);

/// <summary>
/// A64: CLZ Xd, Xn
/// </summary>
/// <summary> A64: CLZ Xd, Xn</summary>
public static int LeadingZeroCount(ulong value) => LeadingZeroCount(value);

/// <summary>
/// A64: SMULH Xd, Xn, Xm
/// </summary>
/// <summary> A64: SMULH Xd, Xn, Xm</summary>
public static long MultiplyHigh(long left, long right) => MultiplyHigh(left, right);

/// <summary>
/// A64: UMULH Xd, Xn, Xm
/// </summary>
/// <summary> A64: UMULH Xd, Xn, Xm</summary>
public static ulong MultiplyHigh(ulong left, ulong right) => MultiplyHigh(left, right);

/// <summary>
/// A64: RBIT Xd, Xn
/// </summary>
/// <summary> A64: RBIT Xd, Xn</summary>
public static long ReverseElementBits(long value) => ReverseElementBits(value);

/// <summary>
/// A64: RBIT Xd, Xn
/// </summary>
/// <summary> A64: RBIT Xd, Xn</summary>
public static ulong ReverseElementBits(ulong value) => ReverseElementBits(value);
}

/// <summary>
/// A32: CLZ Rd, Rm
/// A64: CLZ Wd, Wn
/// <para> A32: CLZ Rd, Rm</para>
/// <para> A64: CLZ Wd, Wn</para>
/// </summary>
public static int LeadingZeroCount(int value) => LeadingZeroCount(value);

/// <summary>
/// A32: CLZ Rd, Rm
/// A64: CLZ Wd, Wn
/// <para> A32: CLZ Rd, Rm</para>
/// <para> A64: CLZ Wd, Wn</para>
/// </summary>
public static int LeadingZeroCount(uint value) => LeadingZeroCount(value);

/// <summary>
/// A32: RBIT Rd, Rm
/// A64: RBIT Wd, Wn
/// <para> A32: RBIT Rd, Rm</para>
/// <para> A64: RBIT Wd, Wn</para>
/// </summary>
public static int ReverseElementBits(int value) => ReverseElementBits(value);

/// <summary>
/// A32: RBIT Rd, Rm
/// A64: RBIT Wd, Wn
/// <para> A32: RBIT Rd, Rm</para>
/// <para> A64: RBIT Wd, Wn</para>
/// </summary>
public static uint ReverseElementBits(uint value) => ReverseElementBits(value);

/// <summary>
/// A32: YIELD
/// A64: YIELD
/// <para> A32: YIELD</para>
/// <para> A64: YIELD</para>
/// </summary>
public static void Yield() => Yield();
}
Expand Down
Loading