[riscv-port] RFR: 8279292: riscv: Intrinsify multiplyToLen and squareToLen [v4]
Fei Yang
fyang at openjdk.java.net
Tue Dec 28 01:35:45 UTC 2021
On Mon, 27 Dec 2021 12:49:13 GMT, Feilong Jiang <fjiang at openjdk.org> wrote:
>> BigInteger intrinsic: MultiplyToLen and SquareToLen intrinsic are missed in current vm. They should be implemented.
>> The JMH tests show that the MultiplyToLen intrinsic improve the performance by up to 2x ~ 3x and the SquareToLen intrinsic improve the performance by up to 1.8x ~ 2x when the length of BigInteger changed from 1 to 5000, compared with that of C2.
>>
>> Full jtreg tests on qemu and hotspot/jdk tier1 test on Unmathced are passed without new failures.
>>
>> JMH tests and results on D1 and Unmatched list as follows:
>> [MyBenchmark.txt](https://github.com/openjdk/riscv-port/files/7779255/MyBenchmark.txt)
>>
>> [squareToLen_unmatched.txt](https://github.com/openjdk/riscv-port/files/7779247/squareToLen_unmatched.txt)
>> [squareToLen_d1.txt](https://github.com/openjdk/riscv-port/files/7779248/squareToLen_d1.txt)
>> [multiplyToLen_unmatched.txt](https://github.com/openjdk/riscv-port/files/7779249/multiplyToLen_unmatched.txt)
>> [multiplyToLen_d1.txt](https://github.com/openjdk/riscv-port/files/7779250/multiplyToLen_d1.txt)
>
> Feilong Jiang has updated the pull request incrementally with one additional commit since the last revision:
>
> recover deleted comment
Changes requested by fyang (Lead).
src/hotspot/cpu/riscv/macroAssembler_riscv.cpp line 3424:
> 3422: const Register jdx = tmp1;
> 3423:
> 3424: // Check if x and y are both 8-byte aligned.
I think the code logic for avoiding unaligned access should be under control of option AvoidUnalignedAccesses.
-------------
PR: https://git.openjdk.java.net/riscv-port/pull/38
More information about the riscv-port-dev
mailing list