RFR: 8312425: [vectorapi] AArch64: Optimize vector math operations with SLEEF [v3]

Fei Gao fgao at openjdk.org
Mon Oct 21 10:10:14 UTC 2024


On Wed, 16 Oct 2024 14:00:37 GMT, Hamlin Li <mli at openjdk.org> wrote:

>> Hi,
>> Can you help to review the patch? Previously it's https://github.com/openjdk/jdk/pull/18605.
>> This pr is based on https://github.com/openjdk/jdk/pull/20781.
>> 
>> Thanks!
>> 
>> ## Test
>> ### tests:
>> * test/jdk/jdk/incubator/vector/
>> * test/hotspot/jtreg/compiler/vectorapi/
>> 
>> ### options:
>> * -XX:UseSVE=1 -XX:+EnableVectorSupport -XX:+UseVectorStubs
>> * -XX:UseSVE=0 -XX:+EnableVectorSupport -XX:+UseVectorStubs
>> * -XX:+EnableVectorSupport -XX:-UseVectorStubs
>> 
>> ## Performance
>> 
>> ### Tests
>> jmh tests are test/micro/org/openjdk/bench/jdk/incubator/vector/operation/ from vectorIntrinsics branch in panama-vector. It's good to have these tests in jdk main stream, I will do it in a separate pr later. (These tests are auto-generated tests from some script&template, it's good to also have those scrip&template in jdk main stream, but those scrip&template generates more other tests than what we need here, so better to add these tests and script&template in another pr).
>> 
>> ### Options
>> * +intrinsic: 'FORK=1;ITER=10;WARMUP_ITER=10;JAVA_OPTIONS=-XX:+UnlockExperimentalVMOptions -XX:+EnableVectorSupport -XX:+UseVectorStubs'
>> * -intrinsic: 'FORK=1;ITER=10;WARMUP_ITER=10;JAVA_OPTIONS=-XX:+UnlockExperimentalVMOptions -XX:+EnableVectorSupport -XX:-UseVectorStubs'
>> 
>> ### Performance data
>> I have re-tested, there is no much difference from https://github.com/openjdk/jdk/pull/18605, so please check performance data in that pr.
>
> Hamlin Li has updated the pull request incrementally with one additional commit since the last revision:
> 
>   add missing files

src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp line 8207:

> 8205:       for (int op = 0; op < VectorSupport::NUM_VECTOR_OP_MATH; op++) {
> 8206:         int vop = VectorSupport::VECTOR_OP_MATH_START + op;
> 8207:         if (vop == VectorSupport::VECTOR_OP_TANH) {

Could you please add a comment that mentions the reason, for example
`// Skip "tanh" because there is performance regression`

src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp line 8225:

> 8223:     for (int op = 0; op < VectorSupport::NUM_VECTOR_OP_MATH; op++) {
> 8224:       int vop = VectorSupport::VECTOR_OP_MATH_START + op;
> 8225:       if (vop == VectorSupport::VECTOR_OP_TANH) {

Ditto

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21502#discussion_r1808455401
PR Review Comment: https://git.openjdk.org/jdk/pull/21502#discussion_r1808470048


More information about the build-dev mailing list