Curve25519 polynomial arithmetic is performed with intrinsincs implemented in 
GPR related instructions for multiplication operations (method mult()).  
Benchmark improvements include:

- X25519 encapsulation: +17%
- X25519 decapsulation: +17%
- X25519-MLKEM encapsulation: +12%
- X25519-MLKEM decapsulation: +9%
- X22518 key agreement: +16%
- X25519 key-pair generation: +16%
- X25519-MLKEM key-pair generation: +10%
- EdDSA key-pair generation: +19%
- EdDSA signing: +17%

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

-------------

Commit messages:
 - Use separate intrinsics flag: UseIntPoly25519Intrinsics
 - Remove AVX-512 related code
 - 8371305: X25519 should utilize intrinsics
 - Fix variable names and eliminate unneeded variables
 - Remove unnecessary left and right shift for unsigned to signed conversion
 - Ferenc comments: use separate registers for B
 - Account for when both limbs are negative and correct the carry-add reduction
 - Fix multiple mask issues
 - Optimize normalization with mask subtraction technique
 - Optimize return value with moves of 1 + 4 quad words
 - ... and 25 more: https://git.openjdk.org/jdk/compare/78580f1e...87a210b1

Changes: https://git.openjdk.org/jdk/pull/31087/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=31087&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8371305
  Stats: 261 lines in 17 files changed: 252 ins; 0 del; 9 mod
  Patch: https://git.openjdk.org/jdk/pull/31087.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/31087/head:pull/31087

PR: https://git.openjdk.org/jdk/pull/31087

Reply via email to