RFR: 8353786: Migrate Vector API math library support to FFM API
Vladimir Ivanov
vlivanov at openjdk.org
Sat Apr 5 02:42:38 UTC 2025
Migrate Vector API math library (SVML and SLEEF) linkage from native code (in JVM) to Java FFM API.
Since FFM API doesn't support vector calling conventions yet, migration affects only symbol lookup for now. But it still enables significant simplifications on JVM side.
The patch consists of the following parts:
* on-demand symbol lookup in Java code replaces eager lookup from native code during JVM startup;
* 2 new VM intrinsics for vector calls (support unary and binary shapes) (code separated from unary/binary vector operations);
* new internal interface to query supported CPU ISA extensions (`jdk.incubator.vector.CPUFeatures`) used for CPU dispatching.
`java.lang.foreign` API is used to perform symbol lookup in vector math library, then the address is cached and fed into corresponding JVM intrinsic, so C2 can turn it into a direct vector call in generated code.
Once `java.lang.foreign` supports vectors & vector calling conventions, VM intrinsics can go away.
Performance is on par with original implementation (tested with microbenchmarks on linux-x64 and macosx-aarch64).
Testing: hs-tier1 - hs-tier6, microbenchmarks (on linux-x64 and macosx-aarch64)
Thanks!
-------------
Commit messages:
- Misc fixes and cleanups
- CPU features support
- Cleanup
- TODO list
- SVML fixes
- Update templates
- fixes
- SLEEF improvements
- cleanup
- VectorMathLib: Migrate to lambdas
- ... and 3 more: https://git.openjdk.org/jdk/compare/9fcb06f9...fc27aee5
Changes: https://git.openjdk.org/jdk/pull/24462/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24462&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8353786
Stats: 1274 lines in 43 files changed: 825 ins; 393 del; 56 mod
Patch: https://git.openjdk.org/jdk/pull/24462.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/24462/head:pull/24462
PR: https://git.openjdk.org/jdk/pull/24462
More information about the core-libs-dev
mailing list