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

Fei Gao fgao at openjdk.org
Wed Oct 16 10:33:14 UTC 2024


On Tue, 15 Oct 2024 12:16:28 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:
> 
>   Update make/autoconf/flags-cflags.m4
>   
>   Co-authored-by: Magnus Ihse Bursie <mag at icus.se>

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

> 8216: 
> 8217:         snprintf(ebuf, sizeof(ebuf), "%sdx_%ssve", VectorSupport::mathname[op], ulf);
> 8218:         StubRoutines::_vector_d_math[VectorSupport::VEC_SIZE_SCALABLE][op] = (address)os::dll_lookup(libsleef, ebuf);

May I ask why `aarch64` doesn't have C file including macro expansion of function names while `RISC-V` needs it, see added in https://github.com/openjdk/jdk/pull/21083/files#diff-65f5198005719e644115782e7f4dd5a17c0969b01cbb50a1224b6800bbf8f177? Thanks.

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

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


More information about the build-dev mailing list