-
Notifications
You must be signed in to change notification settings - Fork 6.1k
8251216: Implement MD5 intrinsics on AArch64 #6628
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
Conversation
👋 Welcome back phedlin! A progress list of the required criteria for merging this PR into |
@phedlin Unknown command |
@phedlin The following label will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command. |
@phedlin Syntax:
|
/contributor add @luhenry |
@phedlin |
@phedlin |
/label add hotspot-compiler |
@phedlin |
@phedlin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MD5 has been proven insecure, and its weaknesses have been exploited in the field. It is disabled in many systems. I am surprised that we are thinking of accelerating it for possible future use, and that we're adding a worse-then-useless crypto algorithm to the AArch64 startup.
Fair point. But does that also rule out all uses, while still being supported. Not all hashes have to be exposed and on the upside, it's rather fast on any hardware (well, it's also one of its down sides). Who should make the choice to use it or not? |
I wholeheartedly agree with your take. Unfortunately, it's still used on many systems, like for verifying the integrity of downloads (Azure Blob Storage for example). |
While I think it's good that distributions are free to omit MD5 now, there's still various non-cryptographic uses that warrant continued support and enhancements. Checksumming, JDK APIs such as For startup it remains a sore point that stubs like these are generated eagerly on bootstrap. I hope we'll be able to make this lazy in the near future (JDK-8231349) to make adding intrinsics come with fewer trade-offs. This particular stub is very simple and likely adds unnoticably to bootstrap, but in accumulation it's grown to be a bit of a concern in places, especially on x86 with large AVX-512 intrinsics. I'm not sure if there's been any progress on this recently, though. @vnkozlov? (I'm not qualified to review Aarch64 code, but this contribution looks ok to me.) |
Ha! 😊 |
@phedlin This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 50 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!
Going to push as commit 088b244.
Your commit was automatically rebased without conflicts. |
@phedlin Pushed as commit 088b244. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Implementation of MD5 intrinsic support for AArch64.
Contributed by Ludovic Henry (@luhenry).
Speedup measured (in Aurora running Ampere Altra) as follows:
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:1048576-provider:...29.39%
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:2047-provider:.........28.91%
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:2048-provider:.........28.81%
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:1023-provider:.........28.43%
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:1024-provider:.........28.32%
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:511-provider:...........27.78%
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:512-provider:...........27.62%
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:255-provider:...........26.52%
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:256-provider:...........26.38%
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:127-provider:...........25.41%
openjdk.bench.javax.crypto.full.MessageDigestBench.digest-algorithm:MD5-dataSize:128-provider:...........24.66%
Testing tier1-7.
Progress
Issue
Reviewers
Contributors
<luhenry@openjdk.org>
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/6628/head:pull/6628
$ git checkout pull/6628
Update a local copy of the PR:
$ git checkout pull/6628
$ git pull https://git.openjdk.java.net/jdk pull/6628/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 6628
View PR using the GUI difftool:
$ git pr show -t 6628
Using diff file
Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/6628.diff