RFR: 8288047: Accelerate Poly1305 on x86_64 using AVX512 instructions [v16]

Volodymyr Paprotski duke at openjdk.org
Tue Nov 15 19:43:17 UTC 2022


On Tue, 15 Nov 2022 00:16:19 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:

>> Volodymyr Paprotski has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 23 commits:
>> 
>>  - Merge remote-tracking branch 'origin/master' into avx512-poly
>>  - Vladimir's review
>>  - live review with Sandhya
>>  - jcheck
>>  - Sandhya's review
>>  - fix windows and 32b linux builds
>>  - add getLimbs to interface and reviews
>>  - fix 32-bit build
>>  - make UsePolyIntrinsics option diagnostic
>>  - Merge remote-tracking branch 'origin/master' into avx512-poly
>>  - ... and 13 more: https://git.openjdk.org/jdk/compare/e269dc03...a26ac7db
>
> src/hotspot/cpu/x86/stubGenerator_x86_64_poly.cpp line 103:
> 
>> 101: 
>> 102: ATTRIBUTE_ALIGNED(64) uint64_t POLY1305_MASK44[] = {
>> 103:   // OFFSET 64: mask_44
> 
> Redundant comment.

done

> src/hotspot/cpu/x86/stubGenerator_x86_64_poly.cpp line 987:
> 
>> 985: 
>> 986:   // Load R into r1:r0
>> 987:   poly1305_limbs(R, r0, r1, r1, true);
> 
> What's the intention here when you pass `r1` twice? Just load `R[0]` and `R[2]`. You could use `noreg` to mark an optional operation and check for it in `poly1305_limbs` before loading the corresponding element.

ah, I was wondering how to make an 'optional reg' when parameter is not a pointer. `noreg` is exactly what I needed, thanks.

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

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



More information about the security-dev mailing list