-
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
[Arm64] ASIMD Polynomial Multiply Long #35143
Comments
Tagging subscribers to this area: @tannergooding |
hmm did we get |
Yes, I implemented it in #33889 |
If you do, won't that require the rest of the |
Good point - I think we have got all Arm Architecture Reference Manual (A2.3 The Armv8 Cryptographic Extension) talks about Armv8 Cryptographic Extension and the features ARMv8.0-AES and ARMv8.0-SHA:
I wonder if this means that a full path, for example, to intrinsic Is my understanding correct, that |
Unfortunately the crypto landscape is quite complicated... And there seems to be a discrepancy between the descriptions of
No, If you look at the identification register in So it belongs as part of |
@TamarChristinaArm Thanks for the clarification - I will update the proposal to have PMULL on two 64-bit polynomials under Aes. |
@echesakovMSFT It's been confirmed to me that indeed we expect people to implement |
@TamarChristinaArm Thanks for following up on this! |
Updated the proposal to include I could not think about a better way of mapping |
namespace System.Runtime.Intrinsics.Arm
{
partial class AdvSimd
{
public static Vector128<sbyte> PolynomialMultiplyWideningLower(Vector64<sbyte> left, Vector64<sbyte> right);
public static Vector128<byte> PolynomialMultiplyWideningLower(Vector64<byte> left, Vector64<byte> right);
public static Vector128<sbyte> PolynomialMultiplyWideningUpper(Vector128<sbyte> left, Vector128<sbyte> right);
public static Vector128<byte> PolynomialMultiplyWideningUpper(Vector128<byte> left, Vector128<byte> right);
}
partial class Aes
{
public static Vector128<long> PolynomialMultiplyWideningLower(Vector64<long> left, Vector64<long> right);
public static Vector128<ulong> PolynomialMultiplyWideningLower(Vector64<ulong> left, Vector64<ulong> right);
public static Vector128<long> PolynomialMultiplyWideningUpper(Vector128<long> left, Vector128<long> right);
public static Vector128<ulong> PolynomialMultiplyWideningUpper(Vector128<ulong> left, Vector128<ulong> right);
}
} |
The following are omitted in #32512
There is also encoding
PMULL Vd.1Q, Vn.1D, Vm.1D
andPMULL2 Vd.1Q, Vn.2D, Vm.2D
whichI 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 text was updated successfully, but these errors were encountered: