On Wed, 23 Apr 2025 01:02:19 GMT, Vladimir Ivanov <vliva...@openjdk.org> wrote:
>> 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! > > Vladimir Ivanov has updated the pull request incrementally with one > additional commit since the last revision: > > Avoid thread state transition in VectorSupport_GetCPUFeatures Found another possible issue on riscv. src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorMathLibrary.java line 288: > 286: IntFunction<VectorSupport.UnaryOperation<V,?>> > implSupplier, > 287: V v) { > 288: var entry = lookup(op, opc, vspecies, implSupplier); Seems there is another issue for riscv here. If the rvv extension is not supported on the running machine, it will still generate the code using rvv, this should lead to a crash at runtime? ------------- PR Review: https://git.openjdk.org/jdk/pull/24462#pullrequestreview-2786445269 PR Review Comment: https://git.openjdk.org/jdk/pull/24462#discussion_r2055551021