Use VAES
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 13.6k
- Forks
- 2.6k
- PR merge metrics
- No merged PRs in 30d
Description
According to https://en.wikipedia.org/wiki/AVX-512#VAES "introduced with Ice Lake" are EVEX-encoded forms of AES-NI and "The wider than 128-bit variations of the instruction perform the same operation on each 128-bit portion of input registers." We could use them where parallelism permits (or bring parallelism down from higher levels by increasing "keys per crypt" accordingly).
We currently do use instructions that look vaes* in (dis)assembly, but those are VEX-encoded 128-bit (supported along with the original AVX, so on older CPUs too), not EVEX and not wider (supported only on recent CPUs on top of AVX-512).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the existing VEX-encoded vaes* uses in the code or generated disassembly and identify where parallelism permits wider EVEX-encoded VAES instructions. Done means the applicable paths use VAES on supported recent CPUs without changing correctness, with relevant performance compared against the existing implementation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- cryptography, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100