[lworld+vector] RFR: 8311675: [lworld+vector] Max Species support.

Xiaohong Gong xgong at openjdk.org
Sun Oct 8 02:04:29 UTC 2023


On Thu, 28 Sep 2023 18:02:04 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:

> - Patch adds MaxSpecies support for all types of vectors.
> - New factory methods and VectorPayload classes for various kinds of vector, shuffle and mask payloads.
> - Disable CDS archiving of VectorPayload classes.
> - Summary of high level flow :-
>   1/ Max species payloads encapsulate @multifield annotated field accepting -1 value as bundle size parameter.
>   2/ For Vector payload bundle size is determined using maximum vector size supported by the target. 
>   3/ For Shuffles and Masks payloads multifield bundle size is a function of maximum vector size and vector lane size.
>   4/ Based on the dynamic bundle size parser creates a separate FieldInfo structure for each base and synthetic multifield and rest of the flow remains the same. 
> 
> Kindly review and share your feedback.
> 
> Best Regards,
> Jatin

I met a new JVM crash issues on ARM Neon platform with this PR. Log is:

test IntMaxVectorLoadStoreTests.loadArrayMaskIOOBE(int[i * 5], l + speciesl + 1, mask[false]): success
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (valhalla/src/hotspot/share/opto/type.cpp:4177), pid=1739617, tid=1739655
#  assert(!flat_array || can_be_inline_type()) failed: Only inline types can be flat in array
#
# JRE version: OpenJDK Runtime Environment (22.0) (fastdebug build 22-internal-git-b575ef0fa)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 22-internal-git-b575ef0fa, mixed mode, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# V  [libjvm.so+0x18697d0]  TypeInstPtr::TypeInstPtr(TypePtr::PTR, ciKlass*, TypePtr::InterfaceSet const&, bool, ciObject*, Type::Offset, bool, int, TypePtr const*, int)+0x15c


And a regression in `DoubleMaxVectorTests` such as:

test DoubleMaxVectorTests.IS_FINITEMaskedDoubleMaxVectorTests(double[cornerCaseValue(i)], mask[i % 2]): failure
java.lang.AssertionError: expected [true] but found [false]
        at org.testng.Assert.fail(Assert.java:99)
        at org.testng.Assert.failNotEquals(Assert.java:1037)
        at org.testng.Assert.assertEqualsImpl(Assert.java:140)
        at org.testng.Assert.assertEquals(Assert.java:122)
        at org.testng.Assert.assertEquals(Assert.java:819)
        at org.testng.Assert.assertEquals(Assert.java:829)
        at DoubleMaxVectorTests.IS_FINITEMaskedDoubleMaxVectorTests(DoubleMaxVectorTests.java:2716)
        ...

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

PR Comment: https://git.openjdk.org/valhalla/pull/931#issuecomment-1751891648



More information about the valhalla-dev mailing list