-
Notifications
You must be signed in to change notification settings - Fork 5
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 support #20
Comments
I have a WIP branch doing the conversion, but tests are failing at the moment. Part of what makes this more difficult than it should be is that while both Arm(64) and x86(_64) have their own acceleration instructions for AES, those instructions do different things. (Arm breaks them into smaller and more flexible pieces than x86 does and omits the keygen facilities completely.) Trying to rebuild the x86 versions from the Arm versions has indeed been done in projects like SIMD-Everywhere and SSE2NEON, but consulting those hasn't helped me make things work; the algorithms in this package rely on some pretty specific aspects of the x86 implementation it seems. The original C++ version of Random123 also doesn't support Arm intrinsics, so we'd be the first to try this. |
If you want to play around it with, the LLVM intrinsics for 64-bit Arm AES acceleration are EDIT: Or QEMU! |
Thank you so much! The suggestions look really helpful and I will also look into them. |
Currently the implementation of AES-NI and ARM completely depends on the AES-NI instruction sets (
llvm.x86.aesni.*
) provided by Intel processors. As Apple Silicon becomes very popular, it would be very nice if ARM64 platforms can also be supported.The text was updated successfully, but these errors were encountered: