Skip to content
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

crypto: drop pre-AVX2 amd64 assembly #69587

Open
FiloSottile opened this issue Sep 23, 2024 · 0 comments
Open

crypto: drop pre-AVX2 amd64 assembly #69587

FiloSottile opened this issue Sep 23, 2024 · 0 comments
Assignees
Labels
NeedsDecision Feedback is required from experts, contributors, and/or the community before a change can be made.
Milestone

Comments

@FiloSottile
Copy link
Contributor

AVX2 was introduced in 2013 by the Haswell architecture, and was supported by all server models and most desktop models. The previous architectures, Ivy Bridge and Sandy Bridge, were discontinued in 2015.

We carry at least four assembly optimized implementations specifically for pre-AVX2 amd64: crypto/sha1, crypto/sha256, crypto/512, and x/crypto/chacha20poly1305. (In other words, we have both AVX2 and pre-AVX2 assembly for each of those.) I don't think at this point they are worth their maintenance cost. Performance sensitive workloads are almost certainly running on post-2015 processors.

I think we should drop those assembly implementations and replace them with the generic Go ones. To be clear, we'll still support pre-AVX2 machines, they will just be less optimized.

/cc @golang/security @cpu

@FiloSottile FiloSottile added the NeedsDecision Feedback is required from experts, contributors, and/or the community before a change can be made. label Sep 23, 2024
@FiloSottile FiloSottile added this to the Go1.24 milestone Sep 23, 2024
@FiloSottile FiloSottile self-assigned this Sep 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NeedsDecision Feedback is required from experts, contributors, and/or the community before a change can be made.
Projects
None yet
Development

No branches or pull requests

1 participant