> Contributed-by: ard.biesheu...@linaro.org, dong...@huawei.com
> 
> This added an intrinsic for SHA3 using aarch64 v8.2 SHA3 Crypto Extensions.
> Reference implementation for core SHA-3 transform using ARMv8.2 Crypto 
> Extensions:
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/crypto/sha3-ce-core.S?h=v5.4.52
> 
> Trivial adaptation in SHA3. implCompress is needed for the purpose of adding 
> the intrinsic.
> For SHA3, we need to pass one extra parameter "digestLength" to the stub for 
> the calculation of block size.
> "digestLength" is also used in for the EOR loop before keccak to 
> differentiate different SHA3 variants.
> 
> We added jtreg tests for SHA3 and used QEMU system emulator which supports 
> SHA3 instructions to test the functionality.
> Patch passed jtreg tier1-3 tests with QEMU system emulator.
> Also verified with jtreg tier1-3 tests without SHA3 instructions on 
> aarch64-linux-gnu and x86_64-linux-gnu, to make
> sure that there's no regression.
> We used one existing JMH test for performance test: 
> test/micro/org/openjdk/bench/java/security/MessageDigests.java
> We measured the performance benefit with an aarch64 cycle-accurate simulator.
> Patch delivers 20% - 40% performance improvement depending on specific SHA3 
> digest length and size of the message.
> 
> For now, this feature will not be enabled automatically for aarch64. We can 
> auto-enable this when it is fully tested on
> real hardware.  But for the above testing purposes, this is auto-enabled when 
> the corresponding hardware feature is
> detected.

Fei Yang has updated the pull request incrementally with one additional commit 
since the last revision:

  Add sha3 instructions to cpu/aarch64/aarch64-asmtest.py and regenerate the 
test in assembler_aarch64.cpp:asm_check

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/207/files
  - new: https://git.openjdk.java.net/jdk/pull/207/files/3e155193..04bdb42e

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=207&range=03
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=207&range=02-03

  Stats: 474 lines in 2 files changed: 61 ins; 9 del; 404 mod
  Patch: https://git.openjdk.java.net/jdk/pull/207.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/207/head:pull/207

PR: https://git.openjdk.java.net/jdk/pull/207

Reply via email to